java基本数据类型

java基本数据类型


java数据类型简述

  • 1,Java是一种强类型语言,一共有8种基本类型,分别是4种整形、2种浮点型、1种字符类型char(用于表示Unicode编码的代码单元)和一种表示真假的boolean类型。
  • 2,Java是面向对象语言,其概念为一切皆为对象,但基本数据类型算是个例外,基本数据类型大多是面向机器底层的类型,它是 “值” 而不是一个对象,它存放于“栈”中而不是存放于“堆”中,但Java一切皆为对象的概念不是说说而已,它为每一个基本数据类型都做了相应的包装类,我们日常使用中大多情况下都会使用着这些包装类:

一、Java四大数据类型分类

整形
类型存储需求默认值取值范围
int4字节0-2 147 483 648 ~ 2 147 483 647
short2字节0-32 768 ~ 32 767
long8字节0.0l-9 223 372 036 854 775 808 ~ -9 223 372 036 854 775 807
byte1字节0-128 ~ 127
详细介绍:
  1. 由上可以看出 byte、short 的取值范围比较小,而long的取值范围时最大的,所以占用的空间也是最多的。int 取值范围基本上可以满足我们的日常计算需求了,所以 int 也是我们使用的最多的一个整型类型。
浮点类型
类型存储需求默认值取值范围
float4字节0.0f大约 ±3.402 823 47E+38F
double8字节0大约 ±1.797 693 134 862 315 70E_308
详细介绍:
  1. float 和 double 都是表示浮点型的数据类型,它们之间的区别在于精确度的不同。
  2. double 类型比float 类型存储范围更大,精度更高。
  3. 通常的浮点型数据在不声明的情况下都是double型的,如果要表示一个数据时float 型的,可以在数据后面加上 “F” 。
  4. 浮点型的数据是不能完全精确的,有时候在计算时可能出现小数点最后几位出现浮动,这时正常的。
字符型
类型存储需求默认值取值范围
char2\u0000(空格)在Java中,char类型描述了UTF-16编码中的一个代码单元
详细介绍:
  1. char 有以下的初始化方式:
  2. char ch = ‘a’; 可以是汉字,因为是Unicode编码
  3. char ch = 1010; 可以是十进制数、八进制数、十六进制数等等。
  4. char ch = ‘\0’; 可以用字符编码来初始化,如:’\0’ 表示结束符,它的ascll码是0,这句话的意思和 ch = 0 是一个意思。
  5. Java是用unicode 来表示字符,“中” 这个中文字符的unicode 就是两个字节。
  6. String.getBytes(encoding) 方法获取的是指定编码的byte数组表示。
布尔型
类型存储需求默认值取值范围
boolean可以使⽤用 1 bit 来存储falsebooelan类型有且只有两个值:flase和true,用来判定逻辑条件。
详细介绍:

boolean 没有什么好说的,它的取值就两个:true 、false 。

包装类
基本数据类型包装类默认值数据类型
booleanBooleannull布尔型
charCharacternull字符型
底层是char数组Stringnull字符串
byte Bytenull整形
short Shortnull整形
int Integernull整形
long Longnull整形
float Floatnull浮点型
float Doublenull浮点型
详细介绍:
  1. 包装类就是一个对象,它存放于“堆”中。
  2. 数值型包装类都继承至Number,而字符型和布尔型继承至Object。
  3. Java中的基本数据类型没有方法和属性,而包装类就是为了让这些拥有方法和属性,实现对象化交互。
  4. 基本数据和包装类之间的转换:
装箱:基本数据类型转换为包装类;
拆箱:包装类转换为基本数据类型。
  1. 基本数据类型和包装类的转换
通过包装类Integer.toString()将整型转换为字符串;
通过Integer.parseInt()将字符串转换为int类型;
通过Double.parseDouble();将字符串转换为double类型;
通过valueOf()方法把字符串转换为包装类然后通过自动拆箱。
  1. 包装类对象的初始值为null(是一个对象);
  2. Java中除了float和double的其他基本数据类型,都有常量池

二,基本类型之间的转换

  1. 将一种类型的值赋值给另一种类型是很常见的。在Java中,boolean 类型与其他7中类型的数据都不能进行转换,这一点很明确。但对于其他7种数据类型,它们之间都可以进行转换,只是可能会存在精度损失或其他一些变化。
  2. 转换分为自动转换和强制转换:
    自动转换(隐式):无需任何操作。
    强制转换(显式):需使用转换操作符(type)。
  3. 将6种数据类型按下面顺序排列一下:
    double > float > long > int > short > byte
  4. 如果从小转换到大,那么可以直接转换,而从大到小,或char 和其他6种数据类型转换,则必须使用强制类型转换。
1、自动转换
  1. 自动转换时发生扩宽(widening conversion)。因为较大的类型(如int)要保存较小的类型(如byte),内存总是足够的,不需要强制转换。如果将字面值保存到byte、short、char、long的时候,也会自动进行类型转换。注意区别,此时从int(没有带L的整型字面值为int)到byte/short/char也是自动完成的,虽然它们都比int小。在自动类型转化中,除了以下几种情况可能会导致精度损失以外,其他的转换都不能出现精度损失。
int--> float
long--> float
long--> double
float -->double without strictfp
  1. 除了可能的精度损失外,自动转换不会出现任何运行时(run-time)异常。
强制类型转换
  1. 如果要把大的转成小的,或者在short与char之间进行转换,就必须强制转换,也被称作缩小转换(narrowing conversion),因为必须显式地使数值更小以适应目标类型。强制转换采用转换操作符()。严格地说,将byte转为char不属于narrowing conversion),因为从byte到char的过程其实是byte–>int–>char,所以widening和narrowing都有。强制转换除了可能的精度损失外,还可能使模(overall magnitude)发生变化。强制转换格式如下:
(target-type) value;
2. 如果整数的值超出了byte所能表示的范围,结果将对byte类型的范围取余数。例如a=256超出了byte的[-128,127]的范围,所以将257除以byte的范围(256)取余数得到b=1;需要注意的是,当a=200时,此时除了256取余数应该为-56,而不是200。 3. 将浮点类型赋给整数类型的时候,会发生截尾(truncation)。也就是把小数的部分去掉,只留下整数部分。此时如果整数超出目标类型范围,一样将对目标类型的范围取余数。
7种基本类型转换总结如下图:

赋值及表达式中的类型转换

1,字面值赋值
  1. 在使用字面值对整数赋值的过程中,可以将int literal赋值给byte short char int,只要不超出范围。这个过程中的类型转换时自动完成的,但是如果你试图将long literal赋给byte,即使没有超出范围,也必须进行强制类型转换。例如 byte b = 10L;是错的,要进行强制转换。
2,表达式中的自动类型提升
  1. 除了赋值以外,表达式计算过程中也可能发生一些类型转换。在表达式中,类型提升规则如下:
所有byte/short/char都被提升为int。
如果有一个操作数为long,整个表达式提升为long。float和double情况也一样。

原文参考:

Java 基本数据类型 - 四类八种
Java包装类 - biu嘟 - 博客园

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值