JAVA基础(一)——基本数据类型、==与equals、hashcode用法

本文介绍了JAVA的基础知识,包括基本数据类型如整数(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)及其取值范围。讨论了==和equals的区别,以及hashCode的作用和约定。此外,还涉及了自动装箱、拆箱以及基本类型之间的转换,包括自动转换和强制转换的规则。最后提到了数据溢出的问题,强调了类型转换时需要注意的精度损失和潜在风险。" 88599058,8273098,CentOS7安装OpenJDK1.8.0与Tomcat8.5教程,"['Linux操作系统', 'Java开发', 'Web服务器', 'Tomcat', '系统管理']
摘要由CSDN通过智能技术生成

Java学习:https://www.runoob.com/java/java-tutorial.html
Java面:https://zhuanlan.zhihu.com/p/64147696
数据结构学习: http://data.biancheng.net/intro/
自动拆箱和自动装箱定义:
自动装箱是将一个java定义的基本数据类型赋值给相应封装类的变量。
拆箱与装箱是相反的操作,自动拆箱则是将一个封装类的变量赋值给相应基本数据类型的变量。

== 和 equals 的区别是什么?
(1)功能不同
"=="是判断两个变量或实例是不是指向同一个内存空间。
"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。
(2)定义不同
"equals"在JAVA中是一个方法。
" == "在JAVA中只是一个运算符号。
凡是比较基本类型只能用“ == ”, 比较结果你看到的字面值相等就会相等。基本类型不是对象所以不存在用equals比较。
凡是比较引用类型(对象),==比较的是两个引用是不是指向同一个内存地址, equals比较的是两个引用的字面值是不是相同。

基本类型的包装类型是对象类型,所以除非两个相同字面值的引用指向同一内存地址,值才会相等,这样用等号或equals比较都会得出true。
凡是两个引用都用了new初始化,那==比较的结果都只会是false, equals比较结果为true。

hashCode() 方法用于返回字符串的哈希码,也称为散列码,它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode() 定义在JDK的Object.java中,这就意味着Java中的任何类都包含有hashCode() 函数。
通过调用hashCode()方法获取对象的hash值。

关于hashCode和equal是方法是有一些常规协定 :
(1)两个对象用equals()比较返回true,那么两个对象的hashCode()方法必须返回相同的结果。
(2)两个对象用equals()比较返回false,不要求hashCode()方法也一定返回不同的值,但是最好返回不同值,提高哈希表性能。
(3)重写equals()方法,必须重写hashCode()方法,以保证equals方法为true时两个对象hashcode返回相同的值。
两个对象的hashCode相等,equals不一定返回true, 两个类不一定相等。 因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。
equals返回true, 说明是同一个对象, 那么hashCode一定相同;
equals返回false, 那么hashCode有可能相等,也有可能不等。

JAVA基本数据类型
在生活中,使用的数据有大有小,有整数,也有小数,同时也会使用字母,或者汉字表示特定含义。在Java中根据数据的不同特点,数据也分为不同的类型。 Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配 了不同大小的内存空间。
基本类型:占用空间固定,保存在栈中;
引用类型:占用空间不固定,保存在堆中。
在这里插入图片描述
在这里插入图片描述

1.数据类型详细介绍

(1)整数类型(byte、short、int、long)
虽然byte、short、int、long 数据类型都是表示整数的,但是它们的取值范围不一样。
①byte 的取值范围(8位):-128~127(-2的7次方到2的7次方-1)
②short 的取值范围(16位):-32768~32767(-2的15次方到2的15次方-1)
③int 的取值范围(32位,4字节):-2147483648~2147483647(-2的31次方到2的31次方-1)
④long 的取值范围(64位,8字节):-9223372036854774808~9223372036854774807(-2的63次方到2的63次方-1)
Java各整数类型有固定的取值范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。
综上可以看出 byte、short 的取值范围比较小,而long的取值范围是最大的,所以占用的空间也是最多的。int 取值范围基本上可以满足我们的日常计算需求了,所以 int 也是我们使用最多的一个整型类型,Java语言整型常量默认为int型,声明long型常量后面需加" L "或 " l "。

(2)浮点型(float、double)
float 和 double 都是表示浮点型的数据类型,它们之间的区别在于精确度的不同。Java语言浮点类型常量默认为double型
①float(单精度浮点型)(32位)的取值范围: -3.4E+1038 ~ 3.4E+1038(E+1038 表示乘以10的1038次方)
②double(双精度浮点型)(64位)的取值范围:-1.79E+10308 ~ 1.79E+10308(E+308 表示乘以10的10308次方)
double 类型比float 类型存储范围更大,精度更高。通常的浮点型数据在不声明的情况下都是默认double型的,在数值后可加"D"或"d",作为double类型的标识;如果要表示一个数据是float 型的,则需在数据后面加上 " F "或 " f " 。浮点型的数据是不能完全精确的,有时候在计算时可能出现小数点最后几位出现浮动,这是正常的。

   double num;          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值