- 浏览: 98499 次
- 性别:
- 来自: 无锡
文章分类
最新评论
// Long类型判断相等时,比如Long a = 10L, Long b = 10L;习惯是判断a == b; Long a = 10L; Long b = 10L; if(a == b) { // true System.out.println("aike1"); } Long c = 128L; Long d = 128L; if(c == d) { // false System.out.println("aike2"); } if(c.valueOf(12) == d.valueOf(12)) { // true System.out.println("aike3"); } if(c.valueOf(128) == d.valueOf(128)) { // false System.out.println("aike4"); } // 为什么等于128时就不相等呢? // 查看Java源码Long.class private static class LongCache { private LongCache(){} static final Long cache[] = new Long[-(-128) + 127 + 1]; static { for(int i = 0; i < cache.length; i++) cache[i] = new Long(i - 128); } } public static Long valueOf(long l) { final int offset = 128; if (l >= -128 && l <= 127) { // will cache return LongCache.cache[(int)l + offset]; } return new Long(l); } /*原来是因为Long中有一个静态的内部类LongCache,专门用于缓存-128至127之间的值,一共256个元素。 如果仅仅是缓存下来而不去使用那么就没有任何意义。 valueOf(long l)就是使缓存派上用场的方法,它会判断传入的参数是否在-128-127之间,如果是则直接从缓存中返回对应的引用,否则新创建一个Long的实例。 对于新创建的Long实例, ==比较是否为同一对象, 所以大于127就不相等了。*/ // 判断方法 使用equals Long重写了equals方法,如下: public boolean equals(Object obj) { if (obj instanceof Long) { return value == ((Long)obj).longValue(); } return false; } 它是先通过.longValue()方法获取Long对象的基本类型long的值之后再做比较的。 但是我们用longValue比较时容易忘记后面一个包装类调longValue方法 所以,最好还是使用equals进行比较。也可以直接用.longValue()比较
发表评论
-
java 堆栈
2018-07-24 22:59 435java的内存分为两类 : 堆 ... -
初始化ArrayList, 默认长度10
2018-07-10 17:54 1904// 在初始化ArrayList的时候没有指定初始化长度的话 ... -
循环往list中add对象却总是add的是一个对象
2017-11-11 16:53 19401. 在new 一个对象的时候,对象的ID是唯一确定的;将对象 ... -
变量定义的初始化顺序
2017-11-04 18:05 476//#java编程思想P94 //在类的内部, 定义变量 ... -
JavaBean解释
2017-09-07 15:05 499Spring如何知道setter方法?如何将值注入进去的呢?其 ... -
log4j2配置
2017-08-31 18:22 435//lib log4j-core-xx.jar lo ... -
java为什么不需要sizeof()
2017-07-21 13:51 374在C和C++中,sizeof()操作符可以告诉你为数据项分配的 ... -
回车换行 \r\n
2017-07-06 16:15 405\r就是"回到行首",\n就是" ... -
基本类型直接存储“值”,置于堆栈中。 new将对象存储在“堆”中。
2017-07-04 19:07 669基本类型置于堆栈中,更加高效。 其他java对象存储在堆中 -
Java中如何遍历Map对象的4种方法
2017-05-26 16:42 449http://blog.csdn.net/tjcyjd/art ... -
初始化List泛型时,list为null还是为空?应该是空(size()=0)
2017-04-13 17:29 691List<Object> list = new A ... -
String的拼接
2017-03-21 11:01 456当使用+拼接字符串时,会生成新的String对象,而不是向原有 ... -
判断两个参数的值是否相同
2017-02-06 17:00 539private boolean isValueSame(Obj ... -
检查数组中是否包含特定值(Check if an array contains a certain value)
2017-01-10 10:19 348String[] stringArray = { " ... -
JSP中java代码引用map类
2016-11-04 12:14 505<% java.util.Map m = new ja ... -
批量命名变量名(无法确定字符串数组长度)
2016-11-04 12:00 463String a = "a b c"; ... -
null和""以及==与equals的区别
2016-08-11 17:59 401String str1 = null; str引用为空 ... -
String、StringBuffer与StringBuilder详解
2016-08-18 14:20 4521.三者在执行速度方面的比较:StringBuilder &g ... -
java生成当前日期格式设置
2016-08-03 14:04 513package com.grace.test; ... -
Eclipse/Myeclipse生成serialVersionUID方法
2016-08-03 13:54 589serialVersionUID作用: 序列化时为了保持 ...
相关推荐
Java判断Long类型的方法和实例代码 Java是一种流行的编程语言,广泛应用于安卓开发、Web开发、企业软件开发等领域。在Java编程中,我们经常需要判断变量的类型,特别是判断Long类型,因为Long类型是Java中的一种...
Java中long类型与Long类型的区别和大小比较详解 在Java中,long类型和Long类型都是用于表示数字的数据类型,但是它们之间存在着一定的区别。long类型是基本数据类型,而Long类型是对象类型,本文将通过示例代码详细...
"Java 判断数组是否相等的方法示例" Java 中判断数组是否相等的方法示例是指在 Java 编程语言中检查两个数组是否完全相同的方法,这两种方法都可以实现数组的比较。 第一种方法:使用 Arrays.equals() 方法 ...
Java判断2个List集合是否相等(不考虑元素的顺序) Java是一种面向对象的编程语言,它提供了许多有用的集合类来存储和操作数据,其中List集合是最常用的集合之一。在实际开发中,我们经常需要判断两个List集合是否...
### Java判断题知识点详解 #### 1. Java程序中的起始类名称必须与存放该类的文件名相同。(正) **解析**:这是正确的。在Java中,包含`public`类的源文件名必须与该类名完全相同,包括大小写。如果一个Java程序...
这个程序适合Java初学者学习,它涵盖了基本的数据类型转换、字符串操作和条件判断,这些都是编程基础中的重要部分。同时,通过解决回文数字问题,可以帮助初学者理解和实践这些概念。在学习过程中,学生可以通过调试...
总的来说,理解和熟练运用BigDecimal是每个Java开发者必备的技能之一,特别是在处理货币计算、财务计算等场景时,能够避免因为浮点数精度问题导致的错误。在使用BigDecimal时,一定要注意其性能开销,因为它比基本的...
比较位模式后再转换回`Double`,可以更精确地判断两个`Double`值是否相等。 总结来说,当在Java中处理`Double`类型的数值比较时,应避免直接使用大于或小于符号,而是利用`Double.compare()`或`doubleToLongBits()`...
基本数据类型包括整型(如`byte`, `short`, `int`, `long`)、浮点型(`float`, `double`)、字符型(`char`)和布尔型(`boolean`)。引用数据类型则包括类(class)、接口(interface)和数组,它们存储的是对象的...
例如,如果输入的整数超过了 `int` 类型的最大值,需要使用 `long` 类型来存储。此时,`String.valueOf()` 会自动处理类型转换,但仍需要注意在比较时使用 `Long.toString()` 和 `Long.parseLong()`。此外,对于负数...
1. 数据类型:Java有八种基本数据类型:byte、short、int、long、float、double、boolean、char。 2. switch语句:switch语句可以作用在byte、short、int、char上,但不能作用在long和String上。 3. Math.round...
在Java编程语言中,`Long` 和 `Integer` 是两种包装类型,用于封装基本类型 `long` 和 `int` 的值。在处理这些包装类型时,开发者常常会遇到一些常见错误,尤其是涉及到对象比较的时候。以下是一些关于 `Long` 和 `...
需要注意的是,浮点数之间的比较不能直接使用“==”,因为浮点数的精度问题可能导致误判,通常使用`Math.abs(x - y) 精度阈值`来判断两个浮点数是否近似相等。 4. 类型转换: Java的数据类型转换分为自动类型转换...
这些知识点是Java开发者经常遇到的面试问题,涉及Java的基本特性、数据类型、类和对象、字符串处理等核心概念。对于准备参加面试的人来说,理解这些知识点是非常必要的,它们可以帮助面试者更好地展示自己的Java知识...
### Java自学宝典第二章:数据类型 #### 2.1 数据类型介绍 在Java中,数据类型是用来定义变量能够存储的数据种类。根据其性质,数据类型可以分为两大类:基本数据类型和引用数据类型。 ##### 2.1.1 基本数据类型 ...
基本类型包括整数类型(int、short、long)、浮点类型(float、double)、字符类型(char)、布尔类型(boolean)。引用类型包括数组、类、接口等。 变量 在 Java 中,变量用于存储数据。变量包括基本类型变量和...
Java 中有八种基本数据类型:byte、short、int、long、float、double、char、boolean。其中,整数类型包括 byte、short、int、long,浮点数类型包括 float 和 double,字符类型包括 char,布尔类型包括 boolean。 ...
- 当两个对象相等时(通过`equals()`方法判断),它们的`hashCode()`方法必须返回相同的整数值。 - 如果两个对象的`hashCode()`相同,并不一定意味着它们是相等的;也就是说,`hashCode()`可能会发生碰撞。但是,...