文档章节

Java中基本类型、对象类型及数据间的比较(equals()和==)

YuanyuanL
 YuanyuanL
发布于 2017/03/02 15:16
字数 1259
阅读 490
收藏 0

Java的数据类型分两种:

1. 8个基本类型(原始类型):
四个整数型
(1)byte:byte数据类型是8位;
(2)short:short数据类型是16位;
(3)int:   int数据类型是32位;
(4)long:long数据类型是64位;
两个浮点型
(5)float:float数据类型是32位(单精度浮点数);
(6)double:double数据类型是64位(双精度浮点数);
一种布尔型
(7)boolean:boolean数据类型是表示一位的信息,大小没有明确指定,只有true或false;
一种字符类型
(8)char:char数据类型是16位(Unicode字符);


2. 对象类型(封装类):
    Byte,Short, Integer,Long; 
    Float,Double,
    Boolean,
    Character,   
    String,
    以及其它一切java提供的,或者你自己创建的类。

比如 :Long是Java为long提供的封装类,一般封装类的名字首写是数值名的大写开头。

什么叫封装类? 在java中有时候的运算必须是两个类对象之间进行的,不充许对象与数字之间进行运算。所以需要有一个对象,这个对象把数字进行了一下包装,这样这个对象就可以和另一个对象进行运算了。

比如我们也可以定义一个类:
class Long 
{
    int i=0;
    public Long (int i)
    {
        this.i=i;
    }
}
这样这个Integer就是一个包装类,他包装了一个整数值,然后可以在里面写一些运算符重载的方法使它支持某些运算。这个时候可以赋值: 
Long it = new Long(10);
现在变量it就是一个对象,不是一个数字。

long 是长整型,再怎么长本身也是整型,12.10的整形部分是12,当然结果是12。

byte: 八位整数 -128——127,可用来节省内存的使用。
short: 16位整数 -32768——32,767,也比较省内存。
int: 32位整数 -2,147,483,648——2,147,483,647,一般来说整数都够用了
long: 64位整数 -9,223,372,036,854,775,808—— 9,223,372,036,854,775,807,一般不需要用
float: 32位浮点,如果浮点需要节省内存用这个。
Double: 64位浮点,一般非整数浮点可用这个。
注意:float和double都不是精确的,如果要储存钱一类的必须精确的,用java.math.BigDecimal。

数据间的比较(equal()与==间的区别)

封装类和原始类型的行为完全不同,并且它们具有不同的语义,具有不同的特征和用法,它们包括:大小和速度问题,存储的数据结构类型,用作某个类的实例数据时所指定的缺省值。
对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。
如:int 一般做为数值参数就够了,Integer 一般做类型转换的时候用的较多。
基本类型比较:   if (a==b) 模式
对象类型比较:  对象.equals(对象)模式, 比较的是地址,不是比较内容。
注意:equals不适合比较基本类型。

变量的值只能通过赋值表达式来改变;对象的内容只能通过自身的方法或属性来改变。 注意基本数据类型不包括:String String str = null; //将空内存地址(null)赋值给String类型的变量,变量名为str。朴素的说法是变量str的值为null。对于引用类型的变量而言,赋值操作只是将对象的内存地址保存到变量中。也就是说引用类型的变量值是对象的内存地址而不是对象的内容 String str1 = "abc"; String str2 = new String("abc");
上述两种赋值操作本质上没有任何区别,最大的区别是生成对象的方法不同(这一点与赋值操作无关)。对于变量而言,其值仍然是所指对象的内存地址。

		String p1 = "lyy";
		String p2 = "lyy";
		String p3 = p1;
		System.out.println((p1==p2) + "****" + (p1.equals(p2)));//true****true
		System.out.println((p1==p3) + "####" + (p1.equals(p3)));//true****true		
		String s1 = new String("lyy");
		String s2 = new String("lyy");
		String s3 = s1;
		System.out.println((s1==s2) + "****" + (s1.equals(s2)));//false****true
		System.out.println((s1==s3) + "####" + (s1.equals(s3)));//true####true
String通过常量方式来赋值时,地址和内容相同,通过==和equal比较结果相同;
通过对象方式赋值时,内容相同但地址不同,所以用==比较的结果是false,通过equal比较结果是true。


		int i1 = 127;
		int i2 = 127;
		int i3 = 128;
		int i4 = 128;
		System.out.println(i1==i2);//true,无equal语法
		System.out.println(i3==i4);//true,无equal语法
		Integer k1=127;
		Integer k2=127;
		Integer k3=128;
		Integer k4=128;
		System.out.println((k1==k2) + "####" + (k1.equals(k2)));//true####true
		System.out.println((k3==k4) + "****" + (k3.equals(k4)));//false****true
int是基本类型可使用==来比较,无法使用equal来比较;
Integer是对象类型,当取值在-128到127之间时,这些值都存储在常量池中,地址和内容相同,可以通过==和equal来比较,超出的部分则是通过对象的方式存储,地址不同但内容相同,所以equals比较结果是true。

© 著作权归作者所有

共有 人打赏支持
YuanyuanL

YuanyuanL

粉丝 153
博文 325
码字总数 190992
作品 0
济南
部门经理
私信 提问
scala中的==、equals、eq

scala中equals方法和==是检查值是否相等,而eq方法检查的是引用是否相等。 Scala 的==与Java的有何差别 Java 里的既可以比较基本类型也可以比较引用类型。对于基本类型,Java 的==比较 值比较...

张欢19933
2018/04/27
0
0
Scala对象比较==、eq、ne与java==、equals()

如果你想比较一下看看两个对象是否相等,可以使用或者==,或它的反义 !=。(对所有对象都适用,而不仅仅是基本数据类型) scala> 1 == 2res24: Boolean = falsescala> 1 != 2res25: Boolean...

hanzhankang
2014/02/16
0
5
你不知道的 equals 和 ==

先来看一道 equals和 == 相关的面试题吧。 先告诉你答案是 true,true,false,true。 i1 == i2 和 i1.equals(i2) 这两个都是 true,大多数人应该可以答对。后面的 i3 == i4 和 i3.equals(i4...

Wizey
2018/08/17
0
0
scala语言与java的区别

scala支持关联映射,如可以用(key -> value)表示一个键值对 scala中的所有类型都是对象,包括基本数据类型 scala中的case语句用来判断接收的消息,比java中的switch...case...更专注 receiv...

jhonephone
2014/09/03
0
0
JAVA 中 equals 和 “==”

进行字符串比较时候: == 比较的是两个字符串内存地址的数值是否相等,属于数值比较; equals() 因为 String 重写了 equals 所以比较的是两个字符串的内容,属于内容比较。 总结:java 中 eq...

几个栗子
2017/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

matlab-线性代数 将矩阵变成列、行向量

  matlab : R2018a 64bit     OS : Windows 10 x64 typesetting : Markdown    blog : my.oschina.net/zhichengjiu    gitee : gitee.com/zhichengjiu   将矩阵变成列、行向量(按照......

志成就
13分钟前
0
0
开始使用Filebeat

认识Beats Beats是用于单用途数据托运人的平台。它们以轻量级代理的形式安装,并将来自成百上千台机器的数据发送到Logstash或Elasticsearch。 (画外音:通俗地理解,就是采集数据,并上报到...

北极南哥
15分钟前
0
0
shell getopts template

!/bin/bash# ------------------------------------------------------------------# [Author] Title# Description# ---------------------------------------------------......

易野
31分钟前
0
0
DHCP服务原理与搭建(Linux系统+路由器,二选一方案)

大家都知道上网的最基本前提是要在终端上设置IP、子网掩码、网关、DNS等地址信息,在家里或者在办公室很多时候打开电脑后发现就可以上网,并没有手动设置IP、掩码、DNS地址也能上网,这是什么...

老率的IT私房菜
40分钟前
5
0
GitLab的安装及使用教程

首页 新随笔 管理 随笔 - 575 文章 - 0 评论 - 27 GitLab的安装及使用教程 1、配置yum源 vim /etc/yum.repos.d/gitlab-ce.repo 复制以下内容: [gitlab-ce] name=Gitlab CE Repository base...

rootliu
48分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部