目录
static
- 叫静态,可可以修饰成员变量、成员方法。
成员变量按照有无static修饰,分为两种:
- 类变量
- 实例变量(对象的变量)
static修饰成员变量
- 类变量:有static修饰,属于类,在计算机里只有一份,会被类的全部对象共享。
- 实例变量(对象的变量):无static修饰,属于每个对象的。
类变量的用法:
- 类名.类变量(推荐)
- 对象.类变量(不推荐)
实例变量的用法:
- 对象.实例变量
例如:
public class Student{
//类变量
static String name;
//示例变量
int age;
}
public class Test{
public static void main(String[] args){
//1.类变量用法
Student.name = "张三"; //第一种
Student s1 = new Student();
s1.name = "张三";//第二种,语法上支持,但不推荐
//此时再创建一个对象
Student s2 = new Student();
s2.name = "李四"; //再为其name赋值
//输出s1
System.out.println(s1.name);
//输出值为:李四
//因为name是类变量,被所有对象共享,所以s2修改了name的值
//2.实例变量用法
//实例变量是属于每个对象的,各自都有各自的数据
s1.age = 23;
s2.age = 18;
System.out.println(s1.age); //输出为23
System.out.println(s2.age); //输出为18
}
}
类变量的应用场景
- 在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来记住。
例如:系统启动后,要求用户类可以记住自己创建了多少个用户对象了。
public class User{
//类变量
public static int number;
//构造器
public User(){
User.number++; //这样每创建一个用户对象、调用一次构造器,就会给number++,记录用户对象的个数
//也可以简写为:
//number++; 注意:在同一个类中,访问自己类的类变量,才可以省略类名
}
}
static修饰成员方法
成员方法的分类:
- 类方法(静态方法):static修饰的成员方法,属于类。
public static void printHelloWorld(){
System.out.println("Hello World !");
System.out.println("Hello World !");
}
一般也是用 类名.类方法 的方式来调用类方法的。 (对象名.类方法 不推荐)
- 实例方法(对象的方法):无static修饰的成员方法,属于对象。
public void printPass(){
...
}
用 对象.实例方法 进行调用。
static修饰成员方法的应用场景
- 类方法最常见的应用场景是做工具类。
工具类中的方法都是一些类方法,每个方法都是用来完成一个功能的,工具类是给开发人员共同使用的。
使用类方法来设计工具类的好处:
- 提高代码复用
- 调用方便,提高了开发效率
为什么工具类中的方法要用类方法,而不用实例方法?
- 实例方法需要创建对象来调用,此时对象只是为了调用方法,对象占内存,这样会浪费内存。
- 类方法,直接用类名调用即可,调用方便,也能节省内存。
因为工具类没有创建对象的需求,建议将工具类的构造器进行私有。
例如:
public class MyUtil{
private MyUtil(){
}
public static String createCode(int n){
...
}
}
这样它就无法被用来创建对象了,算是一个合格的工具类!
END
学习自:黑马程序员——JavaSE课程