一、关键字:static
二、理解main方法的语法
三、类的成员之四:代码块
四、关键字:final
/*-------------------分割线------------------*/
一、关键字:static
如果想让一个类的所有实例共享数据,那就用类变量。
类属性、类方法的设计思想
类属性作为该类各个对象之间共享的变量。在设计类时,分析哪
些属性不因对象的不同而改变,将这些属性设置为类属性。相应
的方法设置为类方法。
如果方法与调用者无关,则这样的方法通常被声明为类方法,由
于不需要创建对象就可以调用类方法,从而简化了方法的调用。
使用范围:
在java中,可用static修饰属性、方法、代码块、内部类
被修饰后的成员具备以下特点:
随着类的加载而加载
优先于对象存在
修饰的成员,被所有对象所共享
访问权限允许时,可不创建对象,直接被类调用
类变量(class Variable)
类变量(类属性)由该类的所有实例共享
类变量vs实例变量内存解析
静态变量的内存解析
类方法(class method)
在没有对象的实例时,可以用类名.方法名()的形式访问由static修饰的类方法。
在static方法内部职能访问类的static修饰的属性或方法,不能访问类的非static的结构
因为不需要实例就可以访问static方法,因此static方法内部不能有this。(也不能有super?YES!)
static修饰的方法不能被重写
单例设计模式
饿汉式
懒汉式
单利设计模式-应用场景
三、类的成员之四:代码块
代码块(或初始化)的作用:
对java类或对象进行初始化
代码块(或初始化)的分类:
一个类中代码块若有修饰符,则只能被static修饰,称为静态代码块(static block),没有使用static修饰的,为非静态代码块。
static代码块通常用于初始化static的属性
静态代码块:用static修饰的代码块
1. 可以有输出语句。
2. 可以对类的属性、类的声明进行初始化操作。
3. 不可以对非静态的属性初始化。即:不可以调用非静态的属性和方法。
4. 若有多个静态的代码块,那么按照从上到下的顺序依次执行。
5. 静态代码块的执行要先于非静态代码块。
6. 静态代码块随着类的加载而加载,且只执行
一
次。
非静态代码块:没有static修饰的代码块
1.可以有输出语句。
2.可以对类的属性、类的声明进行初始化操作。
3.除了调用非静态的结构外,还可以调用静态的变量或方法。
4.若有多个非静态的代码块,那么按照从上到下的顺序依次执行。
5.每次创建对象的时候,都会执行一次。且先于构造器执行。
四、关键字:final
1、在Java中声明类、变量和方法时,可使用关键字final来修饰,表示“最终的”。
final标记的类不能被继承。提高安全性,提高程序的可读性。
string类、system类、stringBuff类
final标记的方法不能被子类重写
比如:Object类中的getClass()
final标记的变量(成员变量或局部变量)即称为常量。名称大写,且只能被赋值一次。
final标记的成员变量必须在声明时或在每个构造器中或代码块中显式赋值,然后才能使用。
final double MY_PI=3.14;