大家都知道,static修饰的变量在类实例之前就已经分配内存,
昨天去某公司面试,突然遇到此问题,心里有些发虚,回来测试了一下
public class StaticTest {
public static byte a1;
public static short a2;
public static int a3;
public static long a4;
public static char b;
public static double c;
public static float d;
public static boolean e;
public static String f;
public static Object g;
public static int[] a_h;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("static byte a1------"+a1);
System.out.println("static short a2-----"+a2);
System.out.println("static int a3-------"+a3);
System.out.println("static long a4------"+a4);
System.out.println("sstatic char b------"+b);
System.out.println("static double c-----"+c);
System.out.println("sstatic float d-----"+d);
System.out.println("static boolean e----"+e);
System.out.println("static String f-----"+f);
System.out.println("static Object g-----"+g);
System.out.println("static int[] a_h-----"+a_h);
}
}
打印结果为:
static byte a1------0
static short a2-----0
static int a3-------0
static long a4------0
sstatic char b------
static double c-----0.0
sstatic float d-----0.0
static boolean e----false
static String f-----null
static Object g-----null
static int[] a_h-----null
若变量前无static修饰,并且没有对变量进行初始化,例如:
public class noStaticTest {
public byte a1=1;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("static byte a1------"+a1);
}
}
编译器会编译不通过:Cannot make a static reference to the non-static field a1
分享到:
相关推荐
通常每个类中成员变量可以分为 类变量(static修饰的变量) 以及 实例变量 针对这两种类型的变量赋初始值的时机是不同的。 类变量可以再声明变量的时候直接赋初始值或者在静态代码块中给类变量赋初始值;而实例...
在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...
[解析] static 关键字应用的场合有:①用来修饰类中定义的变量,这样的变量称为类变量或静态变量。②可以用来修饰类中定义的方法,这样的方法称为静态方法。③用来修饰初始化语句块,这样的语句块常称为静态初始化...
6.2.1 在类中给每个变量一个初始值 147 6.2.2 定义自己的引用 147 6.2.3 使用点操作符的技巧 148 6.2.4 类的数组 149 6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车...
属性”的方式访问,对于数值型变量,系统会给定初始值,不强制要求赋初始值. 方法:可以用”类名.属性”的方式访问,方法也为类的所有实例所共有 代码块 : 加载的优先级最高,甚至比主方法的加载还要早. 对于由...
6.2.1 在类中给每个变量一个初始值 147 6.2.2 定义自己的引用 147 6.2.3 使用点操作符的技巧 148 6.2.4 类的数组 149 6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车...
Q0043 java相关概念 "static:静态,无需实例化,可直接引用,全局只有一份copy,修饰变量和方法 final:最终的,不可继承、不可修改,修饰变量、方法、类 volatile:volatile变量表示保证它必须是与主内存保持一致,...
对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 4、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符...
// 为a变量赋初始值,也就是进行初始化 a = 5; System.out.println("代码块局部变量a的值:" + a); } // 下面试图访问的a变量并不存在 // System.out.println(a); } // 代码块局部变量a的值:5 } 复制代码 ...
9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet技术 1.描述JSP和Servlet的区别、共同点、各自应用的范围 2.在Web开发中...
42、一个“.java”源文件中是否可以包含多个类(不是内部类)?有什么限制? 12 43、说出一些常用的类,包,接口,请各举5 个。 12 44、Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类?是否可以...
例如我们要在构造器中对一个名叫s的String引用变量进行初始化,把它设置为初始值,应当这样做: public class Demo { private String s; public Demo { s = "Initial Value";} } 而非 s = new ...
Java程序中方法的调用是按值调用,即调用者将实参的值传递给被调方法对应的形参。 实参与形参的类型、次序和个数一一对应。 基本数据类型参数,形参复制了实参的值,在方法中对形参的改变不会影响实参。 例4.1 编写...
D) 类实现了接口,实现接口中的方法时可以重写该方法的访问权限,但是无法改变接口中变量的值。 题目20:b 下面关于接口和抽象类的说法中正确的是: A) 抽象类使类与类之间依旧具有父子联系,而接口一般只是定义了...
其中Java Application至少有一个主类,这个类中包含一个名为 的方法 7、 JDK下解释执行Java的程序是 。 8、 语句如下: int[] c1=int[10]; int[] c2={1,2,3,4,5,6,7,8,9,0}; 数组c1中的元素有 个;...
对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别 JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的...
•final修饰变量时,表示该变量一旦获得 初始值之后就不可被改变。 •final既可修饰成员变量,也可以修饰局部变量。 final修饰成员变量 •成员变量是随类的初始化或对象初始化而初始化的。final修饰的成员...
3.3.1 全局变量的初始值 3.3.2 局部变量的初始值 3.4 与函数有关的优化 3.4.1 函数调用与程序优化 3.4.2 变量存储优化 3.5 编写多文件程序——变量的存储类别 3.5.1 存储类别 3.5.2 static变量的作用——改变变量的...
16、在JAVA 中,如何跳出当前的多重嵌套循环? 9 17、构造器Constructor 是否可被override? 9 18、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 9 19、是否可以继承String 类? 9 ...