Java数据类型的转换

数据类型的转换

前言:

Java作为一个强类型的语言,在不同数据类型之间进行转换时,会有比较严苛的要求.

例:

int a = 10;
long b = 100L;
a = b;//会编译失败.
b = a;//编译通过.

在Java中,参与运算的数据类型不一致时,就会发生类型的转换.

Java中类型的转换主要分为两类:自动转换类型(也称为隐式转换),和强制转换类型(也称显示转换).

文章目录

  • 数据类型的转换
    • 自动类型转换
    • 强制类型转换
    • 1.小类型转为大类型是自动提升的
      • 1.1小类型变变量赋值给大类型时,例:`long a = 20;`
      • 1.2小类型和大类型进行数学运算时,首先会将小类型提升为大类型而后进行数学运算,
        • 1.2.1 int 和 long 之间转换:
        • 1.2.2 int 和 double 之间转换:
    • 2.大类型转为小类型需要强制类型转换,可能会导致数据精度丢失(数据溢出或部分数据丢失)
        • 2.1 long 和 int 之间转换:
        • 2.2 double 和 int 之间转换:
    • 3.特殊强调
      • 3.1 int 和 byte 之间的转换:
      • 3.2 int 和 char 之间的相互转换
      • 3.2 int 和 String 之间的相互转换
        • 3.2.1 int 转为 String
        • 3.2.2 String 转为 int

自动类型转换

自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理,特点:数据范围小的转为数据范围大的时会自动进行。

强制类型转换

强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成,特点:数据范围大的转为数据范围小的

1.小类型转为大类型是自动提升的

1.1小类型变变量赋值给大类型时,例:long a = 20;

1.2小类型和大类型进行数学运算时,首先会将小类型提升为大类型而后进行数学运算,

1.2.1 int 和 long 之间转换:

int a = 10;
long b = a + 1L;
	  //int + long = long + long, a 提升为long类型

1.2.2 int 和 double 之间转换:

int a = 4;
double b = 2;
//int / double -> double / double,a 提升为double类型
System.out.println(a/b);

2.大类型转为小类型需要强制类型转换,可能会导致数据精度丢失(数据溢出或部分数据丢失)

2.1 long 和 int 之间转换:

long b = 100L;
//long -> int需要强制类型转换
int c = (int) b;

2.2 double 和 int 之间转换:

double c = 1.0;
//double -> int需要强制类型转换
int d = (int) c;

3.特殊强调

3.1 int 和 byte 之间的转换:

int a = 10;
byte b = (byte)a;//大到小,强转
int c = b;//小到大,自动提升

Java数据类型的转换_第1张图片

对于数值型和字符型来说,小于4字节的数据类型,在存储时会转为4字节。byte类型在保存时会转为int类型。

当把byte类型保存区间之内的整数赋值给byte时,可以直接赋值,超出byte的范围仍然需要强制类型转换。

Java数据类型的转换_第2张图片

Java数据类型的转换_第3张图片

Java数据类型的转换_第4张图片

被final修饰的变量除了数据值不能改,类型也不能提升,final byte a = 10;存储时,仍然是byte类型!

3.2 int 和 char 之间的相互转换

计算机的内部都是0和1,char字符会按照不同的编码规则转为int存储。

Java数据类型的转换_第5张图片

char -> int自动提升,按照Unicode编码将’a’转为int

所谓的编码,就是把不同的文字和符号按照一定的规则转为数字而已。

Java数据类型的转换_第6张图片

int 类型到 char 类型要强转

3.2 int 和 String 之间的相互转换

3.2.1 int 转为 String

  1. 直接使用 String类 + (即字符串拼接)
  2. 使用 String 的 ValueoOf 方法

Java数据类型的转换_第7张图片

3.2.2 String 转为 int

调用包装类Integer.parseInt()方法,当字符串包含了非数字时会出错

Java数据类型的转换_第8张图片

由于此时str中包含了非数字,调用这个方法时就会报错~

Java数据类型的转换_第9张图片

在Java中,所有数据类型都有默认值,定义之后没有赋值,会有默认值(只存在于类变量中,方法中的局部变量不存在默认值)

Java数据类型的转换_第10张图片

你可能感兴趣的:(Java基础,java)