c#静态变量和非静态变量的区别】的更多相关文章

//据说这是一道阿里巴巴面试题,先以这道题为例分析下 public class Text { public static int k = 0; public static Text t1 = new Text("t1"); public static Text t2 = new Text("t2"); public static int i = print("i"); public static int n = 99; public int j…
摘自:http://topmanopensource.iteye.com/blog/1738178 进行多线程编程,同步控制是非常重要的,而同步控制就涉及到了锁. 对代码进行同步控制我们可以选择同步方法,也可以选择同步块,这两种方式各有优缺点,至于具体选择什么方式,就见仁见智了,同步块不仅可以更加精确的控制对象锁,也就是控制锁的作用域,何谓锁的作用域?锁的作用域就是从锁被获取到其被释放的时间.而且可以选择要获取哪个对象的对象锁.但是如果在使用同步块机制时,如果使用过多的锁也会容易引起死锁问题,同…
数据成员可以分静态变量.非静态变量两种. 静态成员: 静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会 分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员. 非成静态员:所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过实例化的类名进行访问..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态…
总结:静态代码块总是最先执行.非静态代码块跟非静态方法一样,跟对象有关.只不过非静态代码块在构造函数之前执行.父类非静态代码块.构造函数执行完毕后(相当于父类对象初始化完成), 才开始执行子类的非静态代码块和构造函数. 相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个,一般在代码块中对一些static变量进行赋值. 不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法). 静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每…
静态/非静态 方法/变量的写法 大家应该都明白静态方法/字段比普通方法/字段的写法要多一个static关键字,简单写下他们的写法吧,了解的可以直接略过 class Test{ // 静态变量 public static int id = 1; // 普通变量 public int usualId = 2; // 静态常量 public static final int finalNextId = 3; // 静态方法 public static void A(){ // 静态方法只能访问静态字段…
java面试经常被问静态资源,非静态资源,父类子类,构造方法之间的执行顺序.下面添加两个类做个测试 class Parent { // 静态变量 public static String p_StaticField = "父类--静态变量"; // 变量(其实这用对象更好能体同这一点,如专门写一个类的实例) //如果这个变量放在初始化块的后面,是会报错的,因为你根本没有被初始化 public String p_Field = "父类--变量"; // 静态初始化块…
         所有的非静态同步方法用的都是同一把锁——该实例对象本身.也就是说如果一个实例对象的非静态同步方法获取锁后,该实例对象的其他非静态同步方法必须等待获取锁的方法释放锁后才能获取锁进而执行方法内容.可是不同的实例对象的非静态同步方法因为跟该实例对象的非静态同步方法用的不是同一个锁,所以不用等到该实例对象已获取锁的非静态同步方法释放锁就可以获取他们自己的锁. 而所有的静态同步方法用的也是同一把锁——对应类对象本身.由于静态同步方法与非静态同步方法所用的锁不可能是同一把锁,所以静态同步方…
看的李刚<疯狂java讲义>,里面讲内部类的地方感觉有点散而且不全,看完之后还是不十分清楚到底怎么用,于是自己写了个程序测试了一下.看如下代码,即可知道外部类和内部类+静态成员和非静态成员之间的相互调用规则. 运行结果如下: 总结如下: 注意: 当如下出现报错:“无法从静态上下文中引用非静态时”,问题在于非静态方法或者非静态变量所属的类可能没有被实列化.因为要使用非静态方法,必须实例化它所属的类. 例如:将第40行代码改成inter2.StaticInter(); 编译: 原因是StaticI…
Static静态变量:   不同的对象共享这个变量的存储空间 而不是静态变量   每个对象具有可变的存储器空间 public class StaticDemo { private int count=0; private static int staticCount=0; public StaticDemo() { System.out.println(++count); System.out.println(++staticCount); } public static void main(S…
静态变量的类型说明符是static.静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量,例如外部变量虽属于静态存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量. 详解: 一,静态资源在首次访问时会调用静态构造器创建类类型对象(静态属于类,动态属于对象,静态被静态构造器创建,动态被普通构造创建,所以实例对象的时候,静态不会被重新构造), 二,类型对象的生存周期是整个应用程序域的生存周期,也就说被访问过的静态资源,只有它所在的…