`

Java 中数值变量赋值问题

    博客分类:
  • Java
 
阅读更多

 

写了一段判断数值相等判断方法的程序:

 

		//在-128~127 之外的数
		 Integer i1 = 200;
		 Integer i2 = 200;
		 System.out.println("i1==i2: "+(i1==i2));//false
		 // 在-128~127 之内的数
		 Integer i3 = 100;
		 Integer i4 = 100;
		 System.out.println("i3==i4: "+(i3==i4));//true
		 
		 Long l1 = 9L;//内存机制
		 Long l2 = 9L;
		 //实际上内存中l1只是一个long类型的变量,它存在于向stack(栈)中,数值并不在其中存放,
		 //它指向heap(堆)中另一块真正存放数值的内存,加L的目的就是为了让heap中也创建一块long类型所需要的内存,用来来放数值。
		 //所以说=前后两者其实是在不同的两块内存,只不过有个无形的指针将两者连接起来了。
		 System.out.println("l1 == l2: " + (l1 == l2));//true
		 //原因:http://www.2cto.com/kf/201305/215619.html
		 
		 Long t1 = new Long ("9");
		 Long t2 = new Long ("9");
		 //2个对象开辟的内存空间不同
		 System.out.println("t1 == t2: " + (t1 == t2));//false

 

 

结果:

i1==i2: false
i3==i4: true
l1 == l2: true
t1 == t2: false

 

看来Java 中的自动装箱/拆箱以及包装类变量赋值还是有些讲究的。

 

 i1, i2 不相等, i3,i4 相等的问题:

参考: http://www.cnblogs.com/shenliang123/archive/2012/04/16/2451996.html

为了加大对简单数字的重利用,java定义:在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象

而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象;
想到, 我们循环时经常用到的i= 0, 和list.get(0) ,等情况, 小数值确实利用率很高, 这么做的内存利用得到提高是不少的.
l1和l2 对象的问题 ,  9L 在内存中也是分配到一个地址, l1 和 l2 是引用同一个 9L  的,这点的机制和String 是一样的, 相同字符串常量的内存都是存放在堆中,
 t1 和 t2 分别创建了2个不同的内存对象, 其内存地址不同.
分享到:
评论

相关推荐

    通过yaml为json中的某个变量赋值

    例如,JSON区分数值(number)和字符串(string),而YAML中所有非空字符序列默认都是字符串。在转换过程中,需要特别关注这一点,避免因类型转换不当引起的问题。 在实际应用中,可能还需要处理诸如日期、时间、...

    java 给指定字符赋值

    综上所述,Java中的字符赋值涉及到变量声明、转义序列、Unicode编码、字符串与字符转换、字符操作以及I/O流等多个方面。在实际编程中,理解和熟练运用这些概念对于编写高效且可读性强的代码至关重要。

    Java变量初始化

    Java 变量初始化的时机是指在 Java 语言中变量的初始化过程,包括变量的声明、初始化和赋值的步骤。 Java 变量声明 在 Java 语言中,每个变量必须先声明,然后才能使用。声明变量时必须指定该变量的数据类型。...

    java 常量 变量 详细实例

    4. **全局变量**:在类的外部定义的变量,Java中不推荐使用全局变量,因为这可能导致命名冲突和数据安全问题。 声明变量时,需要指定其类型和名称,如: ```java int age = 25; // 声明一个整型变量age并赋值为25 ...

    java基础-变量常见错.docx

    4. **变量的赋值与变量的类型不匹配**:Java是强类型语言,变量的赋值必须与其声明的类型相匹配。例如: ```java int salary = 15000.50; // 编译错误,整型变量不能赋予浮点值 ``` 若需要赋浮点值,应声明为`double...

    java常量变量表达式

    Java是一种广泛使用的面向对象的编程语言,以其安全性、平台无关性和多线程能力著称。...通过理解这些基本概念,开发者可以开始编写Java程序,并利用常量、变量、表达式和其他语言特性来解决问题。

    Java中的常量和变量概念及定义.docx

    - **覆盖**:如果对同一变量赋值多次,则后一个值会覆盖前一个值。 ##### 4. 使用变量需要注意的事项 - **存在性**:使用变量之前,必须确保该变量已经被声明。 - **值的存在**:变量必须有值才能被使用(除了形式...

    8.java变量.zip

    在Java编程语言中,变量是程序的基本构建块,用于存储数据。它们是程序记忆的单元,可以持有各种类型的值,如数字、字符、布尔值甚至是对象。本资料包"8.java变量.zip"聚焦于Java中的变量,特别是通过8.java变量....

    深入Java关键字null

    #### 三、Java默认给变量赋值 当定义变量时,如果没有显式地给变量赋值,Java会在运行时自动为其赋予默认值。这些默认值的规则如下: - 整数类型(如`int`、`byte`、`short`、`long`)默认值为`0`。 - 浮点数类型...

    Java基础(变量、运算符).docx

    Java编程语言的基础语法中,变量扮演着至关重要的角色。变量可以理解为内存中的一个小盒子,用于存储各种类型的数据。在计算机科学中,数据是通过内存的存储单元来管理的。最基本的存储单元是位(bit),8个位组成一...

    Java开发零基础篇:Day02 变量和运算符.pdf

    例如,可以定义byte类型的变量并赋值为1,short类型的变量赋值为2,以此类推。注意,对于long类型的数据,要在数值后加上'L'后缀,对于float类型的数据,要在数值后加上'F'或'f'后缀,以区分于double类型。 5. 变量...

    Java 变量类型的知识分享

    在Java中,变量是用来存储数据的容器,理解不同类型的变量对于编写有效的代码至关重要。以下是对Java变量类型的详细讲解: 1. 基本数据类型(Primitive Data Types) Java中的基本数据类型分为两大类:数值类型和...

    JAVA程序设计课件-变量的数据类型.pptx

    在为long类型变量赋值时,通常需要在数值后加上“L”或“l”,以表明其为长整型,但若数值在int范围内,也可以省略。 其次,浮点数类型包括单精度浮点数(float)和双精度浮点数(double)。float占用4字节,精度较...

    大数据必学Java基础(十六):赋值运算符

    赋值运算符`=`在Java中扮演着核心角色,它用于将右侧的值传递给左侧的变量。例如: ```java int age = 19; ``` 在这个例子中,`19`被赋值给`age`变量。赋值运算符`=`右侧的表达式计算完成后,其结果将存储到左侧的...

    第章Java变量和常量ppt课件.pptx

    Java中的常量有多种类型,包括数值常量(如十进制、八进制、十六进制的整数和实数)、布尔常量(true和false)、字符常量(用单引号包围)和字符串常量(用双引号包围)。例如,`double pi = 3.14;`定义了一个双精度...

    java入门教程:数据类型_Java变量的声明.pdf

    - 对于基本类型的数值变量(byte, short, int, long, float, double),它们会被初始化为0或0.0。 - char类型的变量会被初始化为Unicode的空字符 '\u0000'。 - boolean类型的变量会被初始化为false。 - 引用类型的...

    java基本语法—字符串与数值型数据转换、从键盘输入数据

    本实验报告主要讲述了 Java 基本语法中字符串与数值型数据转换、从键盘输入数据的相关知识点。下面是本实验报告的详细内容: 一、实验目的 在本实验中,我们将学习掌握流程控制中的 if 条件语句、for 循环语句、...

    java 成员变量与局部变量的区别(csdn)————程序.pdf

    Java编程语言中有两种主要的变量类型:成员变量和局部变量,它们在定义、作用范围、默认值、内存位置以及生命周期方面都有所不同。 首先,**定义的位置**是两者最基本的区别。成员变量,也称为实例变量,是定义在类...

    java入门教程:数据类型_Java变量的声明.docx

    本文将深入探讨 Java 中的数据类型以及如何声明变量。 Java 提供了八种基本数据类型,它们分为两大类:整型和浮点型,以及两种布尔类型和一种字符类型。这些数据类型包括: 1. 整型:byte、short、int 和 long,...

Global site tag (gtag.js) - Google Analytics