java小白的学习记录......
1、static可以修饰
属性、方法、代码块
2、static修饰与非static修饰的区别
3、实例
1)Penguin.java代码
public class Penguin {
static String name;//静态成员变量 类变量int health;//实例变量 普通成员变量
int love;
String sex;
static final String PENGUIN_SEX1="Q仔";//final:常量
static final String PENGUIN_SEX2="Q妹";
//静态方法
public static void showPeng(){
System.out.println("静态方法中名称为:"+name+"\n");}
//静态代码块中只能给static的属性赋值
//代码块作用:给静态属性赋予初始值使用的
//永远都比构造方法先执行一步
static{
name="Lucky";
System.out.println("This is a static代码块");
}
public void print(){
System.out.println("Penguin name "+this.name+"\nhealth "+health+"\nlove "+love+"\nsex "+sex+"\n");
}
}
2)Test1.java代码
public class Test1 {
public static void main(String[] args){
//----Penguin.java
Penguin pen=new Penguin();
pen.print(); //(2)
//调用静态的方式1:实例化对象,对象.静态方法(); 对象.静态属性
pen.showPeng(); //(3)
pen.sex=pen.PENGUIN_SEX1;
pen.print(); //(4)
//调用静态的方式2:类名.属性或方法
Penguin.name="QiuQiu";
Penguin.showPeng(); //(5)
}
}
运行结果,对应Test1.java中标出的(2)~(5):
分析上述5个结果:
(1)第一行:因为静态代码块永远比构造函数先执行,所以先输出静态代码块的内容
(2)静态代码块给pen.name属性赋值为lucky,其他属性为--默认构造函数进行的初始化
(3)执行showPeng()函数
(4)pen.sex属性改变,(4)与(2)区别--sex属性改变
(5)执行showPeng()函数