java - Integer类如何在不调用字段或方法的情况下直接存储值
问题描述
例子:
Integer x = 56;
据我了解,只有在类或方法中调用了字段时,值才能存储在对象中。在Integer
类的情况下,它不应该能够在不实例化对象的情况下调用其值字段,因为值不是静态的。这怎么可能?
解决方案
该语言可以并且确实为该语言中内置的对象类型做出任何它想要的例外。简而言之,你可以在 Java 中做到这一点,因为 Java 说你可以。
具体来说,将原始值(int、long 等)转换为包装类(Integer、Long 等)之一称为“自动装箱”,并且正如其名称所说,是自动执行的。
为什么允许这样做?因为它对用户来说非常方便。除了自动拆箱外,它还允许您非常接近地将包装类视为它们包含的原始值。
一些术语:您只“调用”方法,而不是变量或字段。“呼叫”的意思是“将控制权转移到”。
在像 Integer 这样的类中,你甚至不知道它有哪些字段。你所知道的是它可以存储一定范围内的整数值。只能通过调用构造函数或将返回 Integer 的静态方法之一将值输入 Integer。
Integer 的文档,以防您没有看到它。请注意,没有“更改”整数值的操作;我们说它是“不可变的”。如果你想要一个不同的值,你只能创建一个新的 Integer。
推荐阅读
- pine-script - 绘制在 15 分钟满足条件时的每日时间范围
- c++ - 当变量初始化与未初始化时,C++ 中参数化构造函数的工作
- asp.net-core - 一旦用户在机器人框架(.netcore)中离开对话,我想删除文件
- jmeter - Jmter 在运行结束时处于 Tidying up 状态,生成大量结果的 HTML 报告大约需要 2 小时
- spring - 具有弹簧安全性的弹簧云不起作用
- material-ui - 有什么方法可以更改材料表中的 headerStyle 吗?
- ruby - Ruby 中文件的流式处理
- c# - 用于 Web Api 调用 HttpSelfHostServer 的 Console.ReadKey 块
- django - 是否可以在 Django API PUT 中选择要删除的内容?
- excel - 如何在Excel中的单元格中的数字范围内搜索?