Java知识点复习(二)基本数据类型

  1. 1. 1、基本数据类型
    1. 1.1. 1.1、整数类型
    2. 1.2. 1.2、小数类型(浮点类型)
      1. 1.2.1. 1.3、逻辑类型
    3. 1.3. 1.4、字符类型
    4. 1.4. 总结:
  2. 2. 2.基本数据类型转换
    1. 2.1. 2.1、自动类型转换
    2. 2.2. 2.2、强制类型转换
    3. 2.3. 2.3、其他特殊转换

1、基本数据类型

每一种数据类型,可以看作一个容器,四个容器的区别是容量不同。

1.1、整数类型

整数类型分为byteshortintlong用于存放整数

类型 占用字节数 范围
byte 1 -128~127
short 2 -2^15 ~ 2^15-1 约等于 正负3万多
int 4 -2^31 ~ 2^31-1 约等于 正负21亿
long 8 -2^63 ~ 2^63-1

1.2、小数类型(浮点类型)

小数类型分为floatdouble,小数类型要大于整数类型

类型 占用字节数(小数位) 精度
float 4 单精度
double 8 双精度

注意:

1.小数类型默认常量为double,如果要声明float类型,小数后面必须加”F”或”f”。

2.通常情况下,应该使用double类型,以其更为精确。

1.3、逻辑类型

boolean 布尔类型 只能取值ture或false,表示最基础的逻辑,通常用于程序流程控制。

字面值:

true 对,正确,真…

false 错,错误,假…

boolean flag = true;

注意: 布尔类型不可以用 0 或 非0 的整数替代 false 或 ture

1.4、字符类型

char 类型 表示字符

1.可以表示单个字符 2.可以无符号表示 3.字符常量用单引号括起

字符和字符串的区别:

“abc” — 字符串

“a” — 字符

char 占用2个字节

还可以无符号表示整数 0~2^16-1 -> 65535

总结:

基本数据类型有8种

byte short int long float double boolean char
1 2 4 8 4 8 2

8种基本数据类型排序:

bayte -> short (char) -> int ->long ->float ->double

String字符串不是基本数据类型,是引用数据类型。

2.基本数据类型转换

2.1、自动类型转换

自动类型转换:在进行赋值或运算时,精度(容量)小的类型自动转换为精度(容量)大的类型。

理解:小容量的数据转换到大容量

代码示例:

public class Demo01{
public static void main(String[] args){
//1.自动转换
int m1=10,m2=5;
//10在int容器,转换到double容器,后面会补.0000000
double a = 10;
//5在int容器,自动转换到byte容器(特殊,大的容器的数据自动转到小容器)
byte d = 5;
System.out.println("a:"+a); //10.0
System.out.println("d:"+d); //5
}
}

2.2、强制类型转换

大容量的数据转换到小容量,必须加上强制类型转换符。

强制类型转换符问题:

问题1:溢出,数据丢失,不会报错

问题2:精度丢失

只要最终转换的小于等于要转换的就没问题

2.3、其他特殊转换

shuort和char转换

public class Demo03{
public static void main(String[] args){
//溢出
short a1 = -200;
char a2 = (char)a1;
System.out.println(a2);
char b1 = 50000;
short b2 = (short)b1;
System.out.println(b2);
//0~3万转换
char c1=97;
short c2=(short)c1;
System.out.println(c2);
short d1=97;
char d2=(char)d1;
System.out.println(d2);
}
}

byte short char只要参与运算 首先提升为int类型

public class Demo04{
public static void main(String[] args){
//short byte char参与运算,变成int
byte a1 = 10;
byte a2 = 20;
byte a3 = (byte)(a1+a2);
System.out.println(a3);
}
}

两个不同类型运算结果是更大的类型,两个相同类型运算结果一定是这个类型。

public class Demo05{
public static void main(String[] args){
//两个不同类型运算,结果是大的类型
double a1=3.14;
int a2=10;
double a3 = a1+a2;
System.out.println(a3); //13.14

byte b1=5;
short b2=10;
int b3 = b1+b2;
System.out.println(b3); //15

double c1 = 7/5;
System.out.println(c1); //2.0

}
}