/** * Created by spring on 10/26/13. */ public class Test { public static void main(String args[]){ Integer i_128 = -128; Integer j_128 = -128; System.out.println(i_128==j_128); Integer i_129 = -129; Integer j_129 = -129; System.out.println(i_129==j_129); Integer i128 = 128; Integer j128 = 128; System.out.println(i128==j128); Integer i127 = -127; Integer j127 = -127; System.out.println(i127==j127); } }
输出:
true
false
false
true
这个原因想必大家都知道,Integer是一个不可变类,所以对一些常用的值(-128--127)进行了缓存,避免对象的频繁创建和销毁。但是从jdk1.5开始这个缓存的范围可以由开发者根据需要自己指定,不过下限还是-128,上限可以修改。jdk的源码如下:
/** * Cache to support the object identity semantics of autoboxing for values between * -128 and 127 (inclusive) as required by JLS. * * The cache is initialized on first usage. The size of the cache * may be controlled by the -XX:AutoBoxCacheMax=<size> option. * During VM initialization, java.lang.Integer.IntegerCache.high property * may be set and saved in the private system properties in the * sun.misc.VM class. */ private static class IntegerCache { static final int low = -128; static final int high; static final Integer cache[]; static { // high value may be configured by property int h = 127; String integerCacheHighPropValue = sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high"); if (integerCacheHighPropValue != null) { int i = parseInt(integerCacheHighPropValue); i = Math.max(i, 127); // Maximum array size is Integer.MAX_VALUE h = Math.min(i, Integer.MAX_VALUE - (-low)); } high = h; cache = new Integer[(high - low) + 1]; int j = low; for(int k = 0; k < cache.length; k++) cache[k] = new Integer(j++); }
/** * Returns an {@code Integer} instance representing the specified * {@code int} value. If a new {@code Integer} instance is not * required, this method should generally be used in preference to * the constructor {@link #Integer(int)}, as this method is likely * to yield significantly better space and time performance by * caching frequently requested values. * * This method will always cache values in the range -128 to 127, * inclusive, and may cache other values outside of this range. * * @param i an {@code int} value. * @return an {@code Integer} instance representing {@code i}. * @since 1.5 */ public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
相关推荐
实时处理流程 1、打开网络 function JX102R_open_Net(): integer; 2、绑定端口,这步可选,... 如果返回值为零,说明有刷卡请求 判断后,调用function JX102R_Rsp_Card(ReaderNO, TypeId: integer): integer;应答
在使用MyBatis进行数据操作时,我们经常会遇到关于返回值类型的困扰,特别是涉及到基本类型int和对象类型Integer之间的转换。标题"mybatis返回Integer"指的是在MyBatis的映射文件或者Mapper接口中,使用Integer作为...
标题中的“有返回值的线程”指的是在编程中如何在线程执行完后获取到一个结果。线程通常用于执行异步任务,而当我们需要这些任务执行的结果时,就需要用到带返回值的线程机制。Java语言中,可以通过实现`Callable`...
本示例将深入讲解如何在VB.NET中调用存储过程,包括参数传递、接收返回值、处理存储过程中的错误以及控制流程。 首先,我们需要创建一个连接到SQL Server数据库的对象。这可以通过`SqlConnection`类实现,提供...
Dim ret As Integer ret = Shell("cmd /c dir", vbNormalFocus) ``` 这里的`/c`参数表示CMD应该执行完指定的命令后立即退出,`dir`是CMD命令,用于列出目录内容。 然而,仅使用`Shell`函数无法直接获取命令的输出...
function IntToStrEx(Value: Integer; Len: Integer; FillChar: Char = '0'): string; {测试通过} {* 扩展整数转字符串函数 Example: IntToStrEx(1,5,'0'); 返回:"00001"} function IntToStrSp(Value: Integer; ...
Dim maxValue As Integer = maxIdParam.Value ``` 4. **处理返回值**: 在调用ExecuteNonQuery执行存储过程后,可以通过OracleParameter对象的Value属性获取返回值。在这个例子中,我们得到了用户ID的最大值。 5. *...
`UndoResult`变量存储了函数返回的结果,通常情况下,如果Undo成功执行,返回值将是非零值。 #### 示例代码解析 接下来,让我们进一步分析上述示例代码: ```vb Declare Function SendMessage Lib "user" (ByVal ...
这个函数接受三个参数:设备上下文句柄(hdc)、水平坐标(x)和垂直坐标(y),返回值是一个整数,代表了该位置像素的颜色值。 为了获取鼠标位置的坐标,我们需要监听WM_MOUSEMOVE消息,这是一个系统级别的鼠标移动消息...
integer Fblz:Fblz函数名,integer表示有返回值,类型=整型 。 integer x:数值型形参 integer y:数值型形参 三、Vfp调用举例: Declare integer Fblz In "fBL.dll" integer x,integer y x=800 y=600 xx=...
每个函数的返回值为布尔类型。 函数原型为 boolean operation(HugeInteger) 注意: 1. 大数运算需要考虑到正负,使用单独的变量存储符号位。 2. 大数的输入: 正数形式为”12345”,负数形式为”-123456” 3. 如果...
Public Function Add(ByVal x As Integer, ByVal y As Integer) As Integer Return x + y End Function End Class ``` 在这个例子中,`Calculator` 类包含了一个名为 `Add` 的方法,该方法接受两个整数参数并...
在本文中,我们将深入探讨如何在SpringBoot项目中整合MyBatis,并利用PageHelper插件实现接口返回值的分页功能。SpringBoot以其简洁、快速的特性,成为了现代Java开发中的首选框架,而MyBatis作为轻量级的持久层框架...
在Java编程语言中,函数是实现特定功能的代码块,它们可以接受参数并返回值。在Java中,每个函数都有一个预定义的返回类型,它决定了函数执行后能够返回的数据类型。这个压缩包"检测函数返回值类型的简单程序.rar...
函数返回值,而Sub不返回。例如: ```vbnet Function AddNumbers(a As Integer, b As Integer) As Integer Return a + b End Function Sub DisplayMessage(message As String) Console.WriteLine(message) ...
- **返回值:** - `DRIVE_REMOVEABLE`: 可移动驱动器(如软盘驱动器)。 - `DRIVE_FIXED`: 固定驱动器(如硬盘驱动器)。 - `DRIVE_REMOTE`: 网络驱动器。 #### 三、居中窗口 **知识点:** 居中窗口,使窗体在...
// 假设第一个参数是返回值,类型为INTEGER ``` 5. **执行存储过程**:调用`CallableStatement`的`execute()`方法执行存储过程: ```java cs.execute(); ``` 6. **获取返回值**:对于输出参数,执行后可以从`...
在本文中,我们将深入探讨如何使用Apache CXF框架来处理JavaBean式的复合类型以及List集合类型的参数和返回值。CXF是一个开源的、强大的Web服务框架,它支持多种Web服务标准,包括SOAP、RESTful等,并且允许开发者以...
integer failNum 返回值为0,表示初始化成功,否则为失败 示例: xCom.init(1, 9600) 说明: a、在通常的串口通信中,还有数据位、停止位、奇偶校验位、电平控制等设置,为了简化应用,本Xtra默认设置为8位数据位...