系列文章目录
文章目录
前言
本文介绍 java 数据类型和基本数据类型转换。
一、Java 数据类型
1. java 数据类型
- java 数据类型分为两大类:基本数据类型和引用数据类型
- 基本数据类型有8种[byte、short、int、long、float、double、char、boolean]
- 引用数据类型[类、接口、数组]
- String不属于基本数据类型,而是存在String类
2 整数类型
Java 的整数常量默认为int型,声明 long 型常量需要加”l“ 或 ”L“
3 浮点类型
Java 的浮点型常量默认为double型,声明float型常量,需加”f“ 或 ”F“。浮点数使用陷阱:2.7 和 8.1 / 3 比较
4 字符类型(char)
字符类型可以表示单个字符,字符类型是 char,char 是两个字节(可以存放汉字),在 java 中,char 的本质是一个整数,在输出时,是unicode 码对应的字符。char 类型是可以进行运算的,相当于一个整数,因为它对应有 Unicode 编码。
二、基本数据类型转换
1 自动类型转换
自动类型转换:当 java 程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换。
int a = 'c'; //是正确的,输出为97
double a = 80; //是正确的,输出为80.0
自动类型转换的注意事项和细节:
- 细节1:有多种类型的数据混合运算时,系统首先自动将所有变量转换成容量最大的那种数据类型,然后再进行计算。
int n1 = 10;
float d1 = n1 + 1.1; //错误
double d1 = n1 + 1.1; //正确
float d1 = n1 + 1.1F; //正确
- 细节2:当我们把精度(容量)大的数据类型赋值给精度(容量)小的数据类型时,就会报错,反之就会进行自动类型转换。
int n2 = 1.1; //错误 double -> int
- 细节3:byte、short 和 char 之间不会相互自动转换
//当把数赋给 byte 时,先判断该数是否在 byte 范围内,如果是就可以
byte b1 = 10; //正确
int n2 = 1;
byte b2 = n2; //错误,原因:如果是变量赋值,判断类型
char c1 = b1; //错误,原因:byte 不能自动转换成 char
- 细节4: byte,short, char 他们三者可以计算,在计算时首先转换为int类型(不管是一种还是多种)
//当把数赋给 byte 时,先判断该数是否在 byte 范围内,如果是就可以
byte b2 = 1;
short s1 = 1;
short s2 = b2 + s1; //错误,b2 + s1 => int
byte b3 = 2;
byte b4 = b2 + b3; //错误
- 细节5:自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
byte b4 = 1;
short s3 = 100;
int num200 = 1;
float num300 = 1.1F;
int num500 = b4 + s3 + num200 + num300; //错误,要提升到操作数中最大的类型(double)
2 强制类型转换
强制类型转换:自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,要格外注意。
int n1 = (int)1.9;
n1 // 1
int n1 = 2000;
byte b1 = (byte)n2
b1 // 数据溢出了,结果为-48
强制类型转换的注意事项和细节:
- 细节1:强制符号()只针对最近的操作数有效,往往会使用小括号提升优先级。
int x = (int)10*3.5+6*1.5; //编译错误:double -> int
int x = (int)(10*3+6*1.5) //正确
- 细节2:char 类型可以保存 int 的常量值,但不能保存 int 的变量值,需要强转换
char c1 = 100; // 正确
int m = 100; // 正确
char c2 = m; //错误
char c3 = (char)m; // 正确
3 基本数据类型和 String 类型的转换
- 基本类型转 String 类型:将基本数据类型的值 + “”。
- String 类型转基本数据类型:通过基本数据类型的包装类调用parseXX方法。
- 在将 String 类型转成基本数据类型时,要确保 String 类型能够转成有效的数据。比如我们可以把“123” 转成一个整数,但不能把“Hello” 转成一个整数。如果格式不正确,就会抛出异常,程序就会终止。
三、程序中 + 号的使用
- 当左右两边都是数值型时,则做加法运算
- 当左右两边有一方为字符串,则做拼接运算