局部变量和成员变量的初始值问题

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

引言

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

所以,这是为什么呢?

正文

比如


img_bf1074fdb15413bd451873effb3f35a5.png

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


img_eb1177bddf52f9055f984f485e19f075.png

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


img_1658f33e5f53a30187216630cf5e813e.png

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

成员变量

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


img_39e8bccc62deb3f4b601ebf4161bc7f0.png

也可以这么调


img_31206f1691be396c8cf494b9e1ea65b8.png

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

局部变量

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


img_33c4e83d7eea8d7a15a418ad6c6aea99.png

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

相关文章
|
3天前
局部变量和成员变量
局部变量和成员变量 1.定义的位置不一样【重点】 局部变量:在方法的内部 成员变量:在方法的外部,直接写在类当中 2.作用范围不一样【重点】 局部变量:只有方法当中才可以使用,出了方法就不能再用 成员变量:整个类全都可以通用。 3.默认值不一样【重点】 局部变量:没有默认值,如果要想使用,必须手动进行赋值
9 3
|
6月前
|
Java 开发工具 Docker
最全解决docker配置kibana报错 Kibana server is not ready yet
最全解决docker配置kibana报错 Kibana server is not ready yet
348 0
|
7月前
|
消息中间件 存储 缓存
3分钟白话RocketMQ系列—— 如何消费消息
3分钟白话RocketMQ系列—— 如何消费消息
333 0
|
9月前
|
Java
成员变量与局部变量
成员变量与局部变量
79 0
|
Java Spring
【Spring常见错误】Initialization failed for ‘https://start.spring.io‘
📋📋 精彩摘要:新建SpringBoot项目时,使用官网连接创建项目报错: Initialization failed for 'https://start.spring.io' Please check URL, network and proxy settings. 本文将提供两种解决方式参考。
5327 0
【Spring常见错误】Initialization failed for ‘https://start.spring.io‘
|
机器学习/深度学习 算法 前端开发
阿里面试官分享+真实面经+笔试模拟题 | 面试充电,就看这篇
阿里面试官分享+真实面经+笔试模拟题+招聘信息汇总,太全了!这篇合辑一定要看,不然就亏大啦!
阿里面试官分享+真实面经+笔试模拟题 | 面试充电,就看这篇
|
7月前
|
编译器 Go
Go语言常量完全手册 const用法看这一篇就够了
Go语言常量完全手册 const用法看这一篇就够了
268 0
|
负载均衡 Dubbo Java
Java SPI 和 API,傻傻分不清?
本文介绍了是SPI机制,然后结合业界案例与项目实践来说明SPI的使用场景,最后对Java SPI和API的区别进行了分析。
1465 0
|
8月前
|
SQL 关系型数据库 MySQL
MySQL分页查询详解:优化大数据集的LIMIT和OFFSET
MySQL的分页查询是处理大量数据集的常见需求,了解`LIMIT`和`OFFSET`关键字的用法可以帮助您有效地实现分页功能。同时,性能优化也是确保查询高效执行的关键。通过合理配置和结合其他优化策略,您可以轻松应对分页查询的挑战,提供更好的用户体验。
324 0
MySQL分页查询详解:优化大数据集的LIMIT和OFFSET
|
9月前
|
存储 SQL 关系型数据库
【MySQL进阶-10】深入理解redolog,undolog和binlog的底层原理
【MySQL进阶-10】深入理解redolog,undolog和binlog的底层原理
448 0