数据类型
PS:平常生活中,也会用到一些数据的类型,例如:数字、字符(文字)、是、非,且数字分为整数和小数,在Java中也是和生活中一样,有属于自己的数据类型,Java种有八大基本数据类型和一些引用类型。
什么是字节?什么是位?
- 位(bit):是计算机内部数据储存的最小单位,11001100是一个八位二进制数
- 字节(byte):是计算机中数据处理的基本单位,习惯上用大写B来进行表示
- 1B(byte字节) = 8bit(位)
- 字符:是指计算机中使用的字母、数字、字和符号
- 1bit表示1位
- 1Byte表示1个字节,1B=8bit
单位换算
- 1B=8bit
- 1024B=1KB
- 1024KB=1M
- 1024M=1G
- 1024G=1TB
- 1024T=1P
- 1024P=1E
- 1024E=1Z
- 1024Z=1Y
- 1024Y=1BB
- 1024BB=1NB
- 1024NB=1DB
基本类型(primitive type)
数值类型
整数类型
- byte占1个字段,其长度范围:-128~127
- short占2个字节,其长度范围:-32768~32767
- int占4个字节,其长度范围:-2147483648~2147483647
- long占8个字节,其长度范围:-9223372036854775808~9223372036854775807
浮点类型
- float占4个字节
- double占8个字节
字符类型
- char占2个字节
boolean类型
- boolean类型也叫布尔类型,占1位,其值只有true和false
public class DataType {
public static void main(String[] args) {
// 八大基本数据类型
// 数值类型
// 整数类型
int num1 = 10;
byte num2 = 20;
short num3 = 30;
// Long类型要在数字后面加个L
long num4 = 30L;
// 小数:浮点数,float类型要在数据后面加个F
float num5 = 55.5F;
double num6 = 3.141592653;
// 字符,只能给一个字符
char str1 = '中';
// 布尔值:是非
boolean isFlag1 = true;
boolean isFlag2 = false;
}
}
引用类型(reference type)
- 类
- 接口
- 数组
数据类型拓展
PS:平常生活中我们使用的都是十进制,计算机使用的是二进制
public class DataTypeExpansion {
public static void main(String[] args) {
// 一、整数知识拓展 进制 二进制0b 十进制0 八进制0 十六进制0x
int i1 = 10; // 十进制
int i2 = 010; // 八进制
int i3 = 0x10; // 十六进制 0~9 A~F
int i4 = 0x11; // 十六进制 0~9 A~F
System.out.println(i1); // 输出结果10
System.out.println(i2); // 输出结果8
System.out.println(i3); // 输出结果16
System.out.println(i4); // 输出结果17
System.out.println("=============================");
// 二、浮点数知识拓展
// 不能使用float和double去进行计算和比较,会出现精度丢失问题
// 涉及金钱业务都需要使用BigDecimal类去进行计算和比较
// 以小数0,1举例
float f1 = 0.1f;
double d1 = 1.0 / 10;
System.out.println(f1 == d1);// 输出false
System.out.println(f1);// 输出0.1
System.out.println(d1);// 输出0.1
float f2 = 42253425362f;
float f3 = f2 + 1;
System.out.println(f2 == f3);//输出结果true,两个结果本应该不相等,但是现在相等了
// float 长度有限,且离散,存在舍入误差,只能表示接近但是不等于
System.out.println("=============================");
// 三、字符知识拓展
char c1 = 'a';
char c2 = '王';
// 变量前加上圆括号并在括号中写上数据类型,这种方式叫做强制转换
// 这是固定写法,后续会讲到,先有个认识
System.out.println(c1);// 输出a
System.out.println((int) c1); // 输出97,强制转换
System.out.println(c2);// 王
System.out.println((int) c2);// 输出29579,强制转换
// 结论:所有字符其本质仍然是数字
// 编码 Unicode 2个字节 0~65536(范围不会固定,仍然会增长)
// 表中使用97去代表a,使用29579代表文字王,范围为:u0000~uffff
char c3 = '\u0061';
System.out.println(c3);// 输出a
System.out.println("=============================");
// 四、转译字符知识拓展
// CR-->\r LF-->\n,在编辑器中可以很轻易的看见,如Notepad++
// 对于换行的动作,各个系统环境下都不一样
// Linux/Unix一般是一个0x0A表示换行(\n)
// Windows一般是0x0D和0x0A表示换行(\r\n)
// 苹果系统一般是0x0D采用CR回车符表示换行(\r)
// \t 制表符对应计算机键盘上的Tab键
System.out.println("Hello\tWord"); // 输出Hello Word
// \n 换行符
System.out.println("Hello\nWord"); // 输出Hello
// Word
// \r 回车符
System.out.println("Hello\rWord"); // 只输出Word,很神奇吧
System.out.println("=============================");
// 五、字符串知识拓展
String s1 = new String("Hello Word");
String s2 = new String("Hello Word");
System.out.println(s1 == s2); //输出false
System.out.println(s1.equals(s2)); //输出true
String s3 = "Hello Word";
String s4 = "Hello Word";
System.out.println(s3 == s4);//输出true
// 我们眼中看着数据相等的字符串,为什么程序执行后,却不相等呢
// 后续会讲到,从内存的角度去讲解,就会知道为什么不相等
System.out.println("=============================");
// 六、boolean布尔型知识拓展
boolean b1 = true;
// 如果b1为真可以执行,和生活当中做假设一样,如果什么什么,就怎么怎么样
if (b1) {
System.out.println("1==:" + b1);
}
if (b1 == true) {
System.out.println("2==:" + b1);
}
b1 = false;
if (b1)
System.out.println("3==:" + b1);
System.out.println("4==:" + b1);
// 以上3种程序编写方式都可以
// 程序执行结果
// 1==:true
// 2==:true
// 4==:false
}
}