java的数据类型:8大基本数据类型

Java知识点总结:想看的可以从这里进入

2.4、数据类型

Java是一种强类型语言,所有的变量必须先定义后使用,且定义时需要指定数据类型。强类型语言在编译过程能发现源代码的错误,保证代码的健壮性

  • 强类型语言:如Java,必须明确数据类型,标明是什么类型就是什么类型。

    int a = 1;			//整型
    String str = "Java";	//字符串
    
  • 弱类型语言:如Python、JavaScript,不需要明确数据类型,可直接定义,语言解析器会自动进行隐式的转换。

    a = 1;
    str = "python";	
    

数据类型的分类:
在这里插入图片描述

其中字符型数据本质是Unicode编码,所以也可以看成是数值类型。数值类型之间是可以进行类型转换的,转换方式分为强制类型转换和自动类型转换。

2.4.1、基本数据类型

在 Java 中,基本数据类型是预定义的和特殊支持的数据类型,它们不是对象。Java 提供了 8 种基本数据类型,分为整数类型、浮点类型、字符类型和布尔类型。

1、整型

即没有小数部分的数。可以为负数。

类型存储大小取值范围(有符号)默认值说明
byte1个字节8位,有符号、以二进制补码表示-128(-2^7)~ 127(2^7-1)
0~255
0字节型
short2个字节 16 位-32768(-2^15)~ 32767(2^15 - 1)0短整型
int4个字节32位-2,147,483,648(-2^31) ~ 2,147,483,647(2^31 - 1)0整型,最常用的整数类型
long8个字节 64 位-9,223,372,036,854,775,808(-2^63) ~ 9,223,372,036,854,775,807(2^63 -1)0L长整型,主要使用在需要比较大整数的系统上,long必须以L或l结尾

其中int 整型是最常用的整数类型,一般地整型变量默认为 int 类型。

在需要用到较大数据时,首先选择long,而byte和short主要用于特定的应用场景。

在这里插入图片描述

注意点:

  • 进制表示:

    • 八进制:以数字 0 开头(例如:int octVal = 032;)。
  • 十六进制:以 0x 或 0X 开头(例如:int hexVal = 0x1a;)。

  • 二进制:以 0b或 0B开头(例如:int binVal = 0b11010;)。

  • 下划线:在 Java 7 及以上版本中,整数字面量中可以使用下划线(_)作为分隔符,以提高可读性

在这里插入图片描述

  • 类型转换:在不同整型之间进行操作时,需要进行类型转换。范围小的类型可以自动转换为大的类型,但从较大的类型转换到较小的类型时需要显式转换。

  • 算术运算:整型数据类型可以进行加、减、乘、除等基本的算术运算。需要注意的是,整数除法会丢弃小数部分(例如:5 / 2 的结果是 2)。

  • Java中整型的范围是固定的,它的长度和机器无关,这样就解决了在不同机器之间的移植问题。

2、浮点型

浮点类型用于表示有小数部分的数值。它是有限、离散的,有舍入的误差,结果为约等于,应避免使用浮点数进行计算等操作,银行业务可以用BigDecimal工具类

  • float 单精度小数:

    1、float 数据类型是单精度、 4个字节 32位、符合 IEEE 754标准的浮点数;(32位中:第一位是符号位,后面8位为指数位,剩下的23为表示为尾数)
    2、float 在储存大型浮点数组的时候可节省内存空间;
    3、默认值是 0.0f;(后缀为f或F)
    4、浮点数不能用来表示精确的值
    
  • double 双精度小数

    1、double 数据类型是双精度、 8个字节 64 位、符合IEEE 754标准的浮点数;(64位中:第一位是符号位,后面11位为指数位,剩下的52为表示为尾数)
    2、浮点数的默认类型为double类型;
    3、double类型同样不能表示精确的值,如货币;
    4、默认值是 0.0d;
    

在这里插入图片描述

在Java用浮点数除以0不会报错,因为它表示无穷大。而整数除以0会报错。

正无穷大为:POSITIVE_INFINITY

负无穷大为:NEGATIVE_INFINITY

注意点:

  • 默认类型:在没有后缀的情况下,浮点字面量默认被视为 double类型。

  • 精度问题:由于计算机二进制存储的限制,某些十进制小数不能被精确表示为二进制小数。因此,浮点运算可能存在精度损失的问题。

    所以通常不推荐使用 浮点型 存储精确值,如货币。在这种情况下,通常使用 BigDecimal类。

  • 类型转换:在不同的浮点类型和整型之间进行操作时,需要进行类型转换。较小的类型可以自动转换为较大的类型,但从较大的类型转换到较小的类型时需要显式转换。

  • 浮点异常:浮点类型的运算可能产生“非数”(NaN)和“正无穷大”(Infinity)的结果。

