今天主要介绍下三种修饰符:static、abstract、final的区别。 先来一张图: 修饰符总结 接下来对每种修饰符分别进行总结:
大体上就是这么几个区别。但是呢?说到这边我就有两个疑问了。 第一个疑问:抽象类必须都是抽象方法?这句话是对的还是错的? 第二个疑问:既然有静态块,我们知道在静态块里面可以初始化,那么,用了静态块初始化再用静态变量赋值会怎么样? 接下去就试试~~ 第一个疑问: 抽象类 显而易见,在抽象类里可以写抽象方法也可以写不是抽象方法的方法~~!所以总结为:有抽象方法的一定是抽象类,抽象类里不一定都是抽象方法~ 第二个疑问: 先定义静态属性的i值 先定义静态属性的i值 结果已经出来了,这里需要解释一波嘿嘿。静态变量在类初始化时首先被加载的,JVM会去查找类中所有的静态声明,然后分配空间,这个时候只是完成了地址空间的分配,还没有赋值。之后JVM会根据类中静态赋值(包括静态类赋值和静态块赋值)的先后顺序来执行。对于上面的第二个程序而言,就是先声明了int类型的地址空间,并把地址传递给了i,然后按照类中的先后顺序进行赋值动作,首先执行静态块的i=2,后执行静态属性的i=3,那么最后的结果就是i=3了,第一个程序也是同理。但是如果有多个静态块对i继续赋值呢?i的值也是取决于最后的值! 所以这里要提倡的是变量一定要先声明后赋值! 最后,今天是元宵佳节,祝愿各位小伙伴节日快乐,在新的一年里实现自己的愿望~~喜欢的关注一波哈~ 最后应要求附上java的单词(一天十个): JDK(Java Development Kit) java开发工具包 JVM(Java Virtual Machine) java虚拟机 classpath 类路径 version 版本 author 作者 public 公共的 class 类 static 静态 void 没有返回值 String 字符串类型 谢谢收看~~!! |
|