java static 静态变量

视频链接

静态变量:https://www.bilibili.com/video/BV17F411T7Ao?p=121
静态方法和工具类:https://www.bilibili.com/video/BV17F411T7Ao?p=122
static的注意事项:https://www.bilibili.com/video/BV17F411T7Ao?p=123

java static

static 基础

jdk8之前静态变量存放在方法区,之后被优化到堆内存中,当调用静态变量时,会在堆中创建静态存储区存放所有静态变量(与new关键字是不同的),即:静态变量是随着类的加载而加载,优先于对象出现。

public class Student() {
    private String stuName;
    //静态区是独一份的,新创建的对象需要再去查找
    public static String teacherName;
}
public class StudentTest() {
    public static void main(String[] args) {
	// 所有的Student对象的teacherName都会被赋相同值
        Student.teacherName ="teacher static";
        Student s1 = new Student;
	...
    }
}

static修饰方法的应用场景

static修饰的常不是Javabean类也不是测试类,而是工具类。

工具类

私有化构造对象是为不让创建对象,因为工具类不是描述一类事物的,创建对象没有意义。

工具类实例

package year23month01day17.demo94proj;

public class ArrayUtil {
    // 私有化构造方法不让外界创建工具类的对象
    private ArrayUtil() {
    }

    // 定义静态方法(不要私有化):遍历返回整数数组的内容
    public static String printArr(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");

        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i]);
            } else {
                sb.append(arr[i]).append(", ");
            }
        }

        sb.append("]");

        return sb.toString();
    }

}
package year23month01day17.demo94proj;

public class TestDemo {
    public static void main(String[] args) {
        int[] arr = { 1, 2, 3, 4, 5 };
        String str = ArrayUtil.printArr(arr);

        System.out.println(str);
    }
}

java static应用注意事项

静态方法中没有this关键字。不能访问诸如自定义的变量或方法。

posted @ 2023-01-17 09:29  小澳子  阅读(518)  评论(0编辑  收藏  举报