Java-数据类型

目录

1. 基本数据类型

1.1 代码展示

1.2  long 和 float 的书写

1.3 char 的表示原理

1.4 赋初值

1.5 boolean 类型

1.6 类型转换

1.6.1 自动类型转换(隐式)

1.6.2 强制类型转换(显示)

1.7 类型提升

1.7.1 int 和 long 之间:int 会被提升为 long

1.7.2 byte 和 byte 的运算

2. 引用数据类型


在 Java 中,数据类型主要分为两类:基本数据类型引用数据类型

1. 基本数据类型

基本数据类型有四类八种:

四类:整形、浮点型、字符型、布尔型

八种:

注意:

  • 整形和浮点型都是有符号的
  • 整形默认为 int ,浮点型默认为 double
  • 在 Java 中,数据类型的内存占用是固定,不会因为使用的系统不同而改变。

1.1 代码展示

public class Main {
    public static void main(String[] args) {

        byte a = 10;
        short b = 20;
        int c = 30;
        long d = 40L;
        float e = 1.0f;
        double f = 3.14;
        char g = '中';
        boolean h = true;

    }
}

1.2  long 和 float 的书写

public class Main {
    public static void main(String[] args) {

        long a = 10L;   //为了区分 int 和 long 类型,
                        //一般建议:long 类型变量后面加上 'l' 或者 'L'
        long b = 20l;   //一般更加以大写 L ,因为小写 l 容易与数字 1 相混淆

        float c = 3.14f;   //为了区分 float 和 double 类型
        float d = 3.14F;   //一般建议:float 类型变量后面加上 'f' 或者 'F'

    }
}

1.3 char 的表示原理

计算机中的字符本质上是一个整数。

而 Java 中使用 Unicode 表示字符。

对于 Java 中的 char 类型,一个字符占用两个字节,所以表示的字符种类很多,包括中文。

public class Main {
    public static void main(String[] args) {

        char a = 65;
        char b = '中';

        System.out.println(a);  //输出 A
        System.out.println(b);  //输出 中

    }
}

1.4 赋初值

在 Java 中,如果要使用基本数据类型定义的变量,那么要在使用之前赋初值,否则会在编译期间报错。

public class Main {
    public static void main(String[] args) {

        int a = 10;
        System.out.println(a);  //这样没问题

        int b;
        b = 20;
        System.out.println(b);  //这样也没问题

        int c;
//        System.out.println(c);  //执行了这一步就会报错,因为 c 没有初始化,所以不能使用

    }
}

1.5 boolean 类型

boolean 类型的变量只有两种取值,ture  表示真,flase 表示假。

public class Main {
    public static void main(String[] args) {

        boolean a = true;
        boolean b = false;

        System.out.println(a);  //输出 true
        System.out.println(b);  //输出 false

    }
}

1.6 类型转换

Java 作为一个强类型编程语言,当不同类型之间的变量相互赋值的时候,会有严格的校验。

在 Java 中,当参与运算的数据类型不一致时,就会进行类型转换。

Java 中类型转换主要分为两类:自动类型转换(隐式)和强制类型转换(显示)。

1.6.1 自动类型转换(隐式)

自动类型转换(隐式):代码不需要经过任何处理,在代码编译时,编辑器会自动进行处理。

特点:数据范围的数据类型转为数据范围的数据类型时会自动进行。

public class Main {
    public static void main(String[] args) {

        System.out.println(1024);   //整形默认是 int 类型,所以输出 1024
        System.out.println(3.14);   //浮点型默认是 double 类型,所以输出 3.14

        int a = 100;
        long b = 10L;
        b = a;  //a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型,然后赋值
//        a = b;  //编译报错,long的范围比int的范围大,会有数据丢失,不安全

        float f = 3.14f;
        double d = 5.12;

        d = f;  //编译器会将f转换为double,然后进行赋值
//        f = d;  //编译报错,long的范围比int的范围大,会有数据丢失,不安全

        byte b1 = 100;  //编译通过,100没有超出byte的范围,编译器隐式将100转换为byte类型
//        byte b2 = 128;  //编译报错,128超出byte的范围,超出了byte的范围,有数据丢失
        
        
    }
}

1.6.2 强制类型转换(显示)

强制类型转换(显示):当进行操作时,代码需要经过一定的格式处理,不能自动完成。

特点:数据范围大的到数据范围小的。

public class Main {
    public static void main(String[] args) {

        int a = 10;
        long b = 20L;
        b = a;  //int-->long,数据类型由小到大,隐式转换
        a = (int) b;  //long-->int,数据类型由大到小,需要强转,否则编译失败

        float f = 3.14f;
        double d = 5.12;
        d = f;  //float-->double,数据类型由小到大,隐式转换
        f = (float) d;  //double-->float,数据类型由大到小,需要强转,否则编译失败

//        a = d;  //编译报错,类型不兼容
        a = (int) d;  //int类型没有double表示的数据范围大,需要强转,小数点之后的全部丢弃

        byte b1 = 100;  //编译通过,100默认为int类型,没有超出byte的范围,编译器隐式将100转换为byte类型
        byte b2 = (byte) 257;  //257默认为int,超出byte的范围,需要显式转换,否则编译失败

        boolean flag = true;
//        a = flag;  //编译失败:类型不兼容
//        flag = a;  //编译失败:类型不兼容

    }
}

1.7 类型提升

不同类型的数据之间相互运算时,数据类型小的会被提升到数据类型大的。

1.7.1 int 和 long 之间:int 会被提升为 long

public class Main {
    public static void main(String[] args) {

        int a = 10;
        long b = 20L;
//        int c = a + b;  //编译报错,a + b ==> int + long -> long + long .赋值给int时会丢失数据
        long d = a + b;  //编译通过,a + b ==> int + long -> long + long .赋值给long时不会丢失数据
    }
}

1.7.2 byte 和 byte 的运算

public class Main {
    public static void main(String[] args) {
        
        byte a = 10;
        byte b = 20;
//        byte c = a + b;   //编译报错,byte + byte -> int + int .但把int类型赋值给byte时会丢失数据。
        byte c = (byte) (a + b);  //编译通过
        
    }
}

2. 引用数据类型

这篇文章属于半成品,后续会再更新的哦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值