局部变量和成员变量的初始值问题
引言
大家都知道,在java中,成员变量是可以不用给初始值的,默认就有一个初始值。而局部变量,必须显示给予一个初始值,否则编译无法通过。大家在学习的时候,一般是直接把这个结论直接记下,很少去考虑原因。
所以,这是为什么呢?
正文
比如
![](https://yqfile.alicdn.com/img_bf1074fdb15413bd451873effb3f35a5.png)
这段代码是会出现如下编译异常的
![](https://yqfile.alicdn.com/img_eb1177bddf52f9055f984f485e19f075.png)
但是,像下面这么写就不会
![](https://yqfile.alicdn.com/img_1658f33e5f53a30187216630cf5e813e.png)
javac这么设计的原因,不是因为推断不出局部变量的初始值,而是出于严谨性的考虑。
成员变量
你无法确定你的调用顺序,例如,你可以这么调
![](https://yqfile.alicdn.com/img_39e8bccc62deb3f4b601ebf4161bc7f0.png)
也可以这么调
![](https://yqfile.alicdn.com/img_31206f1691be396c8cf494b9e1ea65b8.png)
编译器无法确定name的初始值,于是给了一个初始值。真正的值,交给jvm在运行时期处理。
局部变量
你可以明确你的调用顺序,我相信应该没人会像下面这么写
![](https://yqfile.alicdn.com/img_33c4e83d7eea8d7a15a418ad6c6aea99.png)
在局部变量中,必然是先声明一个变量,再进行赋值。于是,java的编译器觉得,既然你肯定是先声明一个变量,再调这个变量了。那就在声明的时候,就把初始值给我吧。不是我不能推断你的初始值,而是让你在声明的时候就把初始值给我,我是为你好,帮你减少代码出错的可能性。
局部变量和成员变量的初始值问题相关推荐
- Java未赋值成员变量的初始值(默认值)
Java未赋值成员变量的初始值(默认值) java中的所有变量必须先声明,后赋值才能使用. java中的成员变量,在创建对象的时候,都会执行一次初始化操作,都会给一个默认值. 基本数据类型默认值都是0 ...
- Java面向对象之成员变量的初始值、object类与对象
一.成员变量初始值 1.测试 class Test06_Num{ //定义一个数据类//在类中定义各种类型的变量,但是不给值int i; byte b;short s;long l;float f;d ...
- java程序中默认包含的是_在编写 Java 程序时,如果不为类的成员变量定义初始值, Java 会给出它们的默认值,下列说法中不正确的一个是( )。...
软件Linuxkernel的版本号为2.6.39.0,其中数字为"6"代表(). 口令中的突出主音是指(). 偏心受力构件进行钢筋代换时应按()分别代换 采用提净法炮制的药物是() ...
- java 成员变量默认值_在编写Java程序的时候,如果不为类的成员变量定义初始值,Java会给它们默认值,下列说法中不正确的一个是______。...
茶艺是一种综合性的生活艺术,但对"茶艺"的______诠释究竟是什么,却众说纷纭,即使开茶艺馆的人,也多半______. 依次填入划横线部分最恰当的一项是______. 下图为某家 ...
- java变量同名_浅析Java中局部变量与成员变量同名解决技巧
要想区分这哥俩,首先,我们得知道它们分别是什么.先从成员变量下刀. 成员变量 我们来研究一个事物: 属性:外在特征:例如人的身高,体重 行为:能够做什么:例如人有说话,打球等行为. 而在Java语言中 ...
- 第三次学JAVA再学不好就吃翔(part21)--局部变量与成员变量
学习笔记,仅供参考 文章目录 面向对象 局部变量与成员变量的区别 来几个例子 注意事项 面向对象 局部变量与成员变量的区别 在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明 ...
- java中局部变量和成员变量
java中局部变量和成员变量 1. 定义的位置不一样 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2. 作业范围不一样 局部变量:只有方法当中才能使用,出了方法就不能再用 成员变量 ...
- 局部变量与成员变量的·区别!
局部变量与成员变量的不同1,定义的位置不同(重要) 局部变量:在方法的内部 成员变量:在方法外部,直接写在类当中 2,作用范围不一样 局部变量:只有在方法体内才有效,出了方法就不能在用了 成员变量:整 ...
- 局部变量和成员变量;Java的封装性;private关键字和this关键字
局部变量和成员变量的区别: 定义的位置不一样[重点] 局部变量在方法内: 成员变量在方法外,类以内: 作用范围不一样[重点] 成员变量在整个类都可以用 默认值不一样[重点] 成员变量在没有赋值的情况下 ...
最新文章
- ubuntu14.04 server安装vncserver
- Python网络编程—TCP套接字之HTTP传输
- Ubuntu16.04通过GPT挂载硬盘
- html 按钮光束,图文详解,原来3dmax光束特效的制作这么简单!
- 处理2D图像和纹理——创建2D菜单界面
- 写论文的用到的常用技巧
- linux 移动压缩包 命令,文件的复制、移动、压缩等对SELinux属性关系详解
- error CS1010 CS8025 CS1012 CS1525 常见文档错误解决
- 黑莓8330、8830写号,上网,输入法,汉化
- Mac字体安装的方法?Mac怎么安装新字体?Mac字体安装教程
- 【lnmp一键安装包】LNMP一键安装和配置(解决LNMP502和500问题)
- 计算机考试二级搜题软件,计算机二级搜题库-可以帮助计算机二级备考生进行备考的刷题软件...
- 【win10升级】我们无法更新系统保留的分区
- 如何制作WinPE启动盘
- linux安装frps服务,Debian手动搭建frps服务端
- 大数据DBA:大数据数据库管理做什么
- 为什么1KB=1024B,而不等于1000B?
- c语言zip 库,c语言调用libzip库遍历zip文件
- python脚本自动化赚钱系统_python实现自动化上线脚本的示例
- android usb通讯波特率,USB串口的特殊波特率通信
热门文章
- 微信公众开发api接口
- C#中Hashtable、Dictionary详解以及写入和读取对比
- 六式建站浅见,和大家一起分享,不足之处还望斧正。
- 【转】ADO.NET对数据库操作经典类
- Java内存溢出[转]和mysql配置文件简介[原创]
- visual tree view在工具箱力没有_Visual-Inertial Odometry
- 重磅!SCI顶级牛刊《Science》合集(2018~2020年度)
- 修改某个用户名和密码
- c 调用易语言dll字节集,总结VC与易语言DLL互相调用的方法
- 8分钟答辩稿_干货 | 论文答辩,该掌握哪些技巧?