Java——面向对象编程高级级部分——第一部分
类变量(静态变量static)
示例:
类变量可以通过对象名访问也可以通过类名来访问
内存布局
static变量是被同一个类的所有对象共享,不影响对多态的使用
static类变量是在类加载的时候就生成了
JDK8之前,静态变量存放在方法区的静态域,JDK8之后,类加载时在堆里生成一个对应的class对象,静态变量存放在此处的class对象实例的尾部
基本介绍
类变量也叫静态变量或静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类,同样任何一个该类的对象去修改它时,修改的也是同一个变量
访问修饰符 static 数据类型 变量名
static 访问修饰符 数据类型 变量名
访问类变量的方法:
1.类名.类变量名//不创建类对象实例也可以访问
2.对象名.类变量名
类变量的访问必须遵守相关的访问权限
使用细节
1.使用时机:当需要让某个类的多有对象都共享一个变量时,就可以考虑使用类变量
2.类变量和实例变量的区别:类变量是该类的所有对象共享的,而实例变量是每个对象独享的
3.有static称为类变量/静态变量,没有static称为实例变量/普通变量/非静态变量/非静态成员变量
4.实例变量(非静态字段) 不能通过类名.变量名的方式访问
5.类变量在类加载时就初始化了,也就是说,即使没有创建对象。只要类加载了,就可以使用类变量了
6.类变量的生命周期是随着类的加载开始,随着类消亡而销毁
类方法
基本介绍
类方法也叫静态方法
访问修饰符 static 数据返回类型 方法名(){
}
static 访问修饰符 数据返回类型 方法名(){
}
类方法的调用:
1.类名.类方法名
2.对象名.类方法名
当方法使用了static修饰后,该方法就是静态方法,静态方法可以访问静态属性/变量
类名也可以调用静态方法
经典使用场景
当方法中不涉及到任何和对象相关的成员,则可以将方法设计成静态方法,提高开发效率
如果希望不创建实例,也可以带哦用某个方法(即当作工具来使用),此时,把方法做成静态方法非常便捷
将通用方法设计成静态方法,这样不需要创建对象就可以使用该方法(用于开发自己的工具类,方便调用)
使用细节
1.类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区:类方法中无this的参数,普通方法隐含着this的参数
2.类方法可以通过类名调用,也可以通过对象名调用
3.普通方法和对象有关,需要通过对象名调用,不能通过类名调用
4.类方法不允许使用和对象有关的关键字,比如this和super,普通方法(成员方法)可以
5.类方法只能访问静态变量或静态方法
6.普通成员方法,既可以访问普通成员,也可以访问静态成员
总结:非静态方法可以访问所有的成员(静态成员和非静态成员),静态方法只能访问静态成员,同时必须遵循访问权限
main方法
语法说明
public static void main(String[] args){
}
1.main方法是虚拟机调用
2.Java虚拟机需要调用类的main方法,所以该方法的访问权限必须是public
3.Java虚拟机在执行main()方法是不必创建对象,所以该方法的访问权限必须是static
4.该方法接收String类型的数组参数,该数组保存执行Java命令时传递给所允许的类的参数
5.java 执行的程序 参数1 参数2 参数3