在一个类中定义的变量叫做实例变量,定义多个类就有多个变量。现在有一种情况,每个类都具有一个相同的实例变量,例如,一个游戏角色类,都有生命值这个变量,现在需要100个角色,呢么就需要new100个角色,每个对象里面都保存一份实例属性,显然浪费内存,这时候就需要使用静态变量。
静态变量在类加载的时候初始化,不需要创建对象,内存就开辟了,它存储在方法区内存当中,而不是想实例变量那样存储在每个对象里面!
public class Role {
// 静态变量
static int live = 100;
String name;
// 构造方法
public Role() {
}
public Role(String name) {
this.name = name;
}
}
public class StaticTest {
public static void main(String[] args){
Role r = new Role("鳄鱼君");
System.out.println("角色生命值:" + Role.live + "角色名称:" + r.name);
}
}
static关键字
什么时候成员变量声明为实例变量? 所有对象都有这个属性,但是这个属性的值会随着对象的变化而变化(不同对象的这个属性具体的值不同) 什么时候实例变量声明为静态变量? 所有对象都有这个属性,但是所有对象的这个属性的值是一样的,可以定义为静态变量,节省内存开销 java语言中的static关键字- static翻译为静态
- static修饰的方法是静态方法
- static修饰的变量是静态变量
- 所有static修饰的元素都成为静态的,都可以使用“类名.”方式范围跟,当然也可以用“引用.”方式访问,但是这种方式就属于脱裤子放屁,多此一举!
静态代码块
可以使用static关键字来定义“静态代码块”,语法格式:static {
java语句;
}
静态代码块在类加载的时候执行,并且只执行一次,在一个类中可以编写多个:public class StaticTest {
static {
System.out.println("1------》");
}
static {
System.out.println("2------》");
}
static {
System.out.println("3------》");
}
public static void main(String[] args){
System.out.println("main begin");
}
}
实例语句块
实例语句块/代码快,可以编写多个,遵循自上而下的顺序依次执行,在构造方法之前执行,构造方法依次执行。public class StaticTest {
// 构造方法
public StaticTest(){
System.out.println("缺省构造器");
}
// 实例代码块
{
System.out.println("1------》");
}
{
System.out.println("2------》");
}
{
System.out.println("3------》");
}
public static void main(String[] args){
new StaticTest();
System.out.println("main begin");
new StaticTest();
}
}
声明:1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!