引言

大家都知道,在java中,成员变量是可以不用给初始值的,默认就有一个初始值。而局部变量,必须显示给予一个初始值,否则编译无法通过。大家在学习的时候,一般是直接把这个结论直接记下,很少去考虑原因。

所以,这是为什么呢?

正文

比如

这段代码是会出现如下编译异常的

但是,像下面这么写就不会

javac这么设计的原因,不是因为推断不出局部变量的初始值,而是出于严谨性的考虑。

成员变量

无法确定你的调用顺序,例如,你可以这么调

也可以这么调

编译器无法确定name的初始值,于是给了一个初始值。真正的值,交给jvm在运行时期处理。

局部变量

可以明确你的调用顺序,我相信应该没人会像下面这么写

在局部变量中,必然是先声明一个变量,再进行赋值。于是,java的编译器觉得,既然你肯定是先声明一个变量,再调这个变量了。那就在声明的时候,就把初始值给我吧。不是我不能推断你的初始值,而是让你在声明的时候就把初始值给我,我是为你好,帮你减少代码出错的可能性。

局部变量和成员变量的初始值问题相关推荐

  1. Java未赋值成员变量的初始值(默认值)

    Java未赋值成员变量的初始值(默认值) java中的所有变量必须先声明,后赋值才能使用. java中的成员变量,在创建对象的时候,都会执行一次初始化操作,都会给一个默认值. 基本数据类型默认值都是0 ...

  2. Java面向对象之成员变量的初始值、object类与对象

    一.成员变量初始值 1.测试 class Test06_Num{ //定义一个数据类//在类中定义各种类型的变量,但是不给值int i; byte b;short s;long l;float f;d ...

  3. java程序中默认包含的是_在编写 Java 程序时,如果不为类的成员变量定义初始值, Java 会给出它们的默认值,下列说法中不正确的一个是( )。...

    软件Linuxkernel的版本号为2.6.39.0,其中数字为"6"代表(). 口令中的突出主音是指(). 偏心受力构件进行钢筋代换时应按()分别代换 采用提净法炮制的药物是() ...

  4. java 成员变量默认值_在编写Java程序的时候,如果不为类的成员变量定义初始值,Java会给它们默认值,下列说法中不正确的一个是______。...

    茶艺是一种综合性的生活艺术,但对"茶艺"的______诠释究竟是什么,却众说纷纭,即使开茶艺馆的人,也多半______. 依次填入划横线部分最恰当的一项是______. 下图为某家 ...

  5. java变量同名_浅析Java中局部变量与成员变量同名解决技巧

    要想区分这哥俩,首先,我们得知道它们分别是什么.先从成员变量下刀. 成员变量 我们来研究一个事物: 属性:外在特征:例如人的身高,体重 行为:能够做什么:例如人有说话,打球等行为. 而在Java语言中 ...

  6. 第三次学JAVA再学不好就吃翔(part21)--局部变量与成员变量

    学习笔记,仅供参考 文章目录 面向对象 局部变量与成员变量的区别 来几个例子 注意事项 面向对象 局部变量与成员变量的区别 在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明 ...

  7. java中局部变量和成员变量

    java中局部变量和成员变量 1. 定义的位置不一样 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2. 作业范围不一样 局部变量:只有方法当中才能使用,出了方法就不能再用 成员变量 ...

  8. 局部变量与成员变量的·区别!

    局部变量与成员变量的不同1,定义的位置不同(重要) 局部变量:在方法的内部 成员变量:在方法外部,直接写在类当中 2,作用范围不一样 局部变量:只有在方法体内才有效,出了方法就不能在用了 成员变量:整 ...

  9. 局部变量和成员变量;Java的封装性;private关键字和this关键字

    局部变量和成员变量的区别: 定义的位置不一样[重点] 局部变量在方法内: 成员变量在方法外,类以内: 作用范围不一样[重点] 成员变量在整个类都可以用 默认值不一样[重点] 成员变量在没有赋值的情况下 ...

最新文章

  1. ubuntu14.04 server安装vncserver
  2. Python网络编程—TCP套接字之HTTP传输
  3. Ubuntu16.04通过GPT挂载硬盘
  4. html 按钮光束,图文详解,原来3dmax光束特效的制作这么简单!
  5. 处理2D图像和纹理——创建2D菜单界面
  6. 写论文的用到的常用技巧
  7. linux 移动压缩包 命令,文件的复制、移动、压缩等对SELinux属性关系详解
  8. error CS1010 CS8025 CS1012 CS1525 常见文档错误解决
  9. 黑莓8330、8830写号,上网,输入法,汉化
  10. Mac字体安装的方法?Mac怎么安装新字体?Mac字体安装教程
  11. 【lnmp一键安装包】LNMP一键安装和配置(解决LNMP502和500问题)
  12. 计算机考试二级搜题软件,计算机二级搜题库-可以帮助计算机二级备考生进行备考的刷题软件...
  13. 【win10升级】我们无法更新系统保留的分区
  14. 如何制作WinPE启动盘
  15. linux安装frps服务,Debian手动搭建frps服务端
  16. 大数据DBA:大数据数据库管理做什么
  17. 为什么1KB=1024B,而不等于1000B?
  18. c语言zip 库,c语言调用libzip库遍历zip文件
  19. python脚本自动化赚钱系统_python实现自动化上线脚本的示例
  20. android usb通讯波特率,USB串口的特殊波特率通信

热门文章

  1. 微信公众开发api接口
  2. C#中Hashtable、Dictionary详解以及写入和读取对比
  3. 六式建站浅见,和大家一起分享,不足之处还望斧正。
  4. 【转】ADO.NET对数据库操作经典类
  5. Java内存溢出[转]和mysql配置文件简介[原创]
  6. visual tree view在工具箱力没有_Visual-Inertial Odometry
  7. 重磅!SCI顶级牛刊《Science》合集(2018~2020年度)
  8. 修改某个用户名和密码
  9. c 调用易语言dll字节集,总结VC与易语言DLL互相调用的方法
  10. 8分钟答辩稿_干货 | 论文答辩,该掌握哪些技巧?