Java基础--构造方法、静态变量及方法、编写工具类

一.构造方法

当你这个类中没有提供无参的构造方法时,系统在你创建对象时,也会调用无参构造。

如果你只提供了有参的构造方法,那么系统将不再提供无参的构造方法。

建议:写类的时候,无参有参都构造方法都写上

二.实例

public class Demo01 {
	public static void main(String[] args) {
		Car car =  new Car();
		//修改成员变量值的方式
		car.setName("aodi");
		car.setColor("red");
		car.sayHi();
	}
}
class Car{
	private String name;
	private String color;
        //无参构造方法
        public Car() {
		
	}
	
	//有参构造方法
	public Car(String name,String color){
		this.name = name;
		this.color = color;
	}
	public void sayHi() {
		System.out.println(this.name + " " + this.color);
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
}

三.静态变量

静态变量(相当于一个共享的变量 每个对象都能访问到),也可以叫类变量。

使用关键词 static

1.静态变量如何调用

(1)可以使用对象直接调用(不建议)

(2)使用类名直接调用(建议)

原因:有静态变量时,对象还没有创建,直接使用类名调用更准确。

2.静态变量与成员变量的区别

  1.所属不同
  静态变量 属于类的,也叫类变量
  成员变量 属于对象的,也叫对象变量
  2.在内存中所处位置不同
  静态变量 方法区的静态区
  成员变量 堆区中
  3.在内存中的加载时机不同(生命周期)
  静态变量 随着类的加载而加载,随着类的销毁而销毁(程序结束销毁)
  成员变量 随着对象的创建而创建,随着对象的销毁而销毁
  4.调用方式不同
  静态变量 对象名和类名(推荐)

  成员变量 对象名

3.对象加载到内存中的步骤以及实例

1.加载有main方法 类的class文件到 方法区中

2.main方法 入栈(需要创建AVGirl对象)

3.先把AVGirl.class加载到方法区中

4.在堆内存中 开辟空间 创建AVGirl 的对象

5.赋值方法入栈出栈

6.执行完毕,出栈

7.程序结束

public class Demo03 {
	public static void main(String[] args) {
	AVGirl girl1 = new AVGirl();
	girl1.name = "苍老师";
	AVGirl.country = "日本";
	girl1.sayHi();
	
	AVGirl girl2 = new AVGirl();
	girl2.name = "大老师";
	AVGirl.country = "日本";
	girl2.sayHi();
	}
}
class AVGirl{
	 String name;
	 static String country;
	 public void sayHi() {
		System.out.println(name + " " + country);
	}
}

四.静态方法与成员方法的区别

静态方法只能调用静态变量,成员方法两种变量都能调用。

原因:静态方法加载时,还没有生成对象。

public class Demo04 {
	
}

class Test{
	static int number1 = 10;
	static int number2 = 20;
	/*
	 * 成员方法 即可以使用成员变量也可以使用静态变量
	 */
	public void fun1() {
		System.out.println(number1);
		System.out.println(number2);
	}
	
	public  static void fun2() {
		System.out.println(number1);
		System.out.println(number2);
	}
}

五.编写工具类

1.一般所有方法都使用静态 ,方便调用

2.构造方法私有化

/**
	 * 获取数组最大值
	 * @param array 数组
	 * @return      数组最大值
	 */
	public static int getMax(int[] array) {
		int max = array[0];
		for (int i = 0; i < array.length; i++) {
			if (max<array[i]) {
				max = array[i];
			}
		}
		return max;
	}
/**
	 * 打印数组
	 * @param array
	 */
	public static void printArray(int[] array) {
		for (int i = 0; i < array.length; i++) {
			System.out.println(array[i]);
		}
	}
/**
	 * 数组反转
	 * @param array
	 */
	public  static void changeArray(int[] array) {
		//
		int num = array.length/2;
		for (int i = 0; i < num; i++) {
			int temp = array[i];
			array[i] = array[array.length-1-i];
			array[array.length-1-i] = temp;
		}
	}
/**
	 * 选择排序
	 * @param array
	 */
	public  static void chooseSort(int[] array) {
		for (int i = 0; i < array.length-1; i++) {
			for (int j = 1+i; j < array.length; j++) {
				if (array[i]>array[j]) {
					int temp = array[i];
					array[i] = array[j];
					array[j] = temp;
				}
			}
		}
	}

public class ArrayToolTest {
	public static void main(String[] args) {
		
	int[] array = {1,2,3,4,5};
	ArrayTool.changeArray(array);
	ArrayTool.printArray(array);
	}
}




 
 



猜你喜欢

转载自blog.csdn.net/hehanhh/article/details/80258102
今日推荐