java学习记录3.6

2021-06-09 12:02

阅读:328

标签:string   world   实例   离散   str   out   new   等级   数组   

一. 数据类型的拓展

public class Demo03 {
    public static void main(String[] args) {
        // =============================================
        // 整数拓展:    进制  二进制0b   十进制    八进制0    十六进制0x
        // =============================================
        int i1 = 10;    // 十进制的10就是10
        int i2 = 010;   // 八进制下10代表8
        int i3 = 0x10;  // 十六进制10代表16
        int i4 = 0b10;  // 二进制10代表2
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
        System.out.println(i4);

        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 并不相等

        float d1 = 2132141241251f;
        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个字节 范围是0 - 65536
        // U0000 - UFFFF

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

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

        // =============================
        String sa = new String("Hello World");
        String sb = new String("Hello World");
        System.out.println(sa == sb);   // false 对象的内存地址不一样
    }
}

二. 类型转换

2.1 类型转换规则

技术图片

public class Demo04 {
    public static void main(String[] args) {
        /**
         * 类型转换
         *   1. 类型转换过程,由高到低需要强制类型转换
         *      语法: (类型)变量名
         *   2. 类型转换过程,由低到高会自动进行类型装换
         * 注意:
         *   1. 不能对布尔值进行转换(布尔值是位)
         *   2. 不能把对象类型转换为不相干的类型
         *   3. 把高容量转换为低容量的时候,强制转换
         *   4. 强制转换的时候可能存在内存溢出,或者精度丢失的问题
         */

        // 强制类型转换(高到低)
        int i = 128;
        byte b = (byte)i;   // 内存溢出 byte类型是一个字节,最大值-128 - 127
        System.out.println(b);

        // 强制类型转换会精度丢失
        System.out.println("=========================");
        System.out.println((int)23.7);      // 23
        System.out.println((int)-45.12f);   // 45


        // 自动类型转换(低到高)
        short s = 123;
        int i1 = s;
        System.out.println(i1);

        char c = ‘a‘;
        int i3 = c + 1; // 自动转换了,因为字符char比int等级低
        char c1 = (char)i3; // 强制转换为字符
        System.out.println(c1);
    }
}

2.2 解决内存溢出的问题

public class Demo05 {
    public static void main(String[] args) {
        // 操作比较大得数的时候,注意溢出问题
        // JDK7新特性,数字之间可以使用_进行分割
        int money = 10_0000_0000;
        int year  = 20;
        int total = money * year;
        System.out.println(total);  // -1474836480,内存溢出了,int4个字节不足以表示超过21亿的数组
        long total2 = money * year; // 计算完毕之后才会进行赋值,所以不会还是溢出了

        long total3 = money * (long)year;   // 计算之前的时候就给他进行转换,解决溢出问题
        System.out.println(total3);

    }
}

三. 变量作用域

3.1 变量

public class Demo06 {
    // 类变量: 可以在类任意位置使用
    static int num = 123;

    // 实例变量(属性): 初始化即可,无需赋值
    // 不赋值,就会使用默认值,对象初始值的null,其他值基本都是0, 0.0
    String s1;
    int age;

    public static void main(String[] args) {
        /**
         * 变量作用域
         *   1. 类变量
         *      就是类的static静态属性,只属于类自己的,类内部都能用
         *   2. 实例变量
         *      类的属性,要被new实例化后可以使用.属性名(变量名)使用
         *   3. 局部变量
         *      方法内部的变量,局部变量
         *      必须声明和初始化值
         */
        // 实例变量(属性),需要被实例化后使用
        Demo06 D1 = new Demo06();
        System.out.println(D1.s1);
        System.out.println(D1.age);

        // 类变量(类的任意位置使用)
        System.out.println(num);

        // 局部变量
        String aaa = "是撒多撒";
    }
}

3.2 常量

public class Demo07 {
    // 定义常量(不能修改的值): 需要使用final关键字
    static final double BBB = 0.31231;
    public static void main(String[] args) {
        System.out.println(BBB);
    }
}

java学习记录3.6

标签:string   world   实例   离散   str   out   new   等级   数组   

原文地址:https://www.cnblogs.com/studyHistory/p/14493209.html


评论


亲,登录后才可以留言!