自学java备忘录(1)------static关键字

static

作用与原理

static作为静态关键字,用于声明类中的的变量和函数是否为静态类型。
那么什么是静态类型呢?

静态类型

当java虚拟机首次加载到程序中的类时,会将类程序的内容加载入内存。但是,此时类中的静态类型会作为共享数据,单独加载到另一部分内存中。这部分是该类所特有的属性,和具体的对象无关。静态类型无关具体对象,甚至在没有实例对象时也可使用。调用时只需要使用 类名 . 静态变量即可。实例变量需要使用对象 **.**变量。

作用

当对于某些类中常用的不变的数据,如果在每个对象中进行定义的话,则每定义一个对象,这部分数据都会占用一部分内存。如果使用static将这部分重复的数据单独定义,则其作为共享数据只需要在内存中占确定的空间,之后每次定义的新对象需要使用这部分数据时只需要调用这部分共享的数据即可。不需要在新对象所占内存中再次定义。这样节省了资源。

臂如,假设某个类定义了其中一个变量coutry=cn;之后所有类中,coutry均为cn。那么如果使用static coutry=cn;则只会在一开始加载类时,将其作为共享数据占一格内存。若不使用static而在每个类中国自己定义,则每个类中都会新建一个this.coutry,每个类中的country占一个内存,大大降低了资源利用率。

与实例变量的区别

如上所说,静态变量是类中已定好不可更改的。而实例变量是可以更改的。静态变量是该类所有对象共享的,实例变量是每个对象特有的。上述例子中静态对象表示为 类 . coutry 和this.coutry(根据对象不同this所指也不同)。

静态函数

与静态变量相同,对于类中重复使用的函数可以定义为静态函数以节省内存空间。注意:静态函数中只能调用静态函数和静态变量,否则会报错(在静态中使用了非静态变量)。(因为其作为静态函数的特性要求其可以在无对象时执行,因此如果函数中有实例变量则无法满足要求)。

tips

静态函数在jvm首次加载到类时,自动转入共享数据区,不会自动执行,但main函数由于其特殊性,会被jvm自动执行。

实例

以下代码演示了没有创建对象就使用静态函数进行输出:

class Staticdemo
{
	String name;
	int age;
	static String k="cn";
	
 Staticdemo(String name,int age) {
		// TODO 自动生成的构造函数存根
		this.name=name;
		this.age=age;
	}
	public static void dd()
	{
		System.out.println("hello world"+k);
	}
	public static void main(String[] args)
	{
		System.out.println(args);
		System.out.println(args.length);
		Staticdemo.dd();
		
		
	}
}

![演示图]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值