写了一段判断数值相等判断方法的程序:
//在-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个不同的内存对象, 其内存地址不同.
相关推荐
本实验报告主要讲述了 Java 基本语法中字符串与数值型数据转换、从键盘输入数据的相关知识点。下面是本实验报告的详细内容: 一、实验目的 在本实验中,我们将学习掌握流程控制中的 if 条件语句、for 循环语句、...
Java中常量的分类: 1,整数常量。所有整数 2,小数常量。所有小数 3,布尔(boolean)型常量。较为特有,只有两个数值。true false。 4,字符常量。将一个数字字母或者符号用单引号( ' ' )标识。 5,字符串常量。...
localVSmember.java 局部变量与成员变量同名问题示例 onlyTest.java 对象传值示例 otherClass.java 从类的外部访问对象的成员 showInstVar.java 演示不同的对象拥有不同的成员变量 showMain.java 演示main方法...
2. **变量**:在Java中,变量用于存储数据。在声明变量时,需要指定变量的数据类型,如int、double、boolean等。变量可用于存储数值、字符、布尔值等各种类型的数据。 3. **数据类型**:Java提供了两种数据类型:...
(2) 为myValue对象中的value域赋值10 (3) 使用getValue()方法获得myValue对象中的数据并将它们打印在屏幕上 class MyValue { private int value; public void setValue(int x) { value=x; } public...
JAva基本的数据类型和基本操作相关源代码打包,像一些标识符、变量、赋值语句和赋值表达式、算术运算符、数值类型转换、字符数据类型及其运算、特殊字符的转义序列表示、字符型char数据与数值型数据之间的转换、从...
Java变量、标识符、数据类型及其转换一、变量的概念二、Java常用数据类型(1)数值(2)非数值三、不同进制的整数四、基本运算符五、类型转换问题 一、变量的概念 variable — 变量是程序执行时,内存中的存储单元. ...
在这道题目中,我们需要使用 Java 的基础语法,例如变量声明、赋值、运算符等。同时,我们还需要使用浮点数运算来计算分数的值。最后,我们使用 for 循环来遍历从 1 到 100 的所有整数,并计算相应的分数值。 2. 从...
char 属于 Java 中的字符型,占 2 字节(16bit),可以赋值单字符以及整型数值,变量初始化无默认值。包装类为 Character。 例如:char a = 'a';char a = '中';char a = 12; // 取值范围 0~65536,因为 char 类型在...
由于实际开发中这样的类型转换很多,所以Java语言在设计时,没有为该操作设计语法,而是由JVM自动完成。 转换规则 从存储范围小的类型到存储范围大的类型。 具体规则为: byte→short(char)→int→long→float→...
13. Java语言中的浮点型数据根据数据存储长度和数值精度的不同,进一步分为哪两种具体类型,各占二进制的多少位? 16.字符串 ”\’a\’” 的长度是( )3 13. float 32位、double 64位 24.表达式2*5/2.5、1.0/2*5、...
基本程序设计中,变量声明是告知编译器根据数据类型为变量分配合适的内存空间,变量在使用前必须被赋值。命名常量是来表示从不改变的永久数据,final int SIZE=20;小写字母命名变量和方法类:每个单词的首字母大写...
清楚说明了java三大特性: 抽象:处理各种问题的第一步,把具体的问题与解决问题的方法结合起来,这就是抽象的过程. Java常见的访问控制修饰符: Public :到处都可以访问,不受包和父子类关系的限制 默认: 只...
Java是一种强类型语言,这意味着在Java中,每个变量都必须先声明其数据类型,然后才能使用。Java的数据类型可以分为两类:基本数据类型和引用数据类型。基本数据类型包括byte、short、int、long、float、double和...
3.5.2 变量赋值和初始化 3.5.3 常量 3.6 类型转化 3.6.1 数值类型之间的转换 3.6.2 强制类型转换 3.7 运算符 3.7.1 算术运算符 3.7.2 关系运算符 3.7.3 逻辑运算符 3.7.4 位运算符 3.7.5 自动递增和递减 ...
34. Java中的String类的对象既可以是字符串常量,也可以是字符串变量。【正确】 35. 容器是用来组织其他界面成分和元素的单元,它不能嵌套其他容器。【正确】 二、选择题 1. 关于被私有保护访问控制符private ...
在简单变量中存放的是数值。 可以构造多个构造方法,但多个构造方法的参数表一定不同,参数顺序不同即属于不同的构造方法: public student(string name,int a){ } public student(int a,string name){ } 为两个...
System.out.println("最大值为数值中的第"+maxindex+"个数。"); //排序使用双重循环 冒泡排序,从小到大派寻 for(i=1;i;i++) { for(j=0;j;j++) { if(a[j]>a[j+1]) { int temp;//临时...
A) 定义接口的关键字为interface,接口中可以定义变量,但是必须同时为该变量赋值,接口中的方法默认全部为public类型。 B) 实现接口的关键字是implements,其后可以跟多个接口的名字,即实现多继承。一个类实现了...
实例154 使用静态成员变量计算内存中实例化的对象数目 239 实例155 实现加减乘除的方法 240 8.3 面向对象的设计模式 241 实例156 Singleton单例模式 242 实例157 招聘(简单工厂模式) 243 ...