A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

Java中的基本数据类型有默认值吗?我认为Java中只有引用类型才有默认值,基本类型使用必须初始化值,若非,请证明??(注意:数组不是基本类型!)

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

9 个回复

倒序浏览
印象中毕老师说过char类型的初始化值,具体哪一课记不清了。好像是说char类型的初始化值是u00000对应了一个java支持的U什么表
回复 使用道具 举报
本帖最后由 张金铎 于 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;
        }
}
这跟是不是基本类型没有关系吧。成员变量的数组,照样也会有默认初始值。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 xiewen 于 2013-5-21 01:36 编辑

一个类中的成员实例变量都有初始值,所以类中基本数据类型的实例变量也有默认初始值。如果变量是实例成员变量就不用指定初始值,局部变量就要指定初始值。
                    黑马云青年为您解答

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
袁梦希 + 1 + 2

查看全部评分

回复 使用道具 举报
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]);
}      

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
成员变量上的基本类型是有初始化值的;
int byte 等 对应0
char 对于''
依次类推,
而基本类型作为成员变量时要指定初始化值,或者说,要对他进行初始化;否则使用时会报错;

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
胡浩 中级黑马 2013-5-23 11:15:04
7#
这个和是基本类型和引用类型没有关系吧,在一个类中,如果是成员变量的话,jvm就会默认给一个初始值,如果是成员变量的话,需要自己赋值才能是用的。
“黑马云青年为您解答”

评分

参与人数 1技术分 +1 黑马币 +2 收起 理由
袁梦希 + 1 + 2 淡定

查看全部评分

回复 使用道具 举报
无论是引用类型还是基本类型,成员变量永远都可以在定义的时候不赋值。

因为静态成员变量是优先于类的存在,必然会默认初始化。这个不用说。
而非静态的情况下不能被静态方法调用,非静态方法调用哥就一定创建对象,所以非静态成员变量在堆内存,也会自动初始化。

但定义的时候建议给出初始化值,哪怕是null。
回复 使用道具 举报
是的没有错   基本数据类型必须复制了才能使用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马