25.static关键字

什么时候成员变量声明为实例变量呢?  -------所有的对象都有这个属性,但是这个属性的值会随着对象的变化而发生变化【不同对象的这个属性的值不同】   例如每个人的名字

什么时候成员变量声明为静态变量呢?  --------所有的对象都有这个属性,但是所有的对象的这个属性是相同的  例如中国人的国家都是中国 ,这对于所有的中国人来说都是一样的       简而言之就是这个属性的值不随着对象的改变而发生变化

静态变量在类加载的时候,内存空间在方法区内存中开辟,访问的时候不需要创建对象,直接使用类型.静态变量名 的方式访问

关于static关键字:                                                  

static翻译为静态的,它修饰静态方法或者静态变量,它修饰类级别的特征,和具体的对象无关。它们都可以使用类名.的方式来访问,也可以使用引用.的方式来访问,但是我们不建议这样做

package com.bjpowernode.jave.Test03;

public class ChineseTest {

	public static void main(String[] args) {
		Chinese c1 = new Chinese(123, "张一一");
		Chinese c2 = new Chinese(456,"李二二");
		Chinese c3 = new Chinese(789, "王三三");
		c1.print();
		c2.print();
		c3.print();
	}

}

class Chinese{
	int id;
	String name;
	//这里的国家属性定义为static 静态变量 因为无论对象怎么变化 国家属性都是中国
	static String country = "中国";  
	
	public Chinese(int id, String name) {
		this.id = id;
		this.name = name;
	}
	
	public void print() {
		System.out.println(this.name+"的id是"+this.id+"-----"+Chinese.country);
	}
	
}

可以使用static关键字来定义“静态代码块”

语法格式:

        static{

                java语句;

静态代码块在类加载的时候执行,并且只执行一次  静态代码块在一个类中,可以编写多个,遵循自上而下的顺序执行

方法什么时候定义为静态的呢?

       方法描述的是动作,当所有的对象执行这个动作之后,最终产生的结果是一样的,那么这个动作已经不再属于某一个对象动作了,可以将这个动作定义为类级别的动作,这个时候我们可以将这个方法定义为静态方法。 

        静态方法中无法直接访问实例变量和实例方法 当一个方法在不同的对象去执行的时候对应的结果是不一样的,这样的时候我们可以将方法定义为实例方法,通过创建对象,引用.的方式去访问。

上一篇:java log记录(@Aspect)


下一篇:Mysql教程:(一)数据库常用基础命令