数据类型
-
强类型语言 : 要求变量的使用严格符合规定,所有变量必须先定义后才能使用
-
弱类型语言
Java的数据类型分为两大类
1.基本数据类型 (primitive type)
//八大基本数据类型
//整数型
byte //占1个字节 范围: -128(-2^7) ~ 127(2^7-1)
short //占2个字节 范围: -32768(-2^15) ~ 32767(2^15-1)
int //占4个字节 范围: -2,147,483,648(-2^31)~ 2,147,483,647(2^31-1)
long //占8个字节 范围: -9,223,372,036,854,775,808(-2^63) ~ 9,223,372,036,854,775,807(2^63-1)
//(Long类型要在数字后面加上L)
//小数:浮点数
float //占4个字节
//float类型要在数字后面加上F
double //占8个字节
//字符
char //占2个字节 范围:0(\u0000) ~65535 (\uffff)
//布尔值
boolean //占1位 其值是true和false两个
2.引用数据类型(reference type)
1. 类
2. 接口
3. 数组
什么是字节
位(bit) : 是计算机 内部数据 存储的最小单位, 11001100是一个八位二进制数
字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示
1B(byte,字节) = 8bit(位)
字符: 是指计算机中使用的字母、数字、字和符号
1bit表示1位,
iByte表示一个字节 1B=8b
1024B=1KB
1024KB=1M
1024M=1G
1024G=1TB
拓展
整数型拓展:
进制:
- 二进制 : 二进制是以0b开头的
- 十进制
- 八进制 : 八进制是以0开头的
- 十六进制 : 十六进制是以0x开头的
public class Demo01 {
public static void main(String[] args) {
int i1 =10;
int i2 =010; //八进制前面加上0
int i3 = 0x10; //十六进制前面加上0x
int i4 = 0x11; //十六进制前面加上0x
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
}
}
运行结果为:
浮点数拓展:
银行业务中的钱的计算该用什么计算?会使用float么?
答案是:不会,因为float浮点数不适合进行比较以及计算,计算出来的是舍入误差,接近但是不等与。所以银行业务一般使用BigDecimal进行计算比较
字符拓展:
字符型的char本质上还是数字,内含Unicode表
public static void main(String[] args) {
char c1 = 'A';
char c2 = '瑾';
System.out.println(c1);
System.out.println((int)c1); //强制转换
System.out.println(c2);
System.out.println((int)c2); //强制转换
char c3 = '\u0066';
System.out.println(c3);
}
数据类型之间的转换
[分为强制转换(由高到低)和自动转换(由低到高)]
由于java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
低 -------------------------------------------------------------> 高
byte,short,char--> int --> long --> float --> double
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换为低能量时,强制转换!
- 转换的时候可能存在内存溢出,或者进度问题!
public static void main(String[] args) {
int in = 2147483647; //int的最大值是2147483647(20亿多)
byte by = 127; //byte的最大值是127
int i = 128;
byte b = (byte)in; //强制转换(从低到高转换需要强制转换)
double bo = i; //自动转换(从高到低进行转换是自动转换)
System.out.println(i);
System.out.println(b);
System.out.println(bo);
System.out.println((int)23.7); //23.7是double类型的
System.out.println((int)-45.11f); //-45.11f是float类型的
}
控制台输出:
public static void main(String[] args) {
//计算比较大的数的时候
int money = 10_0000_0000;//10亿
int years = 20;
int total = money * years;
System.out.println(total);
long total2 = money * years;
System.out.println(total2);
long total3 = money * (long)years;
System.out.println(total3);
}
控制台: