java类型比较_java 基本数据类型 ==和equals()比较

1.基本类型的存储

Java 8种基本类型都是存储在堆栈中,例:int i = 1;String str = "hello world";也是存储在堆栈中。

new基本类型的包装器类型和new String()都是存储在堆内存中。例Integer i = new Integer(1);String str = new String("hello world");

2.==和equels()比较的含义

1.==是比较对象的内存地址,基本类型就是比较值

2.java对象的equals()方法都是继承Object.equals(Object o)方法的。比较的内容其实就是使用了“==”比较对象内存地址。

public boolean equals(Object obj) {

return (this == obj);

}

java8种基本类型包装器类和String类都重写了equals()方法,先比较类型在比较值,例如Long.equals(Object obj)

public boolean equals(Object obj) {

if (obj instanceof Long) {

return value == ((Long)obj).longValue();

}

return false;

}

3.实例==和equels()比较

int int3 = 3;

Integer integer3 = new Integer(3);

Integer integer3_2 = new Integer(3);

Integer integer3_3 = 3;

Integer integer3_4 = 3;

Integer integer321 = 321;

Integer integer321_2 = 321;

int int321 = 321;

int int321_2 = 321;

Long long3 = 3l;

System.out.println(integer3==integer3_2); //false #1

System.out.println(integer3_3==integer3_4); //true #2

System.out.println(integer3==int3); //true #3

System.out.println(integer3_3.equals(integer3_4)); //true #4

System.out.println(integer321==integer321_2); //false #5

System.out.println(int321==int321_2); //true #6

System.out.println(long3==int3); //true #7

System.out.println(long3.equals(int3)); //false #8

#1  new两个Integer对象,分配内存在堆中,两个地址块不同

#2 Integer integer3_3 = 3;java编译后的代码为Integer integer3_3 = Integer.valueOf(3);

查看java Integer.valueOf(int)源码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);

}原来-128<=int<=127的值java栈中有缓存都指向同一个地址,不在这个范围内的int值都是new一个新的Integer,所以#2为true,#5为false

#3 基础类型和包装类运算时,包装类会拆包,所以就是两个值运算

#7 btye,short,int,long运算时,都会向上转型到同一类型运算

#8 equals()比较是先比较类型在比较值,类型不一样所以为false

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2014-06-14 21:28

浏览 2176

评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271915.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式操作系统的主要特点都有哪些

嵌入式操作系统&#xff08;EOS&#xff09;是指用于嵌入式系统的操作系统。嵌入式操作系统是一种用途广泛的系统软件&#xff0c;通常包括与硬件的底层驱动软件、系统内核、设备驱动接口、通信协议、图形界面、标准化浏览器等。嵌入式系统分为4层&#xff1a;硬件层、驱动层、…

java的继承实例_Java继承和多态实例

我们知道面向对象的三大特性是封装、继承和多态。然而我们有时候总是搞不清楚这些概念。下面对这些概念进行整理&#xff0c;为以后面向抽象的编程打下坚实的基础。封装的概念还是很容易理解的。如果你会定义类&#xff0c;那么相信你对封装的概念已经完全掌握了。下面定义的几…

【数据库】13种会导致索引失效语句写法

数据库的索引是保证数据快速查询的重中之重&#xff0c;以下13种会导致索引失效语句会导致你的SQL查询索引失效&#xff0c;具体如下&#xff1a;1、使用like关键字模糊查询时&#xff0c;% 放在前面索引不起作用&#xff0c;只有“%”不在第一个位置&#xff0c;索引才会生效&…

yii2史上最简单式安装教程,没有之一

作者&#xff1a;白狼 出处&#xff1a;www.manks.top/article/yii2_install 本文版权归作者&#xff0c;欢迎转载&#xff0c;但未经作者同意必须保留此段声明&#xff0c;且在文章页面明显位置给出原文连接&#xff0c;否则保留追究法律责任的权利。 最近有小伙伴私聊我&…

java static调用吗_Java中的static的使用

1.Java 中被static修饰的成员称为静态成员或类成员。它属于整个类所有&#xff0c;而不是某个对象所有&#xff0c;即被类的所有对象所共享、且优先于对象存在。静态成员可以使用类名直接访问&#xff0c;也可以使用对象名进行访问。使用 static 可以修饰变量、方法和代码块。2…

15个搞笑的程序员段子

