java基础学习 day38 (static,重新认识main()方法)

1. static

static表示静态,是java中的一个修饰符,可以修饰成员方法,成员变量

  • 被static修饰的成员变量,叫做静态变量

特点:
a. 被该类所有对象共享,一次赋值所有对象均有,且所有对象都可以对它进行更改。
b. 属于类,不属于对象
c. 随着类的加载而加载,优于对象存在

调用方式:
a. 类名调用(推荐)
b. 对象名调用

  • 被static修饰的成员方法,叫做静态方法

特点:
a. 多用在测试类和工具类中
b. javabean类中很少会用

调用方式:
a. 类名调用
b. 对象名调用

2. static内存图
在这里插入图片描述
在这里插入图片描述

静态区:
a. 在JDK8以前,它在方法区里,从JDK8开始,它被放到了堆空间里
b. 存放这个类所有的静态变量,不存静态方法(静态方法跟非静态方法都是暂存在方法区/元空间里,等到执行到这个语句了,再加载进栈)
c. 随着该类的字节码文件加载到方法区之后,静态区就出现了,静态变量也随之出现
d. 通过该类的对象实例,可以找到该类对应的静态区

3. javabean类,测试类,工具类

javabean类:
a. 用来描述一类事物的类,比如:Student,Teacher,Dog,Cat等
b. 先私有化成员变量,再创建空参和带全部参数的构造方法,再对每个私有化的成员变量提供get,set方法,最后对额外的行为写对应的成员方法

测试类:
a. 用来检查其他类是否书写正确,带有main方法的类,是程序的主入口。
b. 如,创建javabean类的对象,并进行赋值调用

工具类:
a. 不是用来描述一类事物,而是帮我们做一些事情的类
b. 类名见名知意
c. 私有化构造方法,不让外界创建对象,因为它的对象没有任何意义
d.方法定义为静态,方便调用

4. static的注意事项

  • 静态方法只能访问静态变量和静态方法
  • 非静态方法可以访问静态变量或者静态方法,也可以访问非静态的成员变量和非静态的成员方法(非静态成员变量也叫实例变量)
  • 静态方法中是没有this关键字
  • 非静态方法的形参中,有一个隐藏的this,类型与方法调用者的类型相同
  • 非静态方法中的非重名的成员变量前,也有一个隐藏的this
  • 非静态方法中调用该类中的非静态方法(静态方法),非静态方法(静态方法)前也有一个隐藏的this,静态方法(变量)有两种调用方式:类名和对象名

a. this表示当前方法调用者的地址值
b. 这个this是由虚拟机自动赋值的,不能手动赋值

5. 重新认识main()方法

public static void main ( String[ ] args ) {

}

  • public:被JVM调用,给到public,其他类也能直接使用这个方法,( main()方法是被虚拟机调用的,访问权限需要足够大)
  • static:被JVM调用,不用创建对象,直接类名访问
    ,因为main方法是静态的,所以测试类中其他方法也需要是静态的。
  • void:被JVM调用,不需要给JVM返回值
  • main:一个通俗的名称,虽然不是关键字,但是被JVM识别
  • String[ ] args:以前用于接收键盘录入数据,现在没用了

猜你喜欢

转载自blog.csdn.net/u011453680/article/details/128879502