Java基础通关手册 | 第二章第二节 数据类型及其转换

        欢迎收看基础通关手册第二章第二节!本节我们介绍Java数据类型及其转换。

        Java语言是强类型语言,每一种数据都定义了明确的数据类型,不同类型变量占用内存大小不同,取值范围不同。

        Java支持数据类型分为两类:

基本数据类型(本节重点讲解 ):

  • 整型 byte、short、int、long
  • 浮点型 float、double
  • 字符类型 char
  • 布尔类型 boolean

引用数据类型:

  • 数组
  • 接口

  8种基本数据类型的内存占用,取值范围如下表所示:

注:E+38表示是乘以10的38次方。

        接下来我们详细介绍一下4大基本数据类型:

  1)整数型

byte:是最小的整数类型,适合用于节省内存,例如在处理文件或网络流时存储小范围整数数据。

short:较少使用,通常用于在需要节省内存且数值范围在该区间的场景。

int:最常用的整数类型,可满足大多数日常编程中整数计算的需求。

long:用于表示非常大的整数,当 int 类型无法满足需求时使用,定义时数值后需加 L 或 l

  2)浮点型

float:单精度浮点数,用于表示小数,精度相对较低,定义时数值后需加 F 或 f

double:双精度浮点数,精度比 float 高,是 Java 中表示小数的默认类型。

  3)字符类型

char:用于表示单个字符,采用 Unicode 编码,可表示各种语言的字符。

  4)布尔类型

boolean:用于逻辑判断,只有两个取值true、flase,常用于条件判断和循环控制等逻辑场景。

        了解了数据类型后,我们再介绍一下数据类型的转换。

在变量赋值及算术运算的过程中,经常会用到数据类型转换,分为隐式类型转换和显式类型转换。

  隐式类型转换:也称自动类型转换,当目标类型的范围大于源类型时,Java会自动将源类型转换为目标类型,不需要显式的类型转换。

情形1:赋值过程中,小数据类型值或变量可以直接赋值给大类型变量,类型会自动进行转换:

public class Case1{
    public static void main(String[] args){
        //int 类型的值 赋值给long类型变量
        long num = 10;
        System.out.println(num);

        //float类型值 赋值给double类型变量
        double price = 8.0F;
        System.out.println(price);

        char c = 'a';
        //char 赋值给int
        int t = c;
        System.out.println(t);

        //下面会编译报错
        //float pi = 3.14;
        //int size = 123L;
        //int length = 178.5;
    }
}

情形2:byte、short、char类型的数据在进行算术运算时,会先自动提升为int,然后再进行运算:

public static void main(String[] args){
    byte b = 10;
    short s = 5;
    //(byte->int)+(short->int)
    //int + int
    //结果为int
    int sum = b + s;

    //short sum2 = b + s;
    //编译报错,int 无法自动转换为short进行赋值

    System.out.println(sum);
}

情形3:其他类型相互运算时,表示范围小的会自动提升为表示范围大的,然后再运算:

public static void main(String[] args){
    byte b = 10;
    short s = 5;
    double d = 2.3;
    //(byte 10->int 10 - 5) * (short 5-> int 5) -> 5*5 = 25
    //int 25 + double 2.3
    //double 25.0 + double 2.3
    double t = (b - 5) * s + d;

    //double 赋值给 float ,编译报错
    //float f = (b - 5) * s + d;
    System.out.println(t);
}

  显式类型转换: 也叫强制类型转换,当目标类型的范围小于源类型时,需要使用强制类型转换将源类型转换为目标类型。语法为:目标类型 变量名 = (目标类型)源类型

案例展示:

public static void main(String[] args){
    //1.1数据赋值 强制类型转换
    float f1 = (float)3.14;
    System.out.println(f1);  //3.14

    //1.2数据赋值 强制类型转换
    int size = (int)123L;
    System.out.println(size);  //123

    //2.变量赋值 强制类型转换
    double len = 178.5;
    int length = (int)len;
    System.out.println(length);  //178 会截断,而非四舍五入!!

    //3.表达式赋值 强制类型转换
    byte b = 10;
    short s = 5;
    double d = 2.3;
    float f2 = (float)((b - 5) * s +d);
    System.out.println(f2);  //27.3
}

  注意:强制类型转换时,得到的结果可能与期望值不同!

        这节到这里就结束啦,我们下节见~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值