Java——static与final

static

static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。

在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。

静态成员变量虽然独立于对象,但是不代表不可以通过对象去访问,所有的静态方法和静态变量都可以通过对象访问(只要访问权限足够)。

Java中切记:static是不允许用来修饰局部变量。

参考:https://www.cnblogs.com/dolphin0520/p/3799052.html

final

final 修饰在变量上,说明这个变量的值不能修改。final 修饰在方法上,说明这个方法在继承后不能覆盖。final 修饰在类上,说明这个类为终态,不能被继承了。

final修饰引用类型时,引用类型变量的地址值不可被修改。但如果final修饰的是对象类型那么则不能将其他对象赋值给它,但它所指向的对象内部的值是可变的。

参考:https://blog.csdn.net/cjp0326/article/details/60956137

更详细说明:

http://blog.csdn.net/qq1623267754/article/details/36190715

https://www.cnblogs.com/gaopeng527/p/5258206.html

http://blog.163.com/neu_lxb/blog/static/179417010201132332429436/

猜你喜欢

转载自blog.csdn.net/qq_41596538/article/details/81154025