局部变量和成员变量的初始值问题
引言
大家都知道,在java中,成员变量是可以不用给初始值的,默认就有一个初始值。而局部变量,必须显示给予一个初始值,否则编译无法通过。大家在学习的时候,一般是直接把这个结论直接记下,很少去考虑原因。
所以,这是为什么呢?
正文
比如
这段代码是会出现如下编译异常的
但是,像下面这么写就不会
javac这么设计的原因,不是因为推断不出局部变量的初始值,而是出于严谨性的考虑。
成员变量
你无法确定你的调用顺序,例如,你可以这么调
也可以这么调
编译器无法确定name的初始值,于是给了一个初始值。真正的值,交给jvm在运行时期处理。
局部变量
你可以明确你的调用顺序,我相信应该没人会像下面这么写
在局部变量中,必然是先声明一个变量,再进行赋值。于是,java的编译器觉得,既然你肯定是先声明一个变量,再调这个变量了。那就在声明的时候,就把初始值给我吧。不是我不能推断你的初始值,而是让你在声明的时候就把初始值给我,我是为你好,帮你减少代码出错的可能性。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
8月9日云栖精选夜读 |这个团队10年牺牲1000人,马云远赴非洲为世界上最危险的职业颁奖
南非当地时间8月7日,来自非洲各国的一线野生动物巡护员齐聚开普敦。马云代表阿里巴巴公益基金会和桃花源生态保护基金会为他们颁奖。这群用生命保护大象、狮子和犀牛的巡护员们,第一次得到来自中国的资金和技术支持。 热点热议 这个团队10年牺牲1000人,马云远赴非洲为世界上最危险的职业颁奖 作者:技术小能手 央视和阿里云爆改一间房,帮视障人群回归正常世界 作者:技术小能手 合成共轭莫比乌斯索烃研究取得进展 作者:技术小能手 知识整理 css的2D转换 作者:mysoul8021 文档和元素的几何滚动 作者:mysoul8021 Python random模块(获取随机数)常用方法和使用例子 作者:1963872626112443 Node-Sass安装问题解决 作者:溜达向日葵 Scroll-view 作者:一生有你llx 美文回顾 软件领域没有银弹 —— 建立正确的云计算认知 作者:西秦说云 实践(一):车联网行业特性致使新的应用架构必须满足快速增长的用户量和爆发式的流量访问 作者:云攻略小攻 人民日报推文:欢迎Google重返中国大陆,但必须遵守中国法律 作者:技术小能手 阿里云Elast...
- 下一篇
听过很多道理,依然过不好这一生?
网上有一个经典的段子“听过很多道理,依然过不好这一生”。同样的道理我们也可以问问自己“学过这么多年英语,依然开不了口”,“看了这么多书,依然编不了程序”。其实原因很简单,那就是缺乏练习。 没有人学骑车会先学自行车原理,没有小孩学说话先要学语法。那学习编程也一样,看了再多的语法书,听了再多的视频教程,如果不上手练习都是白学了。知识如果没有自己动手实践,只有输入没有输出,是无法变成自己的技能的,这也是为什么我在这里将学到的东西写出来的原因。 作为一个非计算机或者软件工程出生的人,最近由于在学习机器学习需要用到Python,也看过不少教程,听过好几个慕课,但是真正在用的时候又忘了。前几天在Udemy上看到一个教程:通过100个问题,提升你的Python技能,于是就抱着试试看的心态尝试了一下。没想到一下子就被陷进去了。题目由浅入深,但是都是Python中比较重要的问题,做起题目来就像在游戏中升级打怪一样非常过瘾。 打算在后续的文章中分享几个有意思的题目,也算是不仅有输入还要有输出和总结吧。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池