数据类型
强类型语言
要求变量的使用要严格符合规定,所有变量都必须先定义后使用。(eg:java,c)
优点:安全性高
缺点:速度慢
弱类型语言
变量没有严格规定(eg:js)
java数据类型分为两大类
- 基本类型
- 引用类型
八大基本类型
分类
- 整数:byte,short,int,long
- 小数:float,double
- 字符:char
- 布尔型:boolean
定义方式:
public class Test {
public static void main(String[] args) {
//整数
byte num1 = 10;
short num2 = 20;
int num3 = 100000000;
long num4 = 520L;//long类型要在数字后加个L(不加也可以,加的话L必须大写)
//小数
float num5 = 50.1f;//float类型要在数字后加f(必须加,f可大写也可小写)
double num6 = 3.1415926156;
//字符
char name = '中';
//字符串String不是关键字,是类
//String name1 = "中国";
//布尔值:是非
boolean flag = ture;
//boolean flag = false;
}
}
计数范围
引用数据类型
- 类
- 接口
- 数组
字节的概念
- 位(bit):计算机内部数据存储的最小单元,11001100是一个八位二进制数
- 字节(byte):计算机中数据处理的基本单位,用B表示
- 1B=8bit
- 字符:指计算机中使用的字母,数字,字和符号
举例:
- 1bit表示1位
- 1Byte表示一个字节 1B(字节)=8b(位)
- 1024B=1KB
进制的表示方法
二,八,十六进制表示
- 二进制:0b
- 八进制:0
- 十六进制:0x
代码示例
public class Test {
public static void main(String[] args) {
//二进制0b 八进制0 十六进制0x
int i1 = 10;
int i2 = 0b10;
int i3 = 010;
int i4 = 0x10;
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
}
}
运行结果:
经典题型
浮点型的比较
public class Test {
public static void main(String[] args) {
double d = 1.0/10;
float f1 = 0.1f;
System.out.println(d==f1);
System.out.println(d);
System.out.println(f1);
}
}
运行结果:
public class Test {
public static void main(String[] args) {
float d1 = 32121546466216456f;
float d2 = d1 + 1;
System.out.println(d1==d2);
}
}
运行结果
分析结果:
- 1.0/10与0.1在数学上是相等的,但使用浮点类型输出进行比较值却不相等。
- 浮点型d1=d2+1,在数学上不相等,但输出却相等
- 原因是因为java中浮点类型是有限的,离散的,有舍入误差的,使得接近但不想等的数输出相等。
- 在进行精密运算时,最好完全避免使用浮点数进行比较,可以使用BigDecimal数学工具类
字符可以转换为数字
public class Test {
public static void main(String[] args) {
char c1 = 'a';
char c2 = '中';
System.out.println((int)c1);
System.out.println((int)c2);
System.out.println(c1);
System.out.println(c2);
}
}
运行结果请添加图片描述
结论:char本质是查找Unicode编码表,所有的字符本质还是数字,‘A’=65,‘a’=97.
转义字符
- \t:空格
- \n:换行