数据类型划分:
1.基本数据类型
- 数值型(byte、short、int、long、double、float)
- 字符型(char)(默认值,\u0000(空格))
- 布尔型(boolen)(默认值,false)
共八种:
基本类型 | 默认值 | 存储 | 对应的包装类 | 数据范围 |
boolen | false | 1位 | Java.lang.Boolen | ture/false |
byte | 0 | 一个字节 | Java.lang.Byte | -128 — 127 |
short | 0 | 二个字节 | Java.lang.Short | -32768 — 32767 |
char | ‘\u0000’ | 二个字节 | Java.lang.Character | 0 — 65535 |
int | 0 | 四个字节 | Java.lang.Integer | -2^31 — 2^31-1 |
float | 0.0F/0.0f | 四个字节 | Java.lang.Float | 32位IEEE 754单精度 |
double | 0.0/0.0(d) | 八个字节 | Java.lang.Double | 32位IEEE 754双精度 |
long | 0L/0l | 八个字节 | Java.lang.Long | -2^63 — 2^63-1 |
注:位只有两种形式0和1,而字节是有8个位组成的。可以表示256个状态。1字节(byte)=8位(bit)
数据范围的理解:
一个int值占4个字节byte,一个字节是8位bit(即8个二进制位),所以int型占32位。其中第一位是标志位,标志位为0表示正数,标志位为1表示负数,剩余的31位是用来表示数字部分的。
- 在程序开发中,整数就用int,小数就用double
- long一般用于描述日期、时间、内存或文件大小(字节)
- 如果要进行编码或者进行二进制流的操作,使用byte
1.2整形
- 在Java程序中,任何一个整型常量都是int类型
范例:定义一个整型变量
int num = 10;//定义一个整形常量
System.out,println(num * 2);
以下是当时学习时遇到的一个问题:
范围小的数据类型可以自动提升为大的数据类型,范围大的数据类型只有强转才可以转化为小的,但有时会存在丢失内容.
例:
public class Ex1
{
public static void main(String[] args){
int maxValue = Integer.MAX_VALUE;
long num = maxValue+1;
System.out.println(num);
}
}
我当时觉得int型既然存在数据溢出问题,所以应该更换数据类型,使用long来解决数据溢出问题:
public class Ex2
{
public static void main(String[] args){
int maxValue = Integer.MAX_VALUE;
long num = maxValue+1;
System.out.println(num);
}
}
但是问题没有解决,后来发现原因是所有程序都是由右往左,所以应该给1后面加上L(l)
long num = maxValue+1L;
2.2所有数据类型默认值应结合类来观察,方法中的局部变量不存在默认值(局部变量应该先赋值后使用)
1.3浮点型
- *描述小数默认为double型,float范围小于double,如果要使用float,必须使用强制类型转换或者在小数后加F(f)。
注意此代码:
float f1 = 1.1;
float f2 = 1.1;
System.out.println(f1 * f2);
VSCode 没有报错,但是结果计算错误了。
IDEA会直接报错。
注:大的类型转换为小的为强制转换,小的转大的为声明。
1.4字符型
- 字符型用char表示,并且使用’'来表示字符变量内容。
- java中字母与汉字大小相同,‘a’==‘哈’。
- char与int转换:
char a = 'A';
char b =a;
System.out.println(b);
输出结果为65(A的ASCII码)
- 大写字母变小写字母:(相差32个)
char ex = 'A';
int num = ex + 32;
char ex1 = (char)num;
Sysout.out.println(ex1);
输出结果为 a
1.5布尔型
- boolen(默认值为flase)
2.引用数据类型(null)
- 分为数组、类、接口