3-static关键字

static

static是一个关键字,用来定义属性和方法;

声明static属性

在一个类中,所有的属性一旦定义,所有内容由各自的堆内存空间保存;

class Person{	
	private String name;
	private int age;
	String country = "清朝";	//国家,暂时不封装
	public Person(String name,int age){
		this.name = name;
		this.age = age;
	}
	public String getInfo(){
		return "姓名"+this.name;
	}
}

static结构内存分析:
每一个对象保存各自的属性,此时没有任何问题,若未来的某一天,country改变了,且此时已有非常多对象,因为每一个而对象都有各自的country属性,即整体设计出了问题(1、重复保存;2、修改困难)
可将country修改为公共属性,此时使用static定义公共属性;
static String country;
static属性定义在全局数据区中;对于static属性的访问需要注意,其本身是一个公共属性,最好应该通过所有对象的最高代表(类)来进行访问;
static可以由类名称直接访问
Person.country="China"
static虽然定义在类中,但并不受到类实例化对象的控制,static属性可以再没有实例化对象的时候使用;
在进行类设计时首选非static属性,公共信息存储时考虑static属性;

声明static方法

static可以进行方法的定义,可以直接由类名称在没有实例化对象的情况下调用;

public static void setInfo(String c){
	country = c;
}
Person.setInfo("TEST");		//可直接调用

此时方法有两种:static、非static,在调用上有限制:

  • static只允许调用static属性或static方法;
  • 非static方法只允许调用static属性或static方法;

所有static定义的属性和方法都可以在没有实例化对象的情况下使用,
static定义的方法或属性都不是代码编写之初需要考虑的,只有在回避实例化对象且描述公共属性的时候才会考虑使用static定义的方法以及属性;

static应用案例

范例:编写一个程序类,实现实例化对象个数的统计,么一次新的实例化对象实现一个统计操作;
此时可以单独创建一个static属性

class book{
	private String title;
	private static int count=0;
	public book(String title){
		this.title = title;
		count++;
	}
}

范例:实现属性的自动命名;
如果现在传递了title属性,若没有传递title,则自动命名;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值