类型转换(改)

类型转换

概述

由于Java是强类型语言,所以进行有些运算的时候,需要用到进制转换。

 

 

运算中,不同类型的数据先转换为同一类型,然后再进行运算。

强制转换

(类型)变量名 高到低

byte b = (byte)i;

自动转换

低到高

注意点

  1. 不能对布尔类型进行转换

  2. 不能把对象类型转换为不相干的类型

  3. 转换的时候可能存在内存溢出,或者精度问题!(小数转整数去小数部分)

JDK7新特性

数字之间可以用下划线分割

int money = 10_0000_0000;   输出:1000000000

 

int money = 10_0000_0000;
int year = 20;
long total = money * year;    会溢出
long total2 = money * ((long)year);      不会溢出

默认是int,转换之前已经存在问题了!

代码

//Java-零基础学习/src/base/Demo04
public class Demo04 {
   public static void main(String[] args) {
       //强制转换:(类型)变量名
       int num1 = 128;
       byte num2 = (byte)num1;//内存溢出

       System.out.println(num1);
       System.out.println(num2);
       System.out.println("===================================");

       //=======================================
       //自动转换:从低到高
       double num3 = num1;

       System.out.println(num3);
       System.out.println("===================================");

       //=======================================
       //小数转整数:去小数部分
       System.out.println((int)23.7);
       System.out.println((int)-23.7f);
       System.out.println("===================================");

       //=======================================
       //字符转整数
       char c = 'a';
       int num4 = c + 1;

       System.out.println(num4);
       System.out.println((char)num4);
       System.out.println("===================================");

       //=======================================
       //操作比较大的数,注意溢出问题
       //JDK7新特性,数字之间可以用下划线分割
       int money = 1_000_000_000;

       System.out.println(money);

       int year = 20;
       int total1 = money * year;
       long total2 = money * year;

       System.out.println(total1);//总数溢出了
       System.out.println(total2);//先计算完再强制转换,因此结果不变

       long total3 = money * (long)year;
       long total4 = 10_000_000L;//小写l和1容易搞错,因此尽量用大写L

       System.out.println(total3);
       System.out.println(total4);

  }
}
 
posted @ 2021-03-02 21:59  poiuyjoey  阅读(35)  评论(0)    收藏  举报