1.static关键字
static修饰静态部分,由static修饰代码有如下性质:
1.static在jvm分配的static空间中
2.static空间分配比较早。(初始化顺序早)
3.static修饰的方法、属性只能被定义一次。static修饰的方法、属性不属于当前对象,一般使用类名方式访问。
eg. Car.price = 1000.0;
案例(无继承关系初始化顺序/银行余额)
Bank.java
@Data
/**
* static特点
* 1.static在jvm分配的static空间中
* bank类创建对象可以公共访问
* 2.无论创建几次对象,static属性和方法都只初始化一次
* 3.static初始化顺序早
* 4.static修饰的属性一般用类名访问 如:Bank.balance
* @author wdy
*
*/
public class Bank {
private String name;
private static int balance =100000;//余额 static属性
{
System.out.println("代码块");
}
static {
System.out.println("static代码块");//static 代码块只调用一次
}
public Bank() {
System.out.println("无参数构造方法");
}
public void deposit(int money) {
Bank.balance+=money;
System.out.println("我是deposit方法");
}
public void withdraw(int money) {
Bank.balance-=money;
System.out.println("我是withdraw方法");
}
/*
* 余额 static方法
* static修饰的方法/属性,只能被定义一次
* 因此static方法内不能调用其它方法
*/
public static int getbalance(){
System.out.println("我是static方法");
return Bank.balance;
}
public Bank(String name) {
super();
System.out.println("有参构造方法");
this.name = name;
}
}
BankTest.java
public class BankTest {
@Test
public void test() {
Bank abc=new Bank();
abc.setName("中国农业银行");
abc.withdraw(10000);
Bank icbc=new Bank();
icbc.setName("中国工商银行");
icbc.withdraw(10000);
Bank ab1c=new Bank("hhh");
System.out.println("有参构造方法结果:"+ab1c.getName());
System.out.println("最终余额为:"+icbc.getbalance());
}
}
运行结果
2.final关键字
不可变、不可修改
3.构造器
构造器的作用是创建对象时对对象进行初始化。
- 构造方法的语法结构
由访问控制符、类名、参数列组成
- 无参数构造方法
如果开发者不定义构造器,那么编译器会主动创建无参数构造方法-默认构造方法。(参考上方案例)
书写快捷方式:类名 alt+?
- 有参构造方法
开发者自己定义的构造器,也称为有参构造器。注意:
如果开发者自己定义构造器,那么编译器就不会创建无参构造器。(参考上方案例)
书写快捷方式 :alt+shift+s ——Generate Constructor using Field 按需勾选参数属性)