u011359326
提问之星
采纳率99.8%
2015-12-09 03:39 阅读 4.5k
已采纳

java中为什么有的变量声明而不赋值?

java中为什么有的变量声明而不赋值?而有的就值,那什么情况下要赋值,什么情况下不赋值

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

5条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2015-12-09 03:41

    比如对象变量,而调用这个变量的构造函数非常耗费时间,所以我们等用到的时候再创建,如果程序运行完都不访问它,就根本不创建,这样可以提高效率。
    对于简单变量,比如int float一类的,建议随手给一个初始值。

    点赞 3 评论 复制链接分享
  • dcxy0 Q544471255 2015-12-09 03:41

    当然可以了,一般不需要一开始就赋值的,就可以等后面再赋值,如果是一开始就赋值,并且后面不会改变(比如某个标记)就可以用static final修饰。

    点赞 2 评论 复制链接分享
  • u013961798 太平洋渔业资源管理局 2015-12-09 03:48

    有些语言中,简单类型不赋值则会使用一个默认的值(比如int会默认为0)

    点赞 2 评论 复制链接分享
  • zhanggang740 JackWaiting 2015-12-09 04:03

    你这个问题给你举个例子,你应该就能理解了
    例如: int a; 这是只声明不赋值,则只会在内存的栈区创建引用,堆中并无此引用的指向。
    就是说只会在内存中创建一个 a;而这个a并没有指向任何指向,是没有空间的。
    而 int a =0; 这样会在内存的栈区创建引用,并且a这个对象指向0,这样就会占有内存空间的;

    所有我就简单的跟你讲一下什么时候需要赋值,什么时候不需要赋值吧。
    当你定义的这个变量被多个地方应用的时候,而这些引用中有的值可能无法给这个变量赋值,
    还是上面这个例子
    我们 int a;

    在我们的代码一个部分中我们给他赋值 a =10;
    而另外一个地方又给这个a负责,但这个a的值是从数据库拿出来的,这中间有很多情况,而拿到的是空值,这个时候是不是就有问题呢,会报空指针。
    所以必须要初始化一个,一般都是int a=0;
    同理,如果你你要给a赋值都是固定的,或者你可以确定这里值都能拿到,那么你声明的时候肯定用int a;
    这样讲你能明白吗?

    点赞 2 评论 复制链接分享
  • u013516966 pucheung 2015-12-09 08:55

    局部变量需要在声明的时候需要可以赋值或者不赋值,但是在使用这个局部变量之前一定要赋值
    对于类的成员变量再声明的时候可以赋值或者不赋值,如果没有赋值,在使用的时候就会使用默认的值,例如: int 类型 默认值为0
    对于使用final 关键字声明的变量必须赋初值 final int i=10;

    点赞 评论 复制链接分享

相关推荐