1、数据类型有什么用?
数据类型用来声明变量,程序运行过程中根据不同的数据类型分配不同大小的内存空间。
如:
int a=10;
double b=1.23;
a变量和b变量类型不同,所占用的内存空间的大小也不一样。
2、有哪些数据类型?
java语言中的数据类型包括基本数据类型和引用数据类型。
第一种:基本数据类型
基本数据类型又分为4大类:
- 第一类:整数型
byte,shot、int、long(没有小数的)
- 第二类:浮点型
float,double(带小数的)
- 第三类:布尔型
boolean(只有两个值true和false,true表示真,false表示假)
- 第四类:字符型
char(java中规定字符型字面量必须使用单引号括起来,属于文字)
第二种:引用数据类型
- 字符串型String属于引用数据类型
- String字符串不属于基本数据类型范畴
- java中除了基本数据类型之外,剩下的都是引用数据类型
3、8种基本数据类型占字节数以及取值范围
数据类型 | 占用空间大小 | 取值范围 | 默认值 | 数据类型 | 占用空间大小 | 取值范围 | 默认值 |
---|---|---|---|---|---|---|---|
byte | 1 | [-2^7 ~2^7-1]、 [-128~127] | 0 | float | 4 | [-2^31~2^31-1]、[-2147483648~2147483647] | 0.0 |
short | 2 | [-2^15~2^15-1]、[-32767~32768] | 0 | double | 8 | [-2^63~2^63-1] | 0.0 |
int | 4 | [-2^31~2^31-1]、[-2147483648~2147483647] | 0 | boolean | 1 | true、false | false |
long | 8 | [-2^63~2^63-1] | 0 | char | 2 | [0~2^16-1]、 [0~65535] | \u0000 |
如何使用:
public class Test{
public static void main(String[] args){
byte b=6;
short s=20;
int i=30;
long l=200;
//float类型在声明时,在末尾要加上L/l,由于l和1不好区分,一般写为大写L
float f=1.25L;
double d=3.14159;
}
}
4、基本数据类型转换
1)转换规则
基本数据类型之间的转换可总结为以下几条规则:
-
8种基本数据类型中,除了boolean类型不能转换,剩下的七种类型都可以进行转换;
-
如果整数型字面量没有超出byte,short,char的取值范围,可以直接将其赋值给byte,short,char;类型的变量;
-
小容量向大容量称为自动类型转换,容量从大到小的排序为:
byte < short(char) < int < long< float < double,其中short和char都占用两个字节,但是char不表示负数,所以char可以表示更大的正整数;
-
大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用;
-
byte,short,char类型混合运算时,先各自转换成int类型再做运算;
-
多种数据类型混合运算,各自先转换成容量最大的那一种再做运算。
2)自动类型转换
小容量向大容量转换称为自动类型转换。
-
long c=10L和long c=10有什么区别?
两种写法编译均可以通过,但是其内部原理是不一样的。long c=10L是在内存中开辟一块内存用来存放long类型,值为10的数据,而long c=10其实是编译器将10默认为int类型的值,而在java中,小容量是可以直接给大容量赋值的。
-
思考下列代码。
public class Test{
public static void main(String[] args){
byte a=3;
byte b=a+4;
}
}
第四行报错,报错原因:
变量b和a都是byte类型的,而4编译器默认为int类型的,byte 类型的 a 和 int 类型的 4 求和, 结果为 int 类型,且对于以上代码来说 a 是一个变量,变量就是一个不确定的值,所以编译器会认为 a + 4 可能会超出 byte 取值范围, 所以编译报错了。
3)强制类型转换
转换规则第四条,大容量转换成小容量,称为强制类型转换,编写时必须添加“强制类型转换符”,但运行时可能出现精度损失,谨慎使用。
如何使用:
public class Test{
public static void main(String[] args){
//强制类型转换规则:在需要转换的数据前加小括号,写上转换的目标类型,如下:
int a=(int)3.14;
System.out.println(a); //输出结果为3,浮点型转整数型是直接截取整数部分,不会四舍五入
}
}
5、转义字符
1)什么是转义字符?
转义字符指用一些普通的字符组合代表一些特殊的字符,由于组合用的字符改变了原意,称为转义字符。 Java 中的转义字符以 \ 开始, 常见的转义字符有: \t、 \n、 \u、 \\、 \’, \",其中\t 代表制表符, \n 是换行符, \\表示一个普通的\字符,\‘表示一个普通的’, \“表示一个普通的”。
2)使用方法
使用如下:
public class Test{
public static void main(String[] args){
char c1 = 't';
System.out.println("这是一个普通的字符 = " + c1);
char c2 = '\t';
System.out.println("abc" + c2 + "def");
}
}
运行结果:
3)常见的转义字符
符号 | 字符含义 | 符号 | 字符含义 |
---|---|---|---|
\n | 换行 (0x0a) | \t | 制表符 |
\r | 回车 (0x0d) | \" | 双引号 |
\f | 换页符(0x0c) | \’ | 单引号 |
\b | 退格 (0x08) | \\ | 反斜杠 |
\0 | 空字符 (0x0) | \ddd | 八进制字符 (ddd) |
\s | 空格 (0x20) | \uxxxx | 16进制Unicode字符 (xxxx) |