Java中1000==1000为false而100==100为true

    public static void main(String[] args) {
        int  z1 = 0;
        int  z2 = 0;
        System.out.println(z1==z2);//TRUE

        Integer  a1 = -129;
        Integer  a2 = -129;
        System.out.println(a1==a2);// FALSE

        a1 = -128;
        a2 = -128;
        System.out.println(a1==a2);//TRUE
        a1 = 127;
        a2 = 127;
        System.out.println(a1==a2);//TRUE

        a1 = 128;
        a2 = 128;
        System.out.println(a1==a2);// FALSE
        // IntegerCache.java 缓存了从-128到127之间的所有的整数对象
        // 如果值的范围在-128到127之间,它就从高速缓存返回实例。
    }
import java.lang.reflect.Field;
public class Test318 {
    public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
        Class cache = Integer.class.getDeclaredClasses()[0];
        Field myCache = cache.getDeclaredField("cache");
        myCache.setAccessible(true);
        Integer[] newCache = (Integer[]) myCache.get(cache);
        newCache[132] = newCache[133];
        int a = 2;
        int b = a + a;
        System.out.printf("%d + %d = %d", a, a, b); //2+2=5
        }
}
时间: 2024-10-11 16:46:35

Java中1000==1000为false而100==100为true的相关文章

为什么在 Java 中128==128返回false,而127==127返回true呢?

为什么在 Java 中128==128返回false,而127==127返回true呢? 有这样一段代码 Integer a=127; Integer b=127; System.out.println(a==b); Integer c=128; Integer d=128; System.out.println(c==d); 运行结果为: true false 究竟是为什么呢? 如果两个引用指向相同的对象,它们在 == 表达式中是相等的:如果两个引用指向不同的对象,尽管它们拥有相同的内容即值,

奇怪的Java题:为什么1000 == 1000返回为False,而100 == 100会返回为True?

如果你运行如下代码: 1 2 3 4 Integer a = 1000, b = 1000;  System.out.println(a == b);//1 Integer c = 100, d = 100;  System.out.println(c == d);//2 你会得到以下运行结果: 1 2 false true 我们知道,如果两个引用指向同一个对象,那么==就成立:反之,如果两个引用指向的不是同一个对象,那么==就不成立,即便两个引用的内容是一样的.因此,结果就会出现false.

053、Java中使用for循环实现1~100的累加

01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public static void main(String[] args) { int sum = 0; // 保存总和 // 设置循环初始化条件current,同时此变量作为累加操作使用 // 每次执行循环体前都要进行循环判断(current <= 100) // 循环体执行完毕后会自动执行“current

【Todo】Java学习笔记 100==100 &amp; Reflection API &amp; Optional类详解 &amp; DIP、IoC、DI &amp; token/cookie/session管理会话方式

为什么1000 == 1000返回为False,而100 == 100会返回为True?   Link Java Reflection API:Link Java8 Optional 类深度解析: Link 深入理解DIP.DI及IoC容器: Link 3种会话管理的方式: Link

[转载] 在java中为什么变量1000 = 1000 返回false,但是100=100返回true?

ps:题目的意思是指定义相同内容的不同变量之间的==比较.如果直接比较(1000 == 1000)的结果是true. 运行以下代码: Integer a = 1000, b = 1000; System.out.println(a == b); Integer c = 100, d = 100; System.out.println(c == d); 结果是: false true 我们知道,如果两个引用指向不同的对象,即使对象拥有相同的内容时,他们用==比较的结果就是不相等(返回false).

为什么Java中1000==1000为false而100==100为true?

为什么Java中1000==1000为false而100==100为true? 这是一个挺有意思的讨论话题. 如果你运行下面的代码: 基本知识:我们知道,如果两个引用指向同一个对象,用==表示它们是相等的.如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同. 因此,后面一条语句也应该是false . 这就是它有趣的地方了.如果你看去看 Integer.Java 类,你会发现有一个内部私有类,IntegerCache.java,它缓存了从-128到127之间的所有的整数对象.

1000行代码徒手写正则表达式引擎【1】--JAVA中正则表达式的使用

简介: 本文是系列博客的第一篇,主要讲解和分析正则表达式规则以及JAVA中原生正则表达式引擎的使用.在后续的文章中会涉及基于NFA的正则表达式引擎内部的工作原理,并在此基础上用1000行左右的JAVA代码,实现一个支持常用功能的正则表达式引擎.它支持贪婪匹配和懒惰匹配:支持零宽度字符(如"\b", "\B"):支持常用字符集(如"\d", "\s"等):支持自定义字符集("[a-f]","[^b-

php实现只保留mysql中最新1000条记录

这篇文章主要介绍了php实现只保留mysql中最新1000条记录的方法和相关示例及数据库结构,十分的全面,有需要的小伙伴可以参考下. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?php mysql_connect("localhost","root","root"); mysql_select_db("test"); //保留最新的1000条记录 $

Java 中的泛型详解-Java编程思想

Java中的泛型参考了C++的模板,Java的界限是Java泛型的局限. 2.简单泛型 促成泛型出现最引人注目的一个原因就是为了创造容器类. 首先看一个只能持有单个对象的类,这个类可以明确指定其持有的对象的类型 class Holder1 { private Circle a; public Holder1(Circle a) { this.a = a; } Circle get() { return a; } } 上面的类的可重用性不怎么样,无法持有其他类型的任何对象,下面通过持有Object

Java中的多线程

对于直接继承Thread的类来说,代码大致框架是: 1 2 3 4 5 6 7 8 9 10 11 12 class 类名 extends Thread{ 方法1; 方法2: … public void run(){ // other code… } 属性1: 属性2: … } 先看一个简单的例子: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 /**  * @author Rollen-Ho