51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Java-Note-002-基本数据类型

Java学习之路 - Note - 002 - 基本数据类型

变量

什么是变量

变量来源于数学,是计算机语言中能储存计算结果或能表示值的抽象概念。变量可以通过变量名访问。
变量指向内存中存在的一块空间(不同的变量,类型不同,占用空间大小不同)。
变量是程序的基本组成单位。不论使用哪种高级程序语言编写的程序,变量都是该程序的基本组成单位。

定义变量时的注意点

Ⅰ. 变量必须先声明,后使用,有顺序。
Ⅱ. 同一个作用域中变量名不能重名。
Ⅲ. 变量的三要素(类型 变量名 值)。

数据类型

基本数据类型

数值型

Ⅰ. 整数类型
byte : 占用1字节, -2^7 ~ 2^7 - 1
short : 占用2字节, -2^15 ~ 2^15 - 1
int : 占用4字节, -2^31 ~ 2^31 - 1
long : 占用8字节, -2^63 ~ 2^63 - 1

Ⅱ. 浮点类型
float : 占用4字节
double: 占用8字节

字符型

char : 占用2字节, 存放单个字符, 用 '' 包含

布尔型

boolean:占用1字节, 存放true, false

引用数据类型

Ⅰ. 类 (class)
Ⅱ. 接口 (interface)
Ⅲ. 数组 ([])

整型

  1. 各整数类型有固定的字段范围和长度,不受操作系统的影响。
  2. Java的整型常量默认为int型,声明long型常量时须后加"l" 或 "L"。
  3. 声明int型时,除非不足以表示大数,才使用long。
  4. bit是计算机中最小的存储单位,byte是计算机中基本存储单位。
  5. int型在内存空间中为32bit,但long型有64bit,内存空间中仅支持范围广容纳范围小的变量,而范围小的变量不能容纳大范围。

浮点型

  1. 构成: 浮点数 = 符号位 + 指数位 + 尾数位。
  2. 尾数部分可能会丢失,造成精度缺失(小数都是近似值)。
  3. Java浮点数常量默认为double类型,声明float类型,需要在常量后加上 "f" 或 "F"。
  4. 通常情况下double 类型(保留十位)的精度比float (保留7位)精度高,更加精确。

public class JavaNote002 {
    public static void main(String[] args) {
        //浮点型常量默认类型为double,声明float型常量时,需后加 'f' 或 'F'
        // folat n1 = 12.0; //默认类型为double,所以赋值给float类型,会有一个类型错误提示
        float n2 = 13.0f;
        double n3 = 13.0;
        double n4 = 13.0f;
    // 十进制数表示方式 0.25 0.25f .25(必须要有小数点。)
    double n5 = .25;
    System.out.println(n5);

    /*
     * 浮点型 陷阱,浮点数之间的比较。
     *
     * 在进行浮点型计算过程中会产生一个近似值的。从而导致判断失败。 所以在对小小数进行相等判断时,需要注意。 正确的做法是通过Math.abs
     * 将两个数相减的结果转换绝对值,让其小于一个范围之类达到近似相等。
     * 如果对变量进行直接赋值或者通过直接查询得到的值,是可以判断相等的。
     */
    double n6 = 2.7;
    double n7 = 8.1 / 3;
    System.out.println(n6);
    System.out.println(n7);
    if (n6 == n7) {
        System.out.println("相等");
    } else {
        System.out.println("不相等");
    }
    // 正确写法
    if (Math.abs(n6 - n7) < 0.00001) {
        System.out.println("相等");
    } else {
        System.out.println("不相等");
    }
}

}


字符型

  1. 字符常量需要用 '' 包裹。
  2. 利用转义字符 "\" 将字符变成特殊格式的字符型常量。
  3. char 本质上是一个整数,在输出时,是ASCII码对应的字符。
  4. 可以将ASCII码进行强制类型转换,进行计算。

本质

字符是如何存储到计算机当中的?
将字符对应的码值找出,再进行存储。
存储: 'a' → 码值97 → 二进制 → 存储
读取: 二进制 → 码值97 → 'a' → 显示
字符和码之间的关系通过字符编码表决定(字符编码表事先规定好的)。

拓展

ASCII: 一个字节表示,一个128个字符。
Unicode:固定大小编码,一个字符表示两个字节,字母和汉字统一占用两个字节。
UTF-8: 大小可变的编码,字母使用一个字节,汉字使用三个字节。
GBK: 可表示汉字,范围广,字母使用一个字节,汉字使用两个字节。
GB2312: 可表示汉字,GB2312 < GBK

布尔型

  1. 仅允许取值true 或 false。
  2. boolean 类型 占用1个字节。
  3. boolean 类型适合用于逻辑判断,一般用于流程控制。

基本数据类型的转换

  1. Java程序程序中进行赋值或运算时,精度小的类型可以自动转换成精度高的数据类型。
  2. byte 和 short 不能够与 char 进行转换。
  3. byte、short、char 进行运算时,将精度直接提升为int类型。
  4. boolean 不参与类型转换。
  5. 自动提升原则: 表达式结果的类型自动提升为操作数中最大的类型。
  6. 强制转换可能会造成精度丢失,数据溢出。

public class JavaNote002 {
    public static void main(String[] args) {
        /*
         * 细节一:多种类型混合运算时,
         * 系统首先自动将数据类型转换成容量最大得数据类型,然后再进行计算
         */
        int n1 = 10;
        float n2 = 10 + 1.1f;
        System.out.println(n2);
    /*
     * 反之将精度大的数据类型赋值给精度小的数据类型,就会报错。
     * int n4 = 12.1;   错误示例 将数据double 类型转换为 int类型。
     * 规则:(byte,short) 和 char 之间不能够进行类型转换。
     * 一个具体的值赋值给byte时,  先判断值是否存在byte类型范围之内,如果是即可以赋值成功。
     */
    byte n3 = 10;

    /*
     * 错误示例
     * n4为整型其精度已经超过byte,再赋值与byte,即为错误做法。
     * int n4 = 20;
     * n3 = n4;
     * char c1 = n3;    错误示例,byte不能赋值与char。
     *
     * byte short char 进行运算直接将精度提升int
     *
     */
    byte b1 = 20;
    byte b2 = 30;

    // byte b3 = b1 + b2;   错误。 原因:
    // byte、short、char 进行计算直接将精度提升为int类型。所以最终不能赋值给byte类型的值

    short s1 = 10;
    char c2 = 56;
}

}


基本类型与String类型的转换

  1. 基本类型转 String类型(将基本数据类型 + "" 即可 )
  2. 将字符串变成字符而不是数字时,编译并不会提示报错,但是在运行是会抛出数字格式异常。

public class JavaNote002 {
    public static void main(String[] args) {
        //String 字符串,引用数据类型
        String s1 = "123";
    //使用基本数据类型包装类的对应方法,将String转换成对应类型。
    int num1 = Integer.parseInt(s1);
    long num2 = Long.parseLong(s1);
    float num3 = Float.parseFloat(s1);
    double num4 = Double.parseDouble(s1);

    System.out.println(num1);
    System.out.println(num2);
    System.out.println(num3);
    System.out.println(num4);

    //如何将字符串 转换成字符,将字符串第一个字符得到。
    System.out.println(s1.charAt(0));
}

}


赞(0)
未经允许不得转载:工具盒子 » Java-Note-002-基本数据类型