一、构造方法的注意事项
当类中没有提供无参的构造方法的时候,系统在你创建对象的时候也会调用无参构造方法。
这个无参方法系统会帮你提供一个。
如果类中只提供了有参构造方法,那么系统将不再提供无参构造方法。
二、静态变量
静态变量相当于一个共享的变量,每个对象都能访问到。
静态变量存储在内存方法区的静态区中,对象在加载到内存中时,内存情况如下图
步骤如下:
1.加载有main方法的类的class文件到方法区中
2.main方法 入栈(需要创建Girl对象)
3.先把Girl.class加载到方法区中
4.在堆内存中开辟空间创建Girl的对象
5.赋值方法入栈 出栈
6.main方法执行完毕 出栈
7.程序结束
静态变量的好处:节约内存。
静态变量和成员变量的区别:
1.所属不同
静态变量:属于类,也称类变量
成员变量:属于对象,也称实例变量(对象变量)
2.在内存中所处的位置不同
静态变量:存储于方法区的静态区中
成员变量:存储于堆内存的对象中
3.在内存中得加载时机不同(生命周期)
静态变量:随着类的加载而加载,随着类的销毁而销毁(类在程序结束后销毁)
成员变量:随着对象的加载而加载,随着对象的销毁而销毁
4.调用方式不同
静态变量:可以使用对象调用,也可以使用类名直接调用
成员变量:只能使用对象调用
静态变量的声明:
static String country;静态变量的调用:
1.可以使用对象 直接调用(不建议)
2.可以使用类名直接调用(建议)
静态方法:
随着类的加载而加载(跟静态变量一样)
静态方法的执行与成员方法一样,在栈内存中出栈入栈。
静态方法中不能使用成员变量、调用成员方法,因为静态方法加载时,对象还未创建。
三、工具类的创建
编写工具类
1.一般所有方法都使用静态的 方便调用
2.构造方法 私有化
简单的工具类编写:
/** * 数组的工具类 * 获取数组最大值 * 打印数组 * 数组反转 * 选择排序 * @author gpc * @version 1.0.0 */ public class ArrayTool { /** * 构造方法私有化 */ private ArrayTool() { } /** * 获取数组的最大值 * @param array 数组 * @return 数组最大值 */ public static int getMax(int[] array) { int max = array[0]; for (int i = 1; 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 reverseArray(int[] array) { for (int i = 0; i < array.length/2; i++) { int temp = array[i]; array[i] = array[array.length-1-i]; array[array.length-1-i] = temp; } } /** * 选择排序 * @param array 数组 */ public static void selectionSort(int[] array) { for (int i = 0; i < array.length-1; i++) { for (int j = i+1; j < array.length; j++) { if(array[i]>array[j]) { int temp = array[i]; array[i] = array[j]; array[j] = temp; } } } } }
将工具类编译成文档的命令:
javadoc -d (文件夹名) -version -author (文件名.java)