1.java变量类型 java变量类型分:基本数据类型变量和Object数据类型变量,变量也是占用者内存的 例如: int i = 3; i这个变量保存的就是整形3, 占32位 Object a = new Object(); a这个变量保存着一个指向堆中对象的引用(指针), a占用的内存是一个int型32位 我们都知道JVM内存分很多快,不同变量保存在内存中的位置也不同: 静态变量:保存在方法区 成员变量:保存在堆的对象中 局部变量:保存在栈中 2.类加载与静态变量初始化 类加载分:加载 -…
关于这个静态变量,平时自己没有太认真的去认识.最近调项目的bug,让我重新认识了静态变量的特点. 其实,我们一直都在说:静态变量只在类第一次初始化的时候进行初始化,以后都不初始化. 很简单的一句话,但是我们有没有结合“网站”的特点进行理解??看下面一段代码 using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; n…
转自:http://www.cnblogs.com/zhenjing/archive/2010/10/15/1852116.html 对于C语言的全局和静态变量,不管是否被初始化,其内存空间都是全局的:如果初始化,那么初始化发生在任何代码执行之前,属于编译期初始化.由于内置变量无须资源释放操作,仅需要回收内存空间,因此程序结束后全局内存空间被一起回收,不存在变量依赖问题,没有任何代码会再被执行! C++引入了对象,这给全局变量的管理带领新的麻烦.C++的对象必须有构造函数生成,并最终执行析构操作…
java费静态变量的初始化分为两种情况,一种是局部变量,一种是类的域. 对于类的域,java在类初始化时,会为变量赋一个初始值.对于基本数据类型,java会将初始值设置为二进制0,具体为将boolean设置为false,将byte设置为0,将char设置为0(即空格),short设置为0,int设置为0,long设置为0,float设置为0.0f,都变了设置为0.0.对于引用类型也会将其初始值设置为二进制0,即null. 而对于局部变量加入你在申明变量的时候没有为其设置初始值,java将认为你这…
java 静态变量在编译阶段就已经明确位置, 所以静态变量的声明与初始化在编码顺序上可以颠倒.也就是说可以先编写初始化的代码,再编写声明代码.如: public class Test { // 静态变量的初始化 static { _i = 10; } // 静态变量的声明 public static int _i; } 所以如下代码可以被重读下 public class Test { static { _i = 20; } public static int _i = 10; public st…
1. 静态方法: 成员变量分为实例变量和静态变量.其中实例变量属于某一个具体的实例,必须在类实例化后才真正存在,不同的对象拥有不同的实例变量.而静态变量被该类所有的对象公有(相当于全局变量),不需要实例化就已经存在. 方法也可分为实例方法和静态方法.其中,实例方法必须在类实例化之后通过对象来调用,而静态方法可以在类实例化之前就使用.与成员变量不同的是:无论哪种方法,在内存中只有一份——无论该类有多少个实例,都共用同一个方法. 实例方法的调用: ClassA a = new ClassA();  …
在网上看到一个很有意思的题目,题目如下 class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; ; private SingleTon() { count1++; count2++; } public static SingleTon getInstance() { return singleTon; } } public class Test { publ…
class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; public static int count2 = 1; private SingleTon() { count1++; count2++; } public static SingleTon getInstance() { return singleTon; } } public class Tes…
public class Test{ private static Test tester = new Test(); //step 1 private static int count1; //step 2 private static int count2 = 2; //step 3 public Test(){ //step 4 count1++; count2++; System.out.println("" + count1 + count2); } public stati…
标题 静态代码块与静态成员变量还要看代码的先后顺序 看程序,说出结果 结果为: x=0 看程序,说出结果 结果如下: 补充 : 静态代码块:static{ } 在JVM加载时即执行,先于主方法执行,用于类的属性初始化 注意:静态代码块不能存在于任何方法体中 构造代码块:{} 放于类中,在构造方法调用时先于构造中其他代码执行 局部代码块:{} 放于某方法中,用于缩短变量生命周期 以释放空间 package com.swift.gouzaodaimakuai; public class Gouzao…