JAVA数据类型

本文介绍了Java中的数据类型,包括强类型语言的概念,基本类型的分类如整数、浮点数、字符和布尔值,以及进制表示。还讨论了浮点数的精度问题和BigDecimal在处理货币等精确计算时的作用。此外,提到了字符和字符串的区别,以及类型转换的规则和注意事项,包括可能的内存溢出和精度损失问题。
摘要由CSDN通过智能技术生成

数据类型

  • 强类型语言
    • 要求变量的使用要严格要求,所有变量都必须先定义后才能使用
  • 弱类型语言
  • Java的数据类型分为两大类
    • 引用类型
      • 接口
      • 数组
    • 基本类型(primitive type)
public class Demo02 {
    public static void main(String[] args) {
//        八大基本数据类型

//      整数
        int num1=10;//最常用
        byte num2=20;
        short num3=30;
        long num4=30L;//Long类型要在数字后面加个L

//      小数:浮点数
        float num5=50.1F;//float类型要在数字后面加个F
        double num6=3.1415926;

//      字符
        char name='a';
//      字符串,String不是关键字,是一个类
        String namea="adfas";

//      布尔值:是非
        boolean flag=true;
//      boolean flag=false
    }
}

数据类型扩展知识

public class Demo03 {
    public static void main(String[] args) {
//        整数扩展:     进制     二进制0b     十进制   八进制0   十六进制0x

        int i =10;
        int i2=010;//八进制0
        int i3=0x10;//十六进制0x
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println("=========================================");
//        ===========================================================
//        浮点数扩展? 银行业务怎么表示? 钱
//        BigDecimal 数学工具类
//        ===========================================================
//        flaot        有限   离散    舍入误差    大约数    接近但不等于
//        double
//        最好完全使用浮点数进行比较
//        最好完全使用浮点数进行比较
//        最好完全使用浮点数进行比较

        float f=0.1f;//0.1
        double d=1.0/10;//0.1
        System.out.println(f==d);//false
        System.out.println(f);
        System.out.println(d);

        float d1=232323232323f;
        float d2=d1+1;
        System.out.println(d1==d2);//true
        System.out.println("=========================================");
//        ===========================================================
//        字符扩展?
//        ===========================================================
        char c1='a';
        char c2='中';

        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        System.out.println(c2);
        System.out.println((int)c2);//强制转换
//        所有的字符本质还是数字
//        编码 Unicode   2字节 65536    表(97=a   65=A)
//        U0000 UFFFF
        char c3='\u0061';
        System.out.println(c3);//a

//        转义字符
//        \t    制表符
        System.out.println("Hello\tWorld");
//        \n    换行符
        System.out.println("Hello\nWorld");

        System.out.println("=========================================");
        String sa=new String("Hello world");
        String sb=new String("Hello world");
        System.out.println(sa==sb);

        String sc="hello world";
        String sd="hello world";
        System.out.println(sc==sd);
//        对象  从内存分析
//        布尔值扩展
        boolean flag=true;
        /*
        * if (flag==true){}//新手
        * if(flag){}//老手
        *Less is More!   代码要精简易读
        * */
}
}

类型转换

  • 由于JAVA是强类型语言,所以要进行某些运算的时候,需要用到类型转换
    • 低----------------------------------------------------->高
    • byte,shout,char->int->long->float->double
  • 运算中,不同类型的数据先转换成同一类型,然后进行计算。
  • 强制类型转换
  • 自动类型转换

类型转化注意点:

public class Demo04 {
    public static void main(String[] args) {
        int i=128;
        byte a=(byte) i;//内存溢出
        double b=i;
//        强制转换   (类型名)变量名    高--低
//        自动转换     低--高
        System.out.println(i);
        System.out.println(a);
        System.out.println(b);

        /*注意点:
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型
        3.在把大容量转换到低容量的时候,强制转换
        4.转换的时候可能存在内存溢出,或者精度问题
        */
    }
}
public class Demo05 {
    public static void main(String[] args) {
//        操作比较大的数时,注意溢出问题
//        JDK7新特性,数字之间可以用下划线分割
        int money= 10_0000_0000;
        int years=20;
        int total=money*years;//-1474836480,计算的时候溢出了
        long total2=money*years;//默认是int,转换之前已经存在问题了
        long total3=money*((long)years);
        System.out.println(total);//-1474836480
        System.out.println(total2);//-1474836480
        System.out.println(total3);//20000000000
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值