【115天】尚学堂高琪Java300集视频精华笔记(7-8)

【115天】尚学堂高琪Java300集视频精华(7-8)

第7集:基本数据类型、整数类型、进制转换、编程中的L问题

基本数据类型

  1. Java是强类型语言,每个变量都必须声明其类型。

  2. Java数据类型分两大类:基本数据类型(primitive data type)和引用数据类型(reference data type)

  3. Java定义了3类8种基本数据类型

    1. 逻辑型——boolean

    2. 文本型——char

    3. 数值型——byte、short、int、long、float、double

  4. Java引用数据类型的大小统一为4个字节,记录的是其引用对象地址。

整数类型

  1. 整数用于表示没有小数点的数,它可以是负数。

  2. Java整型常量三种表示形式:

    1. 十进制

    2. 八进制:0开头

    3. 十六进制:0x或者0X开头

  3. 【拓展】区分整型变量和整型常量

    int a = 3;//a是整型变量,3是整型常量。
    byte b = 3;//b是整型变量,3是整型常量。

    参考资料1

    参考资料2

编程中的L问题

  1. Java语言的整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ’ ,如:

    long a = 55555555;//不出错,在int表示的范围内(21亿内)。
    long b = 55555555555;//不加l出错,已经超过int表示的范围。报错。
  2. L问题:小写L容易与1混淆,尽量用大写。

  3. BigInteger、BigDecimal可分别用来算超出long、double的数。

  4. 转换二进制——Integer.toBinaryString(a);

  5. 十进制——Integer.parseInt(a);

  6. 八进制——Integer.toOctalString(a);

  7. 十六进制的方法——Integer.toHexString(a);

    
    package com.test007;
    
    public class TestDataType {
        public static void main(String[] args){
            int a = 10;
            int a2 = 010;
            int a3 = 0xf;
            //byte b =200;// 报错:Type mismatch:cannot convert from int to byte
            System.out.println(a);
            System.out.println(a2);
            System.out.println(a3);
            System.out.println(Integer.toBinaryString(a));
            System.out.println(Integer.toOctalString(a));
            System.out.println(Integer.toHexString(a));
            int a5 = 10;
            long a6 = 200;
            byte b2 = 100;//如果数据的大小没有超过byte/short/char的表述范围,则可以自动转型。
            long a7 = 11132311111L;
            long l = 3;
            long l2 = l+3;    //L问题
        }
    }
    

第8集:浮点数、浮点数误差问题

浮点数

  1. float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足需求。

  2. double表示这种类型的数值精度是float类型的两倍,又被称作双精度,绝大部分应用程序都采用double类型。

  3. Java 浮点类型常量有两种表示形式:

    十进制数形式,例如:
    3.14       314.0      0.314 
    科学记数法形式,如
    314e2      314E2      314E-2
     
    double f = 314e2; //314*10^2-->31400.0
    double f2 = 314e-2; //314*10^(-2)-->3.14
  4. Float类型的数值有一个后缀F/f ,没有后缀F/f的浮点数值默认为double类型。也可以在浮点数值后添加后缀D/d, 以明确其为double类型:

  5. 【拓展】数值型中byte、short、double、int声明时不用加后缀,不超过值范围即可,float和long需要。参考资料

浮点数误差问题

  1. 浮点类型float, double的数据不适合在不容许舍入误差的金融计算领域。

  2. 如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

    由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示(例如0.1),其结果只能是接近, 但不等于。

  3. 二进制浮点数不能精确的表示0.1,0.01,0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。

  4. 最好完全避免使用浮点数比较:

    float f = 0.1f;
    double d = 1.0/10;
    System.out.println(f==d);   //false
    
    
    float d1 = 423432423f;
    float d2 = d1+1;
    if(d1==d2){
        System.out.println("d1==d2");
    }else{
        System.out.println("d1!=d2");
    }
    //输出结果为d1==d2,明显错误。
  5. 大数值:Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。

    package test008;
    
    public class test008 {
        public static void main(String[] args){
            
            double a = 3.14;
            float b = 3.14F;//这个要加F,否则报错
            byte c = 3;
            short d = 3;
            int e = 3;
            long f = 3;
            long g = 3333333333333L;//这个要加L,否则报错
            
            double a2 = 314e-2;
            System.out.println(a2);
            
            float b2 = 0.1f;
            double a3 = 1.0/10;
            System.out.println(b2);
            System.out.println(a3);
            System.out.println(b2==a3);//false;
            //输出结果:b2、a3均为0.1,但是b2不等于a3。
        }
    }
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值