JAVA 基本数据类型

目录

一、byte类型

二、浮点类型和精度丢失

三、char类型

四、转义字符

五、boolean类型

        Java 的基本数据类型一共有八种,可以分成四类:

1.整型:byte, short , int , long

2.浮点型:float , double

3.字符型:char

4.布尔型:boolean

        整型和浮点型的字节长度和取值范围如下图:

(1个字节表示8个bit位,可以表示8位二进制数)

一、byte类型

关于byte类型有一个很特殊的问题:

        127 + 1 = -128?

public static void main(String[] args) {
		byte a = 127;
		byte b = (byte)(a+1);
		System.out.println(b);
	}

这是计算机计算加法的特性,和byte类型的字节长度导致的

首先说计算机的加法运算

        第一、计算机中的数字是以他们的二进制补码形式进行存储的,计算加法时也以补码形式进行。

        第二、byte类型只有1字节,只能表示8位二进制数,去掉1位符号位,byte类型可以表示的最大数是127。

127 --补码形式--> 0111 1111

+ 1 = 1000 0000 结果正是-128的补码。所以在byte类型里 127 + 1 = -128

二、浮点类型和精度丢失

在Java中用浮点类型来表示小数。运算中会出现精度丢失问题,什么是精度丢失呢?打个比方:

    public static void main(String[] args) {
    	System.out.println(1.2 - 1);
    }

这段代码的输出结果是  0.19999999999999996

显然是一个错误的结果,造成这种结果的原因就是精度丢失。

我们可以先了解一下浮点类型在我们的计算机当中是如何存储的,

接下来再看0.2转为二进制小数的过程

0.2 * 2=0.4 整数部分为0

0.4 * 2=0.8 整数部分为0

0.8 * 2=1.6 整数部分为1

0.6 * 2=1.2 整数部分为1

小数部分又变成0.2,形成循环,就像十进制无法完全展示出 1/3 ,二进制无法精确展示出0.2,精度丢失就是我们4字节的float,或8字节的double 不足以显示全部的数值。

精度丢失的解决方法是使用BigDecimal类

public static void main(String[] args) {
		   BigDecimal b1 = new BigDecimal(Float.toString(1.2f));
		   BigDecimal b2 = new BigDecimal(Float.toString(1));
		   float s = b1.subtract(b2).floatValue(); 
		   System.out.println(s);
}

三、char类型

1.字符类型实际上是一个16位无符号整数,这个整数对应字符的编码

2.java字符类型采用Unicode字符集编码。Unicode是世界通用的定字长字符集,所用字符都是16位

public static void main(String[] args) {
		char a = '严';
		char b = '\u4e25';
		System.out.println(a);
		System.out.println(b);
	}

输出结果是:严

                     严

u4e25是严对应的16位unicode码

四、转义字符

对于不方便输出的字符可以采用转义字符表示:

例如:

public static void main(String[] args) {
		String a = "{"+" \"jdk\" "+" \n \\jre\\ "+" \r \'jvm\'}";
		System.out.println(a);
	}

输出:

{ "jdk"  
 \jre\  
 'jvm'}

五、boolean类型

boolean(布尔)类型有两个值:flase和true,用来判断逻辑条件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值