Java--基本数据类型拓展 &转义字符

Posted Z && Y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java--基本数据类型拓展 &转义字符相关的知识,希望对你有一定的参考价值。

1. 基本数据类型拓展


1.1 整型拓展

在我们计算机中存在很多进制问题,十进制,八进制,十六进制等等的问题,他们怎么表示呢?

  • 十进制整数,如:99, -500, 0。
  • 八进制整数,要求以 0 开头,如:015。
  • 十六进制数,要求 0x 或 0X 开头,如:0x15 。

演示:

    public static void main(String[] args) {
        //整型
        int i = 10;// 10进制
        int i2 = 010; // 8进制
        int i3 = 0x10;//16进制
        System.out.println("10进制: " + i);// 10
        System.out.println("10进制: " + i2);// 8
        System.out.println("10进制: " + i3);// 16
    }


1.2 浮点型拓展

【金融面试问:银行金融业务用什么类型表示?】

浮点类型float,double的数据不适合在不容许舍入误差的金融计算领域。
如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。

    public static void main(String[] args) {
        float f = 0.1f;
        double d = 1.0 / 10;
        System.out.println(f == d); //false
        float d1 = 2131231231f;
        float d2 = d1 + 1;
        if (d1 == d2) {
            System.out.println("d1==d2"); // 输入d1==d2
        } else {
            System.out.println("d1!=d2");
        }
    }

主要理由:

由于字长有限,浮点数能够精确表示的数是有限的,因而也是离散的。浮点数一般都存在舍入误差,很多数字无法精确表示,其结果只能是接近,但不等于;二进制浮点数不能精确的表示0.1,0.01,0.001这样10的负次幂。并不是所有的小数都能可以精确的用二进制浮点数表示。


1.2.1 最好完全避免使用浮点数比较

大数值:Java.math下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。

示例:

    public static void main(String[] args) {
        BigDecimal decimal1 = new BigDecimal("1.00000000000000000000000000001");
        BigDecimal decimal2 = new BigDecimal("1.00000000000000000000000000002");
        System.out.println(decimal1.equals(decimal2)); // flase

        double d1 = 1.00000000000000000000000000001;
        double d2 = 1.00000000000000000000000000002;
        System.out.println(d1 == d2);// true
    }


1.2.2 浮点数使用总结:

  1. 默认是double
  2. 浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal类。
  3. 避免比较中使用浮点数

1.3 字符型拓展

  • 单引号用来表示字符常量。例如‘A’是一个字符,它与“A”是不同的,“A”表示一个字符串。
  • char 类型用来表示在Unicode编码表中的字符。.
  • Unicode编码被设计用来处理各种语言的所有文字,它占2个字节,可允许有65536个字符;
  • 【科普:2字节=16位 2的16次方=65536,我们用的Excel原来就只有这么多行,并不是无限的】

【代码演示:字符转int看结果】

    public static void main(String[] args) {
        char c1 = 'a';
        char c2 = '中';
        System.out.println((int) c1); //97
        System.out.println((int) c2); //20013
    }

Unicode具有从0到65535之间的编码,他们通常用从’u0000’到’uFFFF’之间的十六进制值来表示(前缀为u表示Unicode)

示例:

    public static void main(String[] args) {
        char c3 = '\\u0061';
        System.out.println(c3); //a
    }


1.3.1 转义字符

Java 语言中还允许使用转义字符 ‘’ 来将其后的字符转变为其它的含义,有如下常用转义字符:

转义字符含义Unicode编码
\\b退格(Backspace)\\u0008
\\n换行\\u000a
\\r回车\\u000d
\\t制表符(tab)\\u0009
\\"双引号(")\\u0022
\\’单引号(’)\\u0027
\\\\反斜杠(\\)\\u005c

【String类,其实是字符序列(char sequence)。】


1.4 布尔型拓展

  • boolean类型(一位,不是一个字节),就是0|1
  • boolean类型有两个值,true和false,不可以 0 或非 0 的整数替代 true 和 false ,这点和C语言不同。
  • boolean 类型用来判断逻辑条件,一般用于程序流程控制。

【编码规范】



以上是关于Java--基本数据类型拓展 &转义字符的主要内容,如果未能解决你的问题,请参考以下文章

0810-java

go语言学习笔记 — 基础 — 基本数据类型 — 字符串:转义定义多行字符串

java语言

java-基本数据类型间的相互转化

Java定义了哪些基本数据类型?基本数据类型和引用数据类型的特点?

基本数据类型