6 数据类型
6.1 进制及其转换
十进制 逢十进一 人类喜欢的进制 。
二进制 逢二进一 计算机底层的进制 。
十进制转二进制:
将该十进制数不断除以2直到商为0,记录余数,将余数倒着写就是结果。
eg.将14转为二进制数
14
2
=
7......0
,
7
2
=
3......1
,
3
2
=
1......1
,
1
2
=
1......1
,
余
数
为
0
,
1
,
1
,
1
倒
着
写
:
1110
,
为
二
进
制
数
\frac{14}{2}=7......0, \frac{7}{2}=3......1, \frac{3}{2} =1......1, \frac{1}{2}=1......1,余数为0,1,1,1倒着写:1110,为二进制数
214=7......0,27=3......1,23=1......1,21=1......1,余数为0,1,1,1倒着写:1110,为二进制数
二进制转10进制:
将该二进制数每一位乘当2的当前位位数减一次方,将结果相加
eg.将1110转为十进制数
1
×
2
(
4
−
1
)
+
1
×
2
(
3
−
1
)
+
1
×
2
(
2
−
1
)
+
0
×
2
(
1
−
1
)
=
8
+
4
+
2
+
0
=
14
1\times2^(4-1)+1\times2^(3-1)+1\times2^(2-1)+0\times2^(1-1)=8+4+2+0=14
1×2(4−1)+1×2(3−1)+1×2(2−1)+0×2(1−1)=8+4+2+0=14
十进制转八进制和八进制转十进制与上面所述方法类似。
八进制与二进制可以把十进制当做“中转站”
但我们可以使用计算器!
HEX:16进制,DEC:十进制,OCT:八进制,BIN:二进制
6.2 数据类型分类
基本数据类型(primitive data type):
最基础的数据类型,分为八种。
- 整数型 byte short int long
- 浮点型 float double
- 字符型 char
- 布尔型 boolean
引用数据类型(reference data type):
类,抽象类,枚举,接口等等。
6.3 整数型
byte(字节型)short(短整型) int(整型) long(长整型)
类型 | 占用存储空间 | 表数范围 |
---|---|---|
byte | 1字节 | -2^7 ~ 2^7-1(-128~127) |
short | 2字节 | -2^15 ~ 2^15-1 (-32,768~32,767) |
int(默认) | 4字节 | -2^31 ~ 2^31-1 (-2,147,483,648~2,147,483,647) 约21亿 |
long(赋值时后缀l或L) | 8字节 | -2^63 ~ 2^63-1(-9,223,372,036,854,775,808 ~9,223,372,036,854,775,807)约9千京 |
十进制整数,如:99, -500, 0
八进制整数,要求以 0 开头,如:015
十六进制数,要求 0x 或 0X 开头,如:0x15
二进制:要求0b或者0B开头,如:0b11
code:
public class code01{
public static void main(String args[]){
byte byteVal = 127;
short shortVal = 32767;
int intVal = 2147483647;
long longVal = 9223372036854775807L;
System.out.println(byteVal);
System.out.println(shortVal);
System.out.println(intVal);
System.out.println(longVal);
int HEXval = 0xC, DECval = 14, OCTval=16, BINval = 0b1110;
}
}
6.4浮点型
float(单精度浮点型)double(双精度浮点型)
类型 | 占用存储空间 | 表数范围 |
---|---|---|
float(赋值时后缀f或F) | 4字节 | 有效位数6~7位 |
double(默认) | 8字节 | 有效位数15位 |
code:
public class code02 {
public static void main(String[] args) {
float fVal = 1.1451419198101145141919810f;
double dVal = 1.1451419198101145141919810;
System.out.println(fVal);
System.out.println(dVal);
}
}
6.5科学计数法
使用e或E,
x
e
∣
E
y
=
x
×
1
0
y
,
例
如
3.14
e
2
=
3.14
×
1
0
2
=
314
,
314
E
−
2
=
314
×
1
0
−
2
=
3.14
x e|E y = x\times10^y,例如3.14e2=3.14\times10^2=314,314E-2=314\times10^{-2}=3.14
xe∣Ey=x×10y,例如3.14e2=3.14×102=314,314E−2=314×10−2=3.14
code:
public class code03 {
public static void main(String[] args) {
double a = 3.14e2;
double b = 314E-2;
System.out.println(a);
System.out.println(b);
}
}
6.6布尔类型
boolean
存储true|false,用来做逻辑判断
code:
public class code04 {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
if (a){
System.out.println("a=true");
}
if(b){
System.out.println("b=true");
}
}
}
6.7字符型
char
只能存储一个字符,使用单引号包裹,占用2byte
public class code05 {
public static void main(String[] args) {
char charVal = 'c';
System.out.println(charVal);
}
}
6.8 Java中的转义字符
有些特殊的字符在java中无法正常使用或展示,因为有特殊的作用
使用+要转义的字符
转义字符 | 说明 |
---|---|
\’ | 表示符号' |
\" | 表示符号" |
\\ | 表示符号\ |
\t | 如果前面的内容是制表符位的整数倍, 当前制表符为重开一个,如果不够, 补全一整个制表符位制表符 一个制表符位8个空格 一个字母1个空格 一个汉字是2个空格 |
\n | 换行 |
\r | 光标回到行首 |
\b | 退格 |
code:
public class code06 {
public static void main(String[] args) {
System.out.println("\'");
System.out.println("\"");
System.out.println("\\");
System.out.println("114514\t1919810");
System.out.println("114514\n1919810");
System.out.println("114514\r1919810");
System.out.println("114514\b1919810");
}
}
6.9数据类型的转换
从小到大,正常转换
byte→short→int→long→float→double
从大到小,必须强制转换,可能会损失数据
为了尽量避免数据损失,应该让大的变量的值尽量在小的变量的范围内。
6.10数据类型转换练习
要求:给定任意浮点数,将其转换为两位小数,考虑四舍五入。
code:
public class code08 {
public static double func(double a){
return (int)(a*100+0.5)/100.0;
}
public static void main(String[] args) {
System.out.println(func(3.145));
System.out.println(func(3.141));
}
}