JAVA的基本数据类型与其包装类

JAVA的基本数据类型与其包装类

任何一个编程语言的数据类型都是重要的细节,很多代码往往可能由于数据类型不一致而报错

基本数据类型

整数型:byte,short,int,long
浮点型:float,double
字符型:char
布尔型:boolean

整数型

整数型用来存储整数数值,没有小数部分的数值,如十进制,八进制,十六进制数
注意:

  • 除了数字0,不能以0作为其他十进制的开头
  • 八进制,如0123(转换为十进制为83),八进制必须以0开头
  • 十六进制,必须以0x开头

整数型数据类型取值范围:

数据类型内存空间取值范围
byte8位-128~127
short16位-32768~32767
int32位-2147483648~2147483647
long64位-9223372036854775808~9223372036854775807

浮点型

浮点型表示有小数的部分,java语言中浮点分为单精度浮点(float)和双精度浮点(double)
在默认的情况下,小数都被认为是双精度浮点类型,若使用float类型,则需要在小数后面添加F或者f
浮点型数据类型取值范围:

数据类型内存空间取值范围
float32位1.4E-45~3.4028235E38
double64位4.9E-324~1.7976931348623157E308

举例

float f1 = 13.23f;
double f2 = 4565.12d
double f3 = 456445.1245

字符类型

char 用于存储单个字符,占用16位(两个字节)的内存空间,定义字符类型时,需要用单引号表示,如‘s’表示一个字符,但是“s”则表示一个字符串
使用char关键字可以定义一个字符变量
例如:

char x = 'a';
// 由于a在unicode表中的排序为97,因此也可以写为
char x = 97;
转义字符

转义字符是一种特殊的字符变量,它使用“\”开头,转义字符具有特定的含义,不同于字符原有的意义
部分转义字符

转义字符含义
\t垂直制表符,将光标转移到下一份制表符的位置
\r回车

布尔类型

布尔类型又称为逻辑类型,只有true和false两种
分别代表逻辑中的真和假,布尔值不能和整数类型进行转换,一般用作判断条件

数据类型转换

类型转换是将一个值的类型转换为另外一种类型的过程,例如可以将string类型的“123”转换为整数型的123
注意:
如果从低精度转向高精度,则不会有数据的益处,如果从高精度转向数据的低精度,则会有信息的丢失,有可能会有失败

隐式转换

由低精度向高精度的转换,系统将自动执行,这些类型按照精度从低到高的排列为
byte<short<int<long<float<double
举例

int x = 50;
float y = x;

显式转换

将高精度转换为低精度时,必须使用显式类型转换运算(又称为强制类型转换)
语法如下:
(类型名)要转换的值
举例:

int a = (int)10.12; // 输出为10
long y = (long)40.6f // 输出为40

包装类

java是一种面向对象的语言,java中的类把方法和数据连接在了一起,构成了一种数据类型的处理单元,为了能够将基本类型视作对象进行处理,并能连接相关的方法,java为每一个基本类型都提供了包装类,如int的包装类Integer,这样就可以把基本类型转换为对象进行处理。
java.long包中的Integer类、Long类可以将基本类型int,long封装为一个类,由于类包含的方法基本相同,我们直接介绍其中的Integer
Integer类在对象中包装了一个基本类型int的值,并且提供了很多的方法,能够在int和string之间进行转换

构造方法:
在这里插入图片描述
区别:

  • 原理
    int 是基本类型,直接存数值
    Integer是类,产生对象时用一个引用这个对象
  • 位置
    在函数中定义的一些基本类型的变量都是在函数的栈内存中分配
    而对象是在存储堆内存中
    在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配

举例:

Integer a = 0;
Integer b = 0;
System.out.println(a == b); 
// true

当我们判断两个Integer类时,会调用valueOf()方法
返回一个 Integer实例表示指定的 int值。此方法在范围内的缓存值为- 128至127包含,并可能缓存在此范围以外的其他值。

int a = 0;
Integer b = 0;
System.out.println(a == b); // true

当比较基本类型和包装类的时候,包装类会进行自动拆箱,此时就类似与int类型的两个值进行比较

static Integer c;
public static void main(String[] args) {
        int d = c;
} // NullPointerException

当直接定义一个对象(Integer)时,此时并没有对其进行赋值,所以对象并没有任何的指向,而这个时候如果和基本数据类型进行相关操作,包装类会进行自动拆箱,而此时包装类i指向Null,这时,会报出空指针异常的警告,当改为

static Integer c = 1;
public static void main(String[] args) {
        int d = c;
        }

则不会有相关的问题出现。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值