类变量(静态变量)的值不能被构造函数改写

 1 public class StaticInitializer {
 2     static int j = getI();
 3     static int i = 1;
 4
 5     static int getI () {
 6         return i;
 7     }
 8
 9     public static void main(String[] args) {
10         System.out.println(StaticInitializer.j);
11         System.out.println(StaticInitializer.i);
12     }
13 }

以上程序运行结果:

 1 public class StaticInitializer {
 2     static int j = getI();
 3     static int i = 1;
 4
 5     static int getI () {
 6         return i;
 7     }
 8     StaticInitializer()
 9      { i=4;
10       }
11     public static void main(String[] args) {
12         System.out.println(StaticInitializer.j);
13         System.out.println(StaticInitializer.i);
14     }
15 }

以上程序运行结果:

以上说明:静态变量(类变量)的值不能被构造函数改写

时间: 2024-11-11 03:04:36

类变量(静态变量)的值不能被构造函数改写的相关文章

Spring-如何给静态变量注入值

Spring无法直接给静态变量注入值,因为静态变量不属于对象,只属于类,也就是说在类被加载字节码的时候变量已经初始化了,也就是给该变量分配内存了,导致spring忽略静态变量.所以如下这种写法就是错误的,这样是无法注入的,在使用该变量的时候会导致空指针错误: @Autowired private static StudentMapper studentMapper; Spring 依赖注入是依赖set方法,静态变量不属于对象,只属于类.解决方法就是加上非静态的set方法,如下: private

SpringMvc通过@Value( ) 给静态变量注入值

spring 不允许/不支持把值注入到静态变量中,如: @Value("${ES.CLUSTER_NAME}")private static String CLUSTER_NAME; 在方法中获得的CLUSTER_NAME,会得到null 解决好在spring支持set方法注入,我们可以利用非静态setter 方法注入静态变量.如: private static String CLUSTER_NAME; @Value("${ES.CLUSTER_NAME}") pu

spring 给静态变量注入值

一般在spring中,给static变量加上@Autowired注解的时候会报空指针异常错误. 解决: 1.通过xml配置文件配置 这个就不多说了. 2.通过注解 @Component public class StructUtil { private static AttendanceMapper attendanceMapper; @Autowired public void setAttendanceMapper(AttendanceMapper attendanceMapper) { S

java 成员变量、局部变量、静态变量、类变量、非静态变量、实例变量、向前引用、非法向前引用、静态代码块、非静态代码块

①java类的成员变量有俩种: 一种是被static关键字修饰的变量,叫类变量或者静态变量 另一种没有static修饰,为成员变量 ②通俗点说: 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类的所有实例共享.静态变量可以直接通过类名进行访问,其生命周期取决于类的生命周期. 而实例变量取决于类的实例.每创建一个实例,java虚拟机就会为实例变量分配一次内存,实例变量位于堆区中,其生命周期取决于实例的生命周期. 注意点: 1.JAVA中初始化

JNI/NDK开发指南(七)——C/C++访问Java实例变量和静态变量

转载请注明出处:http://blog.csdn.net/xyang81/article/details/42836783 在上一章中我们学习到了如何在本地代码中访问任意Java类中的静态方法和实例方法,本章我们也通过一个示例来学习Java中的实例变量和静态变量,在本地代码中如何来访问和修改.静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过[类名.变量名]来访问.实例变量也称为成员变量(属性),每个实例都拥有一份实例变量数据的拷贝,它们之间修改后的数据互不影响.下面看一

C#中静态变量 静态类 静态成员

静态变量与非静态变量的区别如下: 1.内存分配 静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡: 而非静态变量需要被实例化后才会分配内存. 2.生存周期 静态变量生存周期为应用程序的存在周期: 非静态变量的存在周期取决于实例化的类的存在周期. 3.调用方式 静态变量只能通过“类.静态变量名”调用,类的实例不能调用: 非静态变量当该变量所在的类被实例化后,可通过实例化的类名直接访问. 4.共享方式 静态变量是全局变量,被所有类的实例对象共享,即一个实例的改变了静

java的成员变量默认值

如果我们不做任何初始化工作,变量具有什么默认值,或者是否具有默认值呢?其实,成员变量在创建时,系统会为其分配一个默认值.不同类型的变量,默认值也不相同,下面来看看各种类型的默认值分别是什么. 用例子来说明:先输入一个java代码(这里只包括了实例变量) class Text1 { // 实例成员变量 private boolean bool; private byte b; private short s; private char c; private int i; private long

Android进程管理及静态变量垃圾回收

1.Android静态变量的生命周期 静态变量的生命周期遵守Java的设计.我们知道静态变量是在类被load的时候分配内存的,并且存在于方法 区.当类被卸载的时候,静态变量被销毁. 在PC机的客户端程序中,一个类被加载和卸载,可简单的等同于jvm进程的启动和结束.那么在Android中 呢?用的Dalvik vm也是一样的.不过Android不太突出的进程概念,所以对静态变量的生命周期就会感觉模糊,这种模糊对于值类型是无所谓的,如果是静态的对象引用, 则与内存回收.内存泄漏这些问题有关,有必要加

局部静态变量

1 #pragma region 成员函数的局部静态变量应用 2 class CTestA 3 { 4 public: 5 CTestA(); 6 void ReturnCurrentTime(float currentFrame, float nextFrame); 7 }; 8 9 CTestA::CTestA(){} 10 11 void CTestA::ReturnCurrentTime(float currentFrame, float nextFrame) 12 { 13 stati