Java学习笔记 ———— 1.类与实例static语法

104 阅读2分钟

1.类变量与实例变量

public class Student {
    //类变量
    public static String name;
    //实例变量(对象的变量)
    public int age;
}
  • 类变量: 属于类 内存中只有一份 被类和所有类对象共享,这里指的是Student类

Student s1 = new Student();
System.out.println(Student.name); //由类访问
System.out.println(s1.name); //由类对象访问
不会产生报错
  • 实例变量:属于对象 每个对象 只能由对象访问

Student s1 = new Student();
System.out.println(Student.age); //由类访问
System.out.println(s1.age); //由类对象访问
System.out.println(Student.age); //由类访问
会产生报错 原因是实例变量不能用类方法访问的方式去访问

2.类方法与实例方法

public class A {
    //类方法
    public static void printHelloWorld(){
        System.out.println("Hello World!");
    }
    //实例方法(对象的方法)
    public static void printPass(){
        System.out.println("Hello World!");
    }
}
  • 类方法: 属于类

A a1 = new A();
System.out.println(A.printHelloWorld); //由类访问
System.out.println(a1.printHelloWorld); //由类对象访问(不推荐使用)
不会产生报错
  • 实例变量:属于对象 只能由对象访问

A s1 = new A();
System.out.println(A.age); //由类访问
System.out.println(a1.age); //由类对象访问
System.out.println(Student.age); //由类访问
会产生报错 原因是实例变量不能用类方法访问的方式去访问

3.使用static的注意事项

1. 类方法中可以直接方法类成员,但不可以直接方法实例成员

public static void printName(){
    Student.name = "张三";
    //System.out.println(age);
}

2.实例方法中即可访问类成员,也可直接访问实例成员

public void printName(){
    Student.name = "张三";
    System.out.println(age);
}

3.实例方法中可以出现this关键字,但类方法中不可以出现this关键字

因为类方法不是属于对象的
报错
public static void printA(){
    //System.out.print(this);
}

4.静态代码块

  • 特点: 类加载时自动执行,由于类只会加载一,所以静态代码块也只会执行一次
  • 注意: 在实例化前就会执行,一般用于初始化变量
public class Student{
    static{
        System.out.println("创建对象");
    }
}
执行代码
public static void main(String args[]){
    Student s1 = new Student();
    Student s2 = new Student();
}
结果:只会打印一次"创建对象"字符串