成员变量的初始值
成員變量的初始值
寫了這么多程序. 不知道大家有沒有產(chǎn)生這樣一個疑問. 我們寫的這個成員變量. 仔細(xì)觀察一下
package com.xyq.bao;public class Person {String name;public static void main(String[] args) {Person p = new Person();System.out.println(p.name);}}這個成員變量啊. 就是創(chuàng)建了一下. 并沒有賦值. 但是沒有飄紅嘛~. 編譯是通過的. 我們換個例子, 大家再看一下
package com.xyq.bao;public class Person {String name;public static void main(String[] args) {Person p = new Person();System.out.println(p.name);String nn;System.out.println(nn); // 飄紅報錯}}第12行代碼會飄紅報錯. 為什么會這樣. 記住這樣一句話. 所有的變量, 必須先聲明后賦值, 才能使用.
package com.xyq.bao;public class Person {String name;public static void main(String[] args) {Person p = new Person();System.out.println(p.name);String nn = "哇卡卡卡卡";System.out.println(nn);}}不報錯了.
為什么啊… 我的全局變量也沒賦值啊. 為什么可以用呢? 原因是. 所有的成員變量, 在寫好之后. java都會給他們一個初始值. 根據(jù)數(shù)據(jù)類型的不同. 給的值也不一樣. 我們來看看這些成員變量的初始值.
看一下結(jié)果:
byte=0short=0int=0long=0float=0.0double=0.0char=boolean=falseString=nullchar是空字符. boolean是false, String是null. 其他都是零.
空字符在ascii里就是0.
false在計算機里也是0.
其他的都很好解釋. 唯獨這個null.
注意: null表示空, 表示沒有. 真空. 連空氣都不如.
我們給出一個children類
package com.xyq.bao;
public class Children {
}
然后在Person里使用Children
public class Person {
???? byte b;
???? short s;
???? int i;
???? long l;
???? float f;
???? double d;
???? char c;
???? boolean bool;
???? String str;
???? Children children;
???? public static void main(String[] args) {
???????? Person p = new Person();
???????? System.out.println("byte="+p.b);
???????? System.out.println("short="+p.s);
???????? System.out.println("int="+p.i);
???????? System.out.println("long="+p.l);
???????? System.out.println("float="+p.f);
???????? System.out.println("double="+p.d);
???????? System.out.println("char="+p.c);
???????? System.out.println("boolean="+p.bool);
???????? System.out.println("String="+p.str);
???????? System.out.println("Children="+p.children);
???? }
}
結(jié)果:
byte=0
short=0
int=0
long=0
float=0.0
double=0.0
char=
boolean=false
String=null
Children=null
我們發(fā)現(xiàn)Children也是null.
原因: String其實也是一個類. 和我們寫的Children, Cat, Panda沒區(qū)別的. java為了讓程序能正常執(zhí)行. 必須要給成員變量一個初始值. 但是Children類型的對象必須得通過new來創(chuàng)建. java不能自動的去給你創(chuàng)建一個對象放這里, 所以, 只能告訴你這里的對象是空. 你用的時候啊. 自己去創(chuàng)建一個對象, 放這里.
總結(jié)
- 上一篇: [目录]Linux 核心系统命令目录
- 下一篇: 3.11 时间处理对象