JAVA的学习日记3

Java基础类型拓展

public class Demo03 {
    public static void main(String[] args) {
        //基础数据类型拓展
        //整型    二进制ob     十进制     八进制0     十六进制0x
        int i = 10;
        int i1 = 010;   //八进制
        int i2 = 0x10;  //十六机制

        System.out.println(i);  //10
        System.out.println(i1); //8
        System.out.println(i2); //16

        System.out.println("======================");
        //浮点数拓展
        float f = 0.1f;     //0.1
        double d = 1.0/10; //0.1
        System.out.println(f == d);     //false
        System.out.println(f);          //0.1
        System.out.println(d);          //0.1

        float f1 = 21231212121212f;
        float f2 = f1 + 1;
        System.out.println(f1 == f2);   //true

        /*所以说浮点数是存在缺陷的,浮点数是:有限的、离散的、是有舍入误差的,表示的是一个大约数,接近但不等于*/
        /*所以最好完全避免使用浮点数进行比较*/
        /*所以最好完全避免使用浮点数进行比较*/
        /*所以最好完全避免使用浮点数进行比较*/

        //所以后面比较的时候会用到BigDecimal  是一个数学工具类



        //字符拓展

        char c1 = 'a';
        char c2 = '中';

        System.out.println(c1);
        System.out.println((int)c1);    //强制转换  97

        System.out.println(c2);
        System.out.println((int)c2);    //强制转换  20013
        //所有的字符本质还是数字
        //编码 Unicode--->表:(A=65   a=97)  占据2个字节  最多可以表示65536个字符
        //表示范围U0000-UFFFF

        char c3 = 'u0061';
        System.out.println(c3);     //a


        //转义字符
        //	 制表符    
换行
        System.out.println("Hello	World");     //Hello	World
        System.out.println("Hello
World");
        /*Hello
        World*/

        String s1 = new String("Hello World");
        String s2 = new String("Hello World");
        System.out.println(s1 == s2);       //false

        String s3 = "Hello World";
        String s4 = "Hello World";
        System.out.println(s3 == s4);       //true
        //对象  从内存上分析


        //布尔值拓展
        boolean flag = true;
        if(flag){}
        //上下两行的表示意思相同,后面的大多时候都会使用上面的方法
        if(flag==true){}
    }
}


转义字符表

Java类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换

  • 运算中,不同类型的数据先转化为同一类型,然后在进行运算

  • 强制类型转换

  • 自动类型转换

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
        /*很明显第二个结果输出的不符合预期,这是因为byte类型的数据范围是-128~127,
        因为类型强制转换,导致了内存溢出所以在操作的时候要尽量避免*/

        // 强制转换格式:  (类型)变量名     低---高
        // 自动转换:    不需要任何操作     高---低
        /*
        * 注意点:
        *   1.不能对布尔值进行转换
        *   2.不能把对象类型转换为不相干的类型
        *   3.在把高容量转换到低容量打的时候,强制转换
        *   4.转换的时候可能存在内存溢出或者精度问题【浮点数】!
        * */

        System.out.println((int)23.7);       //23
        System.out.println((int)-12.5f);      //-12

        char c = 'a';
        int d = c + 1;
        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;
        int years = 20;
        int total = money * years;  //-1474836480  说明计算的时候溢出了
        long total2 = money * years; //-1474836480  表示默认是Int,转换之前就已经存在问题了
        long total3 = money * (long)years; //20000000000 先把一个数转换为long,就能符合强类型转换了
        System.out.println(total3);

    }
}

加油!!!
原文地址:https://www.cnblogs.com/cdoudou/p/13623398.html