1,为什么有数据类型
-
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
2,Java中数据类型的分类
-
基本数据类型
-
引用数据类型
3,基本数据类型分类(4类8种)
【1】整数型
-
byte 占一个字节 -128到127
-
short 占两个字 -2^15~2^15-1
-
int 占四个字节 -2^31~2^31-1
-
long 占八个字节 -2^63~2^63-1
【2】浮点型
-
float 占两个字节 -3.403E38~3.403E38
-
double 占四个字节-1.798E308~1.798E308
【3】字符型
-
char 占两个字节 0~65535
【4】布尔型
-
boolean :boolean理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小
class Demo1_DataType { //DataType数据类型
public static void main(String[] args) {
//整数类型
byte b = 10; //占一个字节,-128 到 127
short s = 20; //占两个字节
int i = 30; //占四个字节 整数默认的数据类型就是int类型
long x = 8888888888L; //占八个字节 如果long类型后面加L进行标识最好加大L,因为小l太像一了
System.out.println(b);
System.out.println(s);
System.out.println(i);
System.out.println(x);
//System.out.println(12345 + 54321l);
//浮点类型
float f = 12.3F; //占四个字节
double d = 33.4; //占八个字节 小数默认的数据类型是double,double类型后面也可以用D或d标识,但是一般不加
System.out.println(f);
System.out.println(d);
//字符类型
char c = 'a'; //占两个字节
System.out.println(c);
//布尔类型
boolean b1 = true;
boolean b2 = false;
System.out.println(b1);
System.out.println(b2);
}
}
4,long与float的取值范围谁大谁小
【1】进行混合运算的时候,byte,short,char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
-
byte,short,char -- int -- long -- float -- double
* long: 8个字节
* float:4个字节
* IEEE754
* 4个字节是32个二进制位
* 1位是符号位
* 8位是指数位
* 00000000 11111111
* 0到255
* 1到254
* -126到127
* 23位是尾数位
* 每个指数位减去127
【2】结论:
-
它们底层的存储结构不同。
-
float表示的数据范围比long的范围要大
long:2^63-1
float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
5,字符和字符串参与运算
【1】ASCII码表的概述
【2】//98,因为有ASCII码表,a字符对应的是int类型的97
//System.out.println('a' + 1);
//System.out.println((char)('a' + 1));
通过看结果知道'a'的值是多少,由此引出ASCII码表
记住三个值:
'0' 48
'A' 65
'a' 97
【3】 //任何数据类型用+与字符串相连接都会产生新的字符串
System.out.println("hello"+'a'+1);
System.out.println('a'+1+"hello");
【4】+在有字符串参与中被称为字符串连接符
System.out.println(" 5 + 5 = " + (5 + 5));
5,char数据类型
-
char c = 97; 0到65535
-
Java语言中的字符char可以存储一个中文汉字吗?为什么呢?
可以。因为Java语言采用的是Unicode编码。Unicode编码中的每个字符占用两个字节。中文也是占的两个字节 所以,Java中的字符可以存储一个中文汉字
class Demo5_Char {
public static void main(String[] args) {
char c = 'a';
System.out.println(c);
byte b = 100;
char c1 = 97; //0 - 65535
System.out.println(c1);
char c2 = 3;
char c3 = 4;
char c4 = 5;
char c5 = 6;
System.out.println(c2);
System.out.println(c3);
System.out.println(c4);
System.out.println(c5);
//char类型是否可以存储中文
char c6 = '中';
System.out.println(c6);
}
}