1. 问答Q&#xff1a;你是怎么区分一个内向的程序员和一个外向的程序员的&#xff1f;A&#xff1a;外向的程序员会看着你的鞋和你说话时。Q&#xff1a;为什么程序员不能区分万圣节和圣诞节&#xff1f;A&#xff1a;这是因为 Oct 31 Dec 25&#xff01;&#xff08;八进制的…

盘点15个搞笑的程序员段子

1.车Delphi象吉普车&#xff0c;什么路上都能开&#xff0c;却在啥路上也开不好&#xff1b;PB就象卡丁车&#xff0c;只能在固定线路上开&#xff0c;到室外就有些不稳&#xff1b;VC象跑车&#xff0c;你开得起却买不 起&#xff0c;而且一旦发生故障&#xff0c;想修都找不到…

如何保证消息不被重复消费~~~~~(如何保证消息队列的幂等性)

分析&#xff1a;这个问题其实换一种问法就是&#xff0c;如何保证消息队列的幂等性&#xff1f;这个问题可以认为是消息队列领域的基本问题。换句话来说&#xff0c;是在考察你的设计能力&#xff0c;这个问题的回答可以根据具体的业务场景来答&#xff0c;没有固定的答案。 回…

SpringBoot:搭建第一个Web程序

本文简单介绍一下spingBoot搭建web程序的流程&#xff0c;希望对入门学习spingBoot的朋友有所帮助。本文采用的开发工具是IDEA。 1、打开IDEA&#xff0c;创建项目。 2、点击创建项目&#xff0c;进入下一步&#xff0c;具体按照画红框的操作。 3、点击下一步 4、点击下一步&am…

java method 注释_Java注解

Java注解注解概述3、注解3.1、注解&#xff0c;或者叫做注释类型&#xff0c;英文单词是&#xff1a;Annotation疑问&#xff1a;注解到底是干啥的&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;3.2、注解Ann…

盘点八个程序员必备的代码编辑器

一个好的代码编辑器不仅能使代码变得更美观&#xff0c;增强其可读性&#xff0c;同时也能迅速推进程序员的工作进程&#xff0c;延长代码的生命周期。 对于新手和有经验的程序员&#xff0c;推荐使用的代码编辑器也均有不同。小楼总结了一些好用的代码编辑器&#xff0c;还在纠…

C#OOP之二 变量和表达式

2.1 C#的基本语法 C#代码的外观和操作方式与C和Java非常相似。初看起来&#xff0c;其语法比较混乱&#xff0c; 不像书面英语和其他语言。但是&#xff0c;在C#编程中&#xff0c;使用的样式是比较清晰的&#xff0c;不用花太多的力气就可以编写出可读性很强的代码。 与其他语…

C#调用API弹出打印机属性对话框

调用api弹出打印机属性对话框 Author:vitoriatangFrom:Internet.NET Framework封装了很多关于打印的对话框&#xff0c;比如说PrintDialog, PageSetupDialog. 但是有的时候我们还需要关心打印机属性对话框&#xff0c;那么就可以调用API来解决这个问题。有几个API函数与之相关P…

SQLServer数据库获取重复记录中日期最新的记录

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

循环的时候去删除集合中的元素 java.util.ConcurrentModificationException

使用for循环&#xff0c;删除集合中的元素&#xff0c;会报错 java.util.ConcurrentModificationException 只能通过迭代器 iterator删除 1&#xff1a;在while循环中使用iterator迭代器删除集合中元素 2:在for循环中使用iterator迭代器删除集合中元素 3&#xff1a;使用for循…

计算机网络硬件设备组成笔记

网络是计算机或类似计算机的网络设备的集合&#xff0c;它们之间通过各种传输介质进行连接。无论设备之间如何连接&#xff0c;网络都是将来自于其中一台网络设备上的数据&#xff0c;通过传输介质传输到另外一台网络设备上。 本节将基于这个过程讲解网络的组成。 网卡 网卡也被…

java记事本复制粘贴_Java Swing 如何实现记事本中“编辑”菜单下的 剪切,复制,粘贴,删除,全选 功能...

这篇文字将要学习以下知识点&#xff1a;1.如何给JButton按钮添加鼠标点击事件监听器#1.addMouseListener(MouseListener l) 给JButton添加一个鼠标点击监听器l2.文本区控件JTextArea 中的方法(剪切&#xff0c;复制&#xff0c;粘贴&#xff0c;删除&#xff0c;全选 功能的…