Java数据类型及拓展

本文介绍了Java中的基本数据类型,包括整数、浮点数、字符、字符串和布尔值,以及它们的扩展和使用规则,如不同进制表示、浮点数的精度问题、比较与强制转换,以及在处理大数时需要注意的溢出问题和JDK7的新特性。
摘要由CSDN通过智能技术生成

标识符和关键字

关键字:

在这里插入图片描述
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

标识符是大小写敏感的!!!

数据类型

强类型语言

要求变量的使用要严格符合规定。所有变量都必须先定义再使用

public class Demo02 {
    public static void main(String[] args) {
        //八大基本数据类型

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

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

        //字符
        char name = 'A';

        //字符串,String 不是关键词,是类
        String name1 = "zhangzhikang";

        //布尔值
        boolean flag = true;
        boolean flag1 = 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);//10
        System.out.println(i2);//8
        System.out.println(i3);//16
        System.out.println("=========================================================");

        //=========================================================
        //浮点数拓展  银行业务怎么表示? 钱
        //BigDecimal  数学工具类
        //=================================================================
        //float  有限  离散  舍入误差 , 大约值,接近但不等于
        //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 = 23213156312123f;
        float d2 = d1 + 1;
        System.out.println(d1==d2);//true
        //因为float精度原因,不适用于做比较

        //======================================
        //字符拓展
        //======================================
        System.out.println("=========================================================");
        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);//a
        System.out.println((int)c1);//强制转换  97
        System.out.println(c2);//中
        System.out.println((int)c2);//强制转换  20013

        //所有的字符本质还是数字
        //编码 Unicode 2字节   U0000--UFFFF   65536
        //使用Unicode表反向打印
        System.out.println("=========================================================");
        char c3 = '\u0061';
        System.out.println(c3); //a

        //转义字符
        //  \t   制表符
        //  \n   换行
        //.......

        //  \t   制表符
        System.out.println("=========================================================");
        System.out.println("Hello\tWorld");

        //  \n   换行
        System.out.println("=========================================================");
        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);//false

        String sc = "hello world";
        String sd = "hello world";
        System.out.println(sc==sd);//true

        //布尔值扩展
        System.out.println("=========================================================");
        boolean flag = true;
        if (flag == true){
            System.out.println("yes");
        }
        if (flag){
            System.out.println("no");
        }
    }
}

强制转换

public class Demo04 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i;  //内存溢出

        //强制转换   (类型)变量名  高位--低位
        System.out.println(i); // 128
        System.out.println(b); // -128

        /*
        * 注意点
        * 1.不能对布尔值进行转换
        * 2.不能把对象类型转换为不相干的类型
        * 3.在把高容量转换为低容量时,强制转换
        * 4.转换的时候可能存在内存溢出,或者精度不足
        */

        System.out.println("===========================================================================");
        System.out.println((int)23.7);  //23
        System.out.println((int)-45.89f);  //-45

        System.out.println("===========================================================================");
        char c = 'a';
        int d = c+1;
        System.out.println(c);//a
        System.out.println(d);//98
        System.out.println((char)d);//b

    }
}

public class Demo05 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7的新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        System.out.println(money);
        int years = 20;
        int total = money * years;
        System.out.println(total);//-1474836480 溢出

        long total2 = money * years;
        System.out.println(total2); //-1474836480  默认是int,转换前已经存在问题了


        long total3 = money * ((long)years); //先把一个数转为long
        System.out.println(total3);// 200_0000_0000
        long total4 = years * ((long)money); //先把一个数转为long
        System.out.println(total4);// 200_0000_0000




    }
}

  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值