通过前面的学习我们基本掌握叻Java的基本语法,我们熟悉了一个类中主要包括属性、方法、构造方法也可能还有块、内部类等。
我们还对类、属性、方法、构造方法都會用到的知识点进行的学习包括权限修饰符、数据类型、运算符、流程控制等。
可以通过以下修饰符实现类的一些高级特性
static:修饰属性、方法、块、内部类
final:修饰类、常量属性、方法、局部常量(部分在后续学习)
pare方法但实际上每一个实现这个接口的类都只会负责自己類型实例的比较,这是C#1.x规范中没有泛型所带来的历史遗留问题
大部分静态方法是与类的实例有关的,如各种Parse方法他做成静态的原因是怹没有实例作为参数。其他的大多是出于语义或者其他目的的考虑
static除了可以修饰属性、方法外,还可以修饰块称为静态块。
如果一些操作需要在类加载的同时就被执行且只执行一次即可,就可以写到static块中例如,读取属性文件
static块和static的属性以及方法的性质是相同的用static修饰的代码块表示静态代码块,当Java虚拟机加载类时就会执行该代码块。
直接在代码块前加上关键字static即成为静态块。
静态块只有在类加載的时候被执行一次不管创建多少个对象,都不会再执行
如果一个类加载的时候,总要预先做一些事情则可以放在静态块中,例如读取一个属性文件,进行一些常规配置写一些日志等。
一个类中可以有多个静态块按照顺序执行。
static可以修饰属性、方法、块final可以修饰类、属性、局部变量、方法。但是修饰类和方法与继承有关此处不学习,只学习修饰属性和局部变量
可见,static只能修饰属性不能修饰方法的参数及局部变量,而final可以修饰属性也可以修饰参数。
final 用于声明属性方法、形参和类
属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改
方法:定义必须有实现代码,并且子类里不可被覆盖
类:不能被定义为抽象类或是接口,不可被继承。
形参:方法体内不允许被修改
当final修饰属性时,基本数据类型的属性将成为常量不能被修改
一些数学定理中的常量经常使用final修饰
修饰基夲数据类型是主要用途!
E作为数学常数,是自然对数函数的底数有时称它为欧拉数(Euler's number)它是一个无限不循环小数.
这里提到的接口和抽象類以及继承 为下章的知识点做铺垫。如果下章不讲类的关系 可以对基本概念做修改
在声明时同时赋值往往与static一起使用
声明时不赋值,必須在构造方法中逐一赋值
总的原则:保证创建每一个对象的时候final属性的值是确定的
对参数做final修饰
在方法参数前面加final关键字,为了防止数據在方法体中被修改
到目前为止,变量或者常量所涉及到的所有知识都学习了包括权限访问修饰符,高级特性修饰符数据类型等,茬此进行总结
在类中声明的变量或常量叫属性,或者叫成员变量如name、salary、count
在方法中声明的变量叫局部变量,或者临时变量
属性可以使鼡四种权限修饰符修饰,局部变量不可以
属性可以使用static修饰局部变量不可以
属性可以使用final修饰,局部变量也可以
属性的生命周期很长隨着类加载或者创建对象被初始化,直到没有对象引用才回收
局部变量生命周期很短执行某个方法时临时被初始化,方法结束即被回收
如果局部变量与属性重名,则遵守就近原则可以使用this区分,后续学习
属性可以在整个类中使用局部变量只在当前方法中使用
属性都囿默认的初始化值,如引用类型都是null整型是0等,局部变量不被自动初始化必须手工初始化,如taskname手工指定为null才为null而属性name默认就为null