3、char 字符
1、char类型是一个单一的 2个字节16位 Unicode 字符;必须用''单引号括起来
2、最小值是 \u0000(即为 0),最大值是 \uffff(即为65535),共65536个
3、char 数据类型可以储存任何字符,有且只能有一个字符;
4、可以进行加减乘除的计算,实质为Unicode编码间的计算。

image-20210615154618705

注意事项:

  • Unicode 字符:Java 使用 Unicode 字符集,因此 char类型可以存储任何 Unicode 字符。
    • ASCII字符集:早期美国人对英文字母、数字、标点符号进行的编号。只有100多个,占1字节
    • Unicode字符集:美国人位世界上所有书面语言的字符进行统一编号。共用65536个,占用2字节
  • 字符算术:char 类型的变量可以参与算术运算,它们实际上存储的是字符的 Unicode 编码值。例如,‘A’ + 1的结果是 ‘B’。
  • 字符和数字:字符和数字是不同的。例如,‘3’ 是字符 3 的 Unicode 编码,而不是数字 3。
  • 自动类型转换:char 类型可以自动转换为整型或浮点型,转换时使用字符的 Unicode 编码值。
4、boolean

boolean的值只有true和false,用于表示逻辑上的真和假。

1、boolean数据类型虽然只需要1位就可以表示,但计算机实际分配内存时最小是1字节8位,所以boolean实际上也是占8位
2、只有两个取值:true (1)和 false(0);
3、这种类型只作为一种标志来记录 true/false 情况;
4、默认值是 false;
5、布尔型用于逻辑运算、条件控制语句、循环语句等

特点和注意事项:

  • 非整型:在某些编程语言中,布尔类型可能与整数(如 0 和 1)互换使用,但在 Java 中,boolean与整数类型是严格分开的,不能互相转换。
  • 逻辑运算:boolean 类型的变量可以进行逻辑运算
  • 条件语句:boolean 类型常用于条件判断,例如 if 语句、while 循环等。
  • 返回值:方法可以返回 boolean 类型的值,通常用于检查某些条件是否满足。
2.4.2、基本类型转换
  1. 自动类型转换(隐式):自动类型转换是指小的数据类型自动转换为大的数据类型。这种转换是安全的,不会丢失数据。转换的顺序通常是这样的:

    byte -> short -> int -> long -> float -> double
    char -> int
    
  2. 强制类型转换(显式):强制类型转换是指将大的数据类型转换为小的数据类型。这种转换可能会丢失数据,因此需要显式地进行转换,通过在变量前面加上目标类型进行转换。

java为强类型语言,数字表示范围小的数据类型可以自动转换成范围大的数据类型,但是大范围的数据转换成小范围数据需要强制类型转换,在计算时会自动向范围表示大的值的数据类型提升

在这里插入图片描述

1、布尔值不参与类型转换
2、不能把对象类型转换为不相干的类型
3、大范围的数据转换成小范围数据需要强制类型转换(类型)value,强制转换存在内存溢出的问题,容易影响精度
	比如:double a = 9.96d;   int b = (int)a;   b结果为9
4、浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
5、整数的常量默认为int类型,浮点型常量默认是double类型
6、当一个表达式中含有多种类型的值时,表达式的类型会自动提升,提升到其中最高级别的类型:byte、short、char → int → long → float → double(布尔值不参与)
	当表达式中包含 byte、short、char 和 int 类型的值时,这些值首先会被提升至 int 类型。
	如果表达式中包含 long 类型的值,那么所有更低级别的类型(包括 int)都会被提升至 long 类型。
	如果表达式中包含 float 类型的值,那么所有更低级别的类型(包括 long)都会被提升至 float 类型。
	如果表达式中包含 double 类型的值,那么所有更低级别的类型(包括 float)都会被提升至 double 类型。

image-20220724120708467

注意事项:

  • 数据丢失:在强制类型转换中,如果将较大的数据类型转换为较小的数据类型,可能会丢失数据。
  • 精度丢失:在涉及浮点数和整数之间的转换时,可能会丢失精度。
  • 范围问题:在强制类型转换中,如果数据超出目标类型的范围,可能会得到不可预测的结果。
  • 字符转换:字符可以被转换为整数类型,转换结果是字符的 Unicode 编码值。反之,整数也可以转换为字符,结果是对应的 Unicode 字符。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

辰 羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值