Java 基本数据类型

一、简单类型及其封装器类

  • bit就是位,也叫比特位,是计算机表示数据最小的单位
  • byte就是字节,1byte=8bit ,0001 1100,一般用两个16进制来显示如:1c

Java基本类型共有八种,基本类型可以分为三类,字符类型char,布尔类型boolean以及数值类型byteshortintlongfloatdouble

JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。8 中类型表示范围如下:

  • byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
  • short:16位,最大数据存储量是65536,数据范围是-32768~32767之间。
  • int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
  • long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
  • float:32位,数据范围在3.4e-45~1.4e38,直接赋值时必须在数字后加上f或F。
  • double:64位,数据范围在4.9e-324~1.8e308,赋值时可以加d或D也可以不加。
  • boolean:只有true和false两个取值。
  • char:16位,存储Unicode码,用单引号赋值。
简单类型booleanbytecharshortIntlongfloatdoublevoid
二进制位数18161632643264
封装器类BooleanByteCharacterShortIntegerLongFloatDoubleVoid

二、自动类型转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。例如: short数据类型的位数为16位,就可以自动转换位数为32的int类型,同样float数据类型的位数为32,可以自动转换为64位的double类型。
在这里插入图片描述

1.自动类型转换

从小的类型转为高的类型,byte转int,long,float,double

	byte a = 0;
	int b = a;
	long c = a;
	float d = a;
	double e = a;
	System.out.println("b="+b);
	System.out.println("c="+c);
	System.out.println("d="+d);
	stem.out.println("e="+e);

输出

	b=0  
	c=0  
	d=0.0  
	e=0.0

2.整数类型可以自动转化为浮点类型,可能会产生舍入误差

    @Test
    public void test10() {
        float A = 2 + 10f;
        float B = A - 11.9f;
        System.out.println(B);
    }

输出

 0.10000038

精准度和准确度是有差距的,float精准度的准确姓流失

三、强制转换

强制转换类型,在要强制转换类型的前面加上括号,然后再括号里面加上你要转换的类型。

1.转换过程中可能导致溢出

int i =128;   
byte b = (byte) i ;

因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。

2.有些数据经过转换运算后,精度就丢失了

    @Test
    public void test11() {
        int x;
        double y;
        x = (int) 55.55 + (int) 22.22;
        y = (double) x + (double) 1.1 + 1.1;
        System.out.println("x=" + x);
        System.out.println("y=" + y);
    }

输出

x=77
y=79.19999999999999

浮点数转换整数是通过舍弃小数得到的,而不是四舍五入

四、String和数值类型互转

1.String 转数值类型

    @Test
    public void test12() {
        int a1 = Integer.parseInt("1");
        byte a2 = Byte.parseByte("1");
        long a3 = Long.parseLong("123456");
        float a4 = Float.parseFloat("1.23456");
        double a5 = Double.parseDouble("1.2345678");
        System.out.println("a1=" + a1);
        System.out.println("a2=" + a2);
        System.out.println("a3=" + a3);
        System.out.println("a4=" + a4);
        System.out.println("a5=" + a5);
    }

输出

a1=1
a2=1
a3=123456
a4=1.23456
a5=1.2345678

还可以设置进制,如String类型是一个16进制的数值,可以这样转换

    @Test
    public void test12() {
        int a1 = Integer.parseInt("a",16);
        int a2 = Integer.parseInt("10",16);
        System.out.println("a1=" + a1);
        System.out.println("a2=" + a2);
    }

输出

a1=10
a2=16

第二个参数是指按什么进制识别,十六进制的"a"就是十进制的10,十六进制的"10"就是十进制的16。

2.数值类型转String

    @Test
    public void test12() {
        int i = 12345;
        String s = "";
        s = i + "";
        //or
        s = String.valueOf(i);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值