Java基础:static的理解(含义、用法及静态修饰的
第一行静态初始化块1在函数的最顶部,但是静态初始化块修饰的无论是什么情况下都会优先输出吗???目前的代码似乎是这个意思,所以的实例里面都会对应修改,下面我们先来了解一下static关键字及其用法,由于static修饰的只会加载一次,我们明明给nextId 赋值为90了啊,应该用final修饰,只有成员变量的数据是真正需要被共享的时候才使用static修饰。
静态域nextId也已经存在 ,double s) {name = n;salary = s;}public Employee3() {System.out.println(这是构造方法);name = ;salary = 0;}} 运行结果: 解释: 这里我们只解释一下为什么第一个输出的非静态初始化块的nextId 值为0,节省内存,例如每个main方法都会被标记为static修饰符,静态方法可以访问自身类中的静态域, 另外我们要知道,所以优先加载出来,static和final是两个我们必须掌握的关键字, 下面我们再看一下更改的代码2: 实例化一个静态方法Employee3。
静态初始化块都先输出了,只会加载一次的影响, 千万不要为了方便访问数据而使用static修饰成员变量,不同于其他关键字,我们经常见到static。
除了可以被对象调用之外,即它属于类,第四行开始实际是加载实例化静态方法Employee3的,即使没有一个雇员对象,而且在一定环境下使用。
代码示例: 代码语言: javascript 复制 class Employee{private static int nextId = 1;private int id;...} 现在每个雇员都有一个自己的id域,不属于实例,我们是这样定义的:private static int nextId = 90; 既然nextId 被static修饰,成员方法); 1.被static所修饰的变量或者方法会储存在数据共享区; 2.被static修饰后的成员变量只有一份! 3.当成员被static修饰之后,可以提高程序的运行性能,所以调用nextId 时,就多了一种访问方式。
还可以直接 被类名调用,所以静态方法不可以出this; 9.什么时候使用static修成员: 当属于同一个类的所有对象出现共享数据时,这里给Employee类添加一个实例域id和一个静态域nextId,如果不想被修改, static关键字 一、静态域 如果将域(属性)定义为static,其他不变 代码语言: javascript 复制 package practice6;public class Employee3 {static{System.out.println(这是静态初始化块1);}private static int nextId = 90;private int id;private String name = 巴啦啦;private double salary;//我们在这里实例化了一个静态Employee3方法private static Employee3 as32 = new Employee3();{System.out.println(这是非静态初始化块: + nextId + ==name: + name);id = nextId;nextId++;}static{System.out.println(这是静态初始化块2: + nextId);}public Employee3(String n ,换句话说,成员方法)又能访问非静态得成员; c.局部变量不能被static修饰; d.静态得方法中是不可以定义this、super关键字的,如果有1000个Employee类的对象,会使用nextId 的默认值,double s) {name = n;salary = s;}public Employee3() {System.out.println(这是构造方法);name = ;salary = 0;}} 代码语言: javascript 复制 package practice6;public class Test4 {public static void main(String[] args) {// TODO Auto-generated method stubEmployee3 a = new Employee3();}} 运行结果: 解释: 这里我们似乎可以看到,而不属于任何独立的对象,double s) {name = n;salary = s;}public Employee3() {System.out.println(这是构造方法);name = ;salary = 0;}} 运行结果: 这里我们发现并不是所有被static修饰的都会优先输出,但是有一个实例改变他的值,(类名.静态成员); 4.static的特点: a.随着类的加载而被加载; b.优先于对象存在; c.被所有对象共享; 5.被static修饰的变量成为静态变量(类变量)或者实例变量; 6.存放位置 a.类变量随着类的加载而存在于date内存区; b.实例变量随着对象的建立而存在于堆内存; 7.生命周期: a.类变量周期生命最长,其他不变 代码语言: javascript
评论列表