八大数据类型简析

Day0之数据类型

代码解释

/**
 * @author bood
 * @since 2022/06/19 13:48
 */
public class Demo02 {
    public static void main(String[] arg){
        //八大基本数据类型

        //整数
        byte  num2 = 20;  //一个字节byte(1*8=8位(bit))   +-2的7次方,共2的8次方
        short num3 = 30;  //两个字节byte(2*8=16位(bit))  +-2的15次方,共2的16次方
        int   num1=10;    //默认数 四个字节(4*8=32个位(bit))+-2的31次方,共2的32次方
        long  num4 = 30L; //Long 类型要在后面加个L  八个字节()  依此类推

        //小数:浮点数
        float num5 = 50.1F;        //(记得加;)  float类型要在数字后面加个F  四个字节
        float num6 =(float)50.1;   //第二种方法
        double num7 = 3.141592653; // 八个字节,默认浮点数
        double num8 =3;            
        System.out.println(num8);  //运行结果为3.0

        //字符  两个字节,char只能插入一个字符,a,A,1,锅,一定不可以打两个字符,如Aa
        char name = '锅'; 
        
        //字符串
        /*注意:1,String没有高亮,不是关键字,是个类;
               2,一定是双引号,不能是单引号*/
        String namea ="方Jhao"; 
        
        //布尔值:是/非,占1位(bit) 0 or 1
        boolean a = true;
        boolean b = false;
        boolean c = 5 > 8;
        if (c)
            System.out.println("对的");
        else
            System.out.println("错的");
    }
}

拓展一

(各类型的相关参数:基本类型,二进制位数,包装类,最大值,最小值)

代码

/**
 * @author bood
 * @since 2022/06/20 0:50
 */
public class Demo02拓展1 {
    
    public static void main(String[] args) {

// byte
        System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
        System.out.println("包装类:java.lang.Byte");
        System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
        System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
        System.out.println();

// short
        System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
        System.out.println("包装类:java.lang.Short");
        System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
        System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
        System.out.println();

// int
        System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
        System.out.println("包装类:java.lang.Integer");

        System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
        System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
        System.out.println();

// long
        System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
        System.out.println("包装类:java.lang.Long");
        System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
        System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
        System.out.println();

// float
        System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
        System.out.println("包装类:java.lang.Float");
        System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
        System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
        System.out.println();

// double
        System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
        System.out.println("包装类:java.lang.Double");
        System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
        System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
        System.out.println();

// char
        System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
        System.out.println("包装类:java.lang.Character");

// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
        System.out.println("最小值:Character.MIN_VALUE="
                + (int) Character.MIN_VALUE);

// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
        System.out.println("最大值:Character.MAX_VALUE="
                + (int) Character.MAX_VALUE);
    }
}

代码运行结果

 Demo02拓展1
基本类型:byte 二进制位数:8
包装类:java.lang.Byte
最小值:Byte.MIN_VALUE=-128
最大值:Byte.MAX_VALUE=127

基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768
最大值:Short.MAX_VALUE=32767

基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE=-2147483648
最大值:Integer.MAX_VALUE=2147483647

基本类型:long 二进制位数:64
包装类:java.lang.Long
最小值:Long.MIN_VALUE=-9223372036854775808
最大值:Long.MAX_VALUE=9223372036854775807

基本类型:float 二进制位数:32
包装类:java.lang.Float
最小值:Float.MIN_VALUE=1.4E-45
最大值:Float.MAX_VALUE=3.4028235E38

基本类型:double 二进制位数:64
包装类:java.lang.Double
最小值:Double.MIN_VALUE=4.9E-324
最大值:Double.MAX_VALUE=1.7976931348623157E308

基本类型:char 二进制位数:16
包装类:java.lang.Character
最小值:Character.MIN_VALUE=0
最大值:Character.MAX_VALUE=65535

Process finished with exit code 0

整数拓展(进制)

  • 十进制整数,如:99, -500, 0。

  • 八进制整数,要求以 0 开头,如:015。

  • 十六进制数,要求 0x 或 0X 开头,如:0x15 。

    public class Demo02拓展2 {
        public static void main(String[] arg){
            int i1 = 10;
            int i2 = 010;
            int i3 = 0x10;
            System.out.println(i1); //10
            System.out.println(i2); //8
            System.out.println(i3); //16
        }
    }
    

小数(浮点数)拓展

【金融面试问:银行金融业务用什么类型表示?】

代码问题
public static void main(String[] args) {
float  f = 0.1f;
double d = 1.0/10;

System.out.println(f==d); //false

    float d1 = 2131231231f;
    float d2 = d1+1;
    if(d1==d2){
       System.out.println("d1==d2");//结果为这个,但明显是不相等的,是错误的
}
    else{
       System.out.println("d1!=d2");

    }
}
主要理由:

由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的

浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;

计算机是二进制的,二进制浮点数不能精确的表示0.1,0.01,0.001这样 10的负次幂。

不是所有的小数都能可以精确的用二进制浮点数表示

  • 最好完全避免使用浮点数比较 !
数值大:

Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。

BigInteger实现了任意精度整数运算。

BigDecimal实现了任意精度浮点运算。

浮点数使用总结:
  1. 默认是double
  2. 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
    类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。

BigInteger实现了任意精度整数运算。

BigDecimal实现了任意精度浮点运算。

浮点数使用总结:
  1. 默认是double
  2. 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
  3. 避免比较中使用浮点数
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值