【转】Java类成员变量默认初始化规则

一个变量作为类成员使用的时候,如果没有被初始化,java会为其分配默认值:
-----------------------------------------------------------------------------------------
Boolean             false
Char                  ‘\u0000‘(null)
byte                   (byte)0
short                  (short)0
int                      0
long                   0L
float                   0.0f
double               0.0d
-----------------------------------------------------------------------------------------
如果在一个方法中定义一个变量,java不会给其分配默认值,就必须我们来给他初始化,否则将得到编译错误的提示;
Java中明确规定:
 1、如果是引用型的,比如:String,还有类对象,他们的默认值都是:null; 
2、而如果是值类型:double,int,long,float,char等等,他们都是:0; 
还有一个,boolean,默认值是:false.
时间: 2024-08-09 12:57:42

【转】Java类成员变量默认初始化规则的相关文章

java的成员变量默认值

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

Python的类成员变量默认初始值的坑

问题发现:一个循环内,缺省值初始化同名变量,其中的list成员不是空,会延续之前同名变量的值. 示例代码: # Define class class Variant(): # use def __init__(self, price = 500, description = 'default description', values = ['', '', '']): self.price = price self.description = description self.values = v

Java 类成员的初始化顺序

Java 类成员的初始化顺序 前言:开发中碰到一个Java文件中有很多的成员变量,包括静态和非静态的,还有很多的初始化方法,很好奇这些成员的初始化顺序,在这里作个研究. ? 1 ?无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用"); } } class Test { static Samp

类成员变量初始化的问题

class window{ window(int maker){ System.out.println("window"+maker); } } class House{ window w1 ;//new window(1); window w3 = new window(3); House(){ System.out.print("House"); w3 = new window(33); } window w4 = new window(4); } class

为什么java局部变量没有初始化就会报错,而成员变量没有初始化就不会报错?

代码如下 1.局部变量,报错!!! public void test(){ int i; System.out.println(i); } 2.成员变量,输出0 int i; @Test public void test(){ System.out.println(i); } 之前一直有疑问,但是也不知道具体是什么原因,今天看了thinking in java大致就了解了: 其实说到底还是java规范,因为java规定要这样就必须这样==. 原理就是,java规定,所有变量在使用之前要保证是经过

java中成员变量、代码块、构造函数执行顺序

1.java虚拟机运行程序,首先需要装载类,安装现装载父类,初始化父类的静态代码块和静态成员变量 再load子类.初始化子类静态代码块和成员变量 2.load完毕父类与子类后,从main函数入口执行程序,先输出,接着new实例化Beetle类,则先实例化父类Insect,实例化父类时,先初始化非静态成员变量和非静态代码块,接着执行父类构造方法 再实例化子类,实例化子类时,先初始化非静态成员变量和非静态代码块,接着执行子类构造方法. package it.xiangnan.test; public

类成员变量中存在引用,const,和指针类型时需要注意的事项

背景知识 编译器默认生成函数的规则如下: 1.定义一个类时,如果自己没有声明,那么编译器会自动帮助生成一个拷贝构造函数(copy construction),赋值操作符(copy assignment),析构函数(deconstruction). 2.如果没有声明任何构造函数(包括拷贝构造函数),编译器会帮助声明一个默认构造函数. 构造函数(包括编译器生成的默认构造函数)的执行包括两个阶段: 1.初始化阶段 2.构造函数体内代码执行构造的阶段 构造函数执行的两个阶段非常重要,在初始化阶段,如果类

Java类、实例的初始化顺序

题目: public class InitTest{ public static int k = 0; public static InitTest t1 = new InitTest("t1"); public static InitTest t2 = new InitTest("t2"); public static int i = print("i"); public static int n = 99; public int j = pr

C++成员变量的初始化顺序问题

转载自:http://www.cnblogs.com/lidabo/p/3790606.html ,感谢作者! 问题来源: 由于面试题中,考官出了一道简单的程序输出结果值的题:如下, class A { private: int n1; int n2; public: A():n2(0),n1(n2+2){} void Print(){ cout << "n1:" << n1 << ", n2: " << n2 <