• Java中的基本数据类型语法补充


    变量要先赋值后使用

    • 不给变量赋值代表什么
    • 不赋值就使用会怎样 (会报错

    计算并赋值运算符

    • 作用是为了让代码更加简洁。比如 a = a + 10,可以简化为 a+=10
    • +=
    • -=
    • *=
    • /=
    • %=
    • &=
    • ^=
    • |=
    • <<=
    • >>=
    • >>>=
    public class CalcAndAssign {
        public static void main(String[] args) {
            int a = 16;
            a >>= 2;
            System.out.println(a); // 此时a为4
    
            a*=9;
            System.out.println(a); // 此时a为36
        }
    }

    数据类型自动转换

    • 自动类型转换
      • 不会出现问题的类型转换,编程语言可以做自动类型转换,比如低精度的数字向高精度的数字转换
      • 自动类型转换可以发生在算数运算,也可以发生在赋值。
    • 数值精度顺序:double > float > long > int > short > byte
    • char 可以转换为 int
      • char 可以转换为 int
      • 虽然同样是两个 byte,但是因为 char 是无符号数,值域超出了 short 可以表示的范围,所以不可以自动转换为 short。
    public class AutoConvert {
        public static void main(String[] args) {
            int intVal = 99;
            long longVal = intVal;
            long longVal2 = intVal + 1;
            System.out.println(longVal2);
    
            float floatVal = 11.32f;
            double doubleVal = floatVal;
            double doubleVal2 = doubleVal * 2;
            System.out.println(doubleVal2);
    
            int a = 99;
            double b = 5;
            System.out.println(a/b);
    
            char ch = 'A';
            int chNum = ch;
            int chNumCalc = ch + 10;
            System.out.println(ch);
            System.out.println(chNum);
            System.out.println(chNumCalc);
        }
    }

    强制数据类型转换

    • 可能出现问题的类型转换,需要使用强制类型转换,比如高精度向低精度数值转换
    • 强制类型转换也是操作符。
    • 语法是用小括号括起来的目标类型放在被转换的值前面。
    • 强制类型转换会造成数据丢失
    public class ForceConvert {
        public static void main(String[] args) {
            int intVal = 99;
            long longVal = 19999;
            intVal = (int)longVal;
    
            float floatVal = 11.32f;
            double doubleVal = 3344556.789;
            floatVal = (float) doubleVal;
    
            int A = 65;
            char b = (char) A;
            System.out.println(b);
        }
    }
    public class ForceConvertValueLoss {
        public static void main(String[] args) {
            int intVal = 99;
            long longVal = 5555555555555L;
            intVal = (int) longVal;
            System.out.println(intVal);
    
            float floatVal = 11.32f;
            double doubleVal = 1234567890.123456;
            floatVal = (float) doubleVal;
            System.out.println(floatVal);
            System.out.println(doubleVal);
        }
    }

    数值溢出

    • 数值计算一旦溢出,结果将失去意义。比如两个正数会加出负数。(这是因为两个数相加超出了它们所属类型的范围,如果第一位刚好是1,那么就会被计算机认为是负数。
    • 要对能够处理的值有个大概的估计。
    public class CalcValueLoss {
        public static void main(String[] args) {
            int intVal = 2000000000;
            System.out.println(intVal + intVal);
        }
    }

    从数值计算溢出理解程序员和编程语言责任的分界线

    • 编程语言的作用
      • 编程语言负责按照语法执行
      • 编程语言负责和计算机交互
    • 程序员的任务
      • 程序员负责理解问题
      • 程序员负责理解程序,并将问题转换为程序
      • 编程语言不负责解决问题,程序员才是负责解决问题的
  • 相关阅读:
    [题解]Magic Line-计算几何(2019牛客多校第三场H题)
    [题解]Crazy Binary String-前缀和(2019牛客多校第三场B题)
    [数论]快速幂取模
    [模板]大整数乘法——累加型
    [动态规划] 最大子段和问题
    2073
    17-2-24-D
    17-1-31-C
    2032
    1992
  • 原文地址:https://www.cnblogs.com/buildnewhomeland/p/12113428.html
Copyright © 2020-2023  润新知