黑马程序员技术交流社区
标题:
Java中只有引用类型才有默认值,基本类型必须初始化
[打印本页]
作者:
rosv
时间:
2013-5-15 18:07
标题:
Java中只有引用类型才有默认值,基本类型必须初始化
Java中的基本数据类型有默认值吗?我认为Java中只有引用类型才有默认值,基本类型使用必须初始化值,若非,请证明??(注意:数组不是基本类型!)
作者:
王靖远
时间:
2013-5-15 18:15
印象中毕老师说过char类型的初始化值,具体哪一课记不清了。好像是说char类型的初始化值是u00000对应了一个java支持的U什么表
作者:
任江峰
时间:
2013-5-15 20:45
本帖最后由 任江峰 于 2013-5-15 21:15 编辑
//类的成员变量有初始值,局部变量没有初始值。
class Test2
{
byte byteValue;
short shortValue;
int intValue;
long longValue;
float floatValue;
double doubleValue;
char charValue;
boolean booleanValue;
static byte staticByteValue;
static short staticShortValue;
static int staticIntValue;
static long staticLongValue;
static float staticFloatValue;
static double staticDoubleValue;
static char staticCharValue;
static boolean staticBooleanValue;
public static void main(String[] args)
{
int a;
Test2 t = new Test2();
//非静态成员变量
System.out.println("--------非静态成员变量--------");
System.out.println("byteValue="+t.byteValue);
System.out.println("shortValue="+t.shortValue);
System.out.println("intValue="+t.intValue);
System.out.println("longValue="+t.longValue);
System.out.println("floatValue="+t.floatValue);
System.out.println("doubleValue="+t.doubleValue);
System.out.println("charValue="+t.charValue);
System.out.println("charValue==\\u0000:"+(t.charValue=='\u0000'));
System.out.println("booleanValue="+t.booleanValue);
System.out.println("--------static成员变量--------");
//静态成员变量
System.out.println("staticByteValue="+staticByteValue);
System.out.println("staticShortValue="+staticShortValue);
System.out.println("staticIntValue="+staticIntValue);
System.out.println("staticLongValue="+staticLongValue);
System.out.println("staticFloatValue="+staticFloatValue);
System.out.println("staticDoubleValue="+staticDoubleValue);
System.out.println("staticCharValue="+staticCharValue);
System.out.println("charValue==\\u0000:"+(staticCharValue=='\u0000'));
System.out.println("staticBooleanValue="+staticBooleanValue);
System.out.println("--------局部变量--------");
// System.out.println("a="+a);//编译失败:错误: 可能尚未初始化变量a
}
}
复制代码
QQ图片20130515211538.jpg
(42.08 KB, 下载次数: 2)
下载附件
2013-5-15 21:15 上传
运行结果:
作者:
张金铎
时间:
2013-5-15 20:57
本帖最后由 张金铎 于 2013-5-15 21:21 编辑
基础班刚好讲过诶:
成员变量都有默认初始化值(类内方法外的变量)
局部变量没有默认初始化值,要想使用:必须是创建,赋值,使用(方法内部的变量)。
只以int型为示例,其他类型同此。把注释打开编译报错,说明局部变量必须初始化再使用。
class Test3
{
public static int a;
public static void main(String[] args)
{
System.out.println("a="+a);
test();
}
public static void test(){
//int a;int b;
//int c=a+b;
}
}
这跟是不是基本类型没有关系吧。成员变量的数组,照样也会有默认初始值。
作者:
xiewen
时间:
2013-5-15 21:05
本帖最后由 xiewen 于 2013-5-21 01:36 编辑
一个类中的成员实例变量都有初始值,所以类中基本数据类型的实例变量也有默认初始值。如果变量是实例成员变量就不用指定初始值,局部变量就要指定初始值。
黑马云青年为您解答
作者:
杨彬
时间:
2013-5-22 19:09
int a 与int[] arr 声明在main外,也就是成员变量,成员变量我认为就是拿来用的,没有默认值怎么用?
static int a;
static int[] arr;
public static void main(String[] args) {
System.out.println(a);
System.out.println(arr);
arr=new int[5];
System.out.println(arr[0]);
}
作者:
Miss小强
时间:
2013-5-22 19:50
成员变量上的基本类型是有初始化值的;
int byte 等 对应0
char 对于''
依次类推,
而基本类型作为成员变量时要指定初始化值,或者说,要对他进行初始化;否则使用时会报错;
作者:
胡浩
时间:
2013-5-23 11:15
这个和是基本类型和引用类型没有关系吧,在一个类中,如果是成员变量的话,jvm就会默认给一个初始值,如果是成员变量的话,需要自己赋值才能是用的。
“黑马云青年为您解答”
作者:
第一枭雄
时间:
2013-5-23 23:53
无论是引用类型还是基本类型,成员变量永远都可以在定义的时候不赋值。
因为静态成员变量是优先于类的存在,必然会默认初始化。这个不用说。
而非静态的情况下不能被静态方法调用,非静态方法调用哥就一定创建对象,所以非静态成员变量在堆内存,也会自动初始化。
但定义的时候建议给出初始化值,哪怕是null。
作者:
木子天涯
时间:
2015-11-14 00:21
是的没有错 基本数据类型必须复制了才能使用
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2