JavaSE--数据类型
一、数据类型
1、数据类型
int i = 10; double d = 1.23; // i变量和d变量类型不同,空间大小不同。
2、两种数据类型
-
基本数据类型
基本数据类型又可以划分为4大类8小种:
第一类:整数型
byte,short,int,long (没有小数的)
第二类:浮点型
float,double (带有小数的)
第三类:布尔型
boolean:只有两个值true和false,true表示真,false表示假
第四类:字符型
char:java中规定字符型字面量必须使用单引号括起来。属于文字
8小种:
byte,short,int,long
float,double
boolean
char
-
引用数据类型
字符串型String属于引用数据类型,String字符串不属于基本数据类型范畴
java中除了基本数据类型之外,剩下的都是引用数据类型
3、基本数据类型之间的区别
整数型:byte short int long与浮点型:float和double的区别:占用的空间大小不同
1)占用字节数量
byte 1字节
short 2字节
int 4字节
long 8字节
float 4字节
double 8字节
boolean 1字节
char 2字节
4、各个类型的取值范围
(1个字节)byte: [-128 ~ 127]
(2个字节)short:[-32768 ~ 32767] 可以表示65536个不同的数字
(4个字节)int: [-2147483648 ~ 2147483647]
(2个字节)char: [0~65535] 可以表示65536个不同的数字
对于short和char来说:short和char实际上容量相同,因为char表示的是文字,文件没有正负之分,所以char可以表示更大的数字。
5、各个数据类型默认值

二、基本数据类型详解
- 字符型 char
- 整数型 byte short int long
- 浮点型 float double
- 布尔型 boolean
1)char类型
/* char类型 char占用两个字节,取值范围0-65535,采用unicode编码 char类型字面量用单引号 */ public class CharTest01{ public static void main(String[] args){ // char可以存储一个汉字,汉字占用两个字节 char c1 = 'z'; // 编译报错 char c2 = "a"; // 错误 只能有一个字符 char c3 = 'ab'; } }
转义字符 “\”
// 转义字符 “\” public class CharTest01{ public static void main(String[] args){ char c1 = '\t';// \t 表示制表符tab char c2 = '\n';// \n 表示换行符 System.out.print('\\'); // 输出字符 \斜杠 System.out.print('\''); // 输出字符 '单引号 System.out.print('\"'); // 输出字符 "双引号 System.out.print("'zhe'"); System.out.print('\u4e2d'); // \u表示后面是一个unicode编码 输出 中 } }
2)整数类型
/* 整数类型 byte 1字节、short 2字节、int 4字节、long 8字节 最常用的是int类型,int类型 最大值是2147483647,超过这个值可以使用long */ /* 整数型字面量有4中表示形式 十进制:常用 二进制 八进制 十六进制 */ public class CharTest02{ public static void main(String[] args){ // 十进制 int a = 10; // 八进制 int b = 010; // 0开头 System.out.println(b); // 8 // 十六进制 int c = 0x10; // 0x开头 // 二进制 int d = 0b10; // 0b开头 } }
在java中,任何情况下,整数型的字面量默认被当作int类型处理,如果需要将该整数型字面量当long类型处理,需要在后面加L或者l
类型转换
自动类型转换和强制类型转换
/* 自动类型转换 小容量可以自动转换成大容量 */ public class CharTest03{ public static void main(String[] args){ int a = 100;// a占4字节 long b = 200;// b占8字节,但是默认整数型字面量被当作int类型处理,小的自动转换成大的 // 这个不存在类型转换,因为L为long类型,long类型赋值给long long c = 300L; // 整数型字面量默认为int类型,但是d超过int类型范围,所以还没有赋值的时候就出错了 // 整数太大 long d = 2147483648; long d = 2147483648L; } }
/* 强制类型转换 大容量不能直接赋值给小容量,需要强制类型转换符进行强制转换 注意:强制类型转换之后可能会损失精度 */ public class CharTest04{ public static void main(String[] args){ long x = 100L; // 大容量不能直接赋值给小容量 // int y = x; int y = (int)x;//(int)强制类型转换符 } }
public class CharTest05{ public static void main(String[] args){ // 错误 // byte b = 300; byte b = (byte)300;// 会损失精度 // 按照道理说应该编译报错,但是没有报错 byte c = 1; // 注意:语法规则:当整数型字面量没有超过byte的取值范围,那么可以直接赋值给byte short d = 32767; // 注意:语法规则:当整数型字面量没有超过short的取值范围,那么可以直接赋值给short // 没有报错 char c1 = 97; // a // 当一个整数赋值给char类型变量,会自动转换成char字符型 // char类型取值范围:0-65535 char c2 = 65536; // 超过范围 会报错 char c2 = (char)65536; // 强制转换 // 解决问题 } }
注意:多种数据类型做混合运算的时候,最终的结果类型是“最大容量”对应的类型
但是 char + short + byte除外,因为他们三个在混合运算的时候,会各自先转换成int再做运算
// byte char short混合运算 public class IntTest01{ public static void main(String[] args){ char c1 = 'a'; byte b = 1; System.out.println(c1 + b); // 98 // 编译器不知道运算结果,只知道c1 + b类型是int,所以需要强制类型转换 short s = (short)(c1 + b); long a = 10L; char c = 'a'; short s = 100; int i = 30; System.out.println(a + c + s + i);// 237 int x = a + c + s + i;// 报错,从long转换到int可能会损失 // java中规定int类型与int类型运算结果还是int类型, int temp = 10 / 3; // 3 最终取整 // java中计算结果不一定是准确的 int temp2 = 1 / 2; // 0 } }
3)浮点型
浮点型包括:float 4字节,double 8字节
float是单精度,double是双精度
注意:在银行或者财务方面,double也远远不够,java提供了精度更高的类型,java.math.BigDecimal(属于引用数据类型)
float和double存储数据的死后都是存储的近似值,因为有无线循环小数
注意:任意一个浮点型都比整数空间大,因为浮点型里面还有次幂啥的
规定:任何一个浮点数数据默认被当作double来处理,如果想要把浮点数字面量当作folat类型来处理,那么在后面加上F/f
public class FloatTest01{ public static void main(String[] args){ float f = 3.14;// 错误:从double转换到float可能会有损失 float f = 3.14F; float f = (float)3.14; int i = 10.0 / 5; // 错误:结果是double 大容量无法赋值给小容量 int i = (int)10.0 / 5; int i = (int)(10.0 / 5); } }
4)布尔型
/* boolean类型只有两个只 true false 通常在逻辑判断中使用,放在条件位置 */ public class BooleanTest01{ public static void main(String[] args){ boolean sex = true; if(sex){ System.out.println("man"); }else{ System.out.println("woman"); } System.out.println(10 > 20);// false } }
总结:基本数据类型转换规则
- 八种基本数据类型中,除boolean 类型不能转换,剩下七种类型之间都可以进行转换
- 如果整数型字面量没有超出byte , short , char的取值范围,可以直按将其赋值给byte, short, char类型的变量
- 小容量向大容量转换称为白动类型转换,容量从小到大的撸序为: byto < short (char) <int < long < float < double, 其中
- shor和 char都占用两个字节,但是char可以表示更大的正整数
- 大容量转换成小容量,称为强制类型转换,编写时必须添加"强制类型转换符",但运行时可能出现精度损失
- byte, short, char类型混合运算时,先各白转换成int 类型再做运算
- 多种数据类型混合运算,各自先转换成容量最大的那一种再做运算
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类