数据类型
位(bit):是计算机内部数据存储的最小单位, 11001100是一个八位二进制数。
字节(byte) :是计算机中数据处理的最基本单位,习惯上用大写B来表示
字符:是指计算机中使用的字母、数字、字和符号
中文单位 | 中文简称 | 英文单位 | 英文简称 | 换算 |
---|---|---|---|---|
位 | 比特 | bit | b | |
字节 | 字节 | Byte | B | 1B = 8b |
千字节 | 千字节 | KiloByte | KB | 1KB = 1024B |
兆字节 | 兆 | MegaByte | MB | 1MB = 1024KB |
吉字节 | 吉 | GigaByte | GB | 1GB = 1024MB |
太字节 | 太 | TeraByte | TB | 1TB = 1024GB |
拍字节 | 拍 | PetaByte | PB | 1PB = 1024TB |
备注:
在Unicode中一个中文汉子是3个字节。
在GBK中一个中文汉子是2个字节。
1字符 = 2字节
一、基本数据类型
整型和浮点型可以用‘_’连接表示 : int i = 32_45_67; //324567
整数类型(byte,short,int,long)
默认int类型
定义long类型要加L
byte -128 ~ 127 1个字节 内存占8位
short -32768 ~ 32767 2个字节 内存占16位
int -2^31 ~ 2^31-1 4个字节 内存占32位
long -2^63 ~ 2^63-1 8个字节 内存占64位 正负19位数
浮点类型(float,double)
默认double类型
定义float类型要加F浮点数是有限长度,离散数,有舍入误差,结果是大约数,不能做精度计算
float 4个字节
double 8个字节
POSITIVE_INFINITY 正无穷大
NEGATIVE_INFINITY 负无穷大
NaN 非数
字符型(char)
'0' == 48 ,49,50,51,52,53,54,55,56,57
'A' == 65
'a' == 97
char 2个字节
布尔型(boolean)
Boolean 1位 false true
数值的4种表示方式:
十进制
int i = 10;
//10
二进制
二进制的整数以 0b 或 0B 开头
八进制
八进制的整数以 0 开头
int i = 010;
//8
十六进制
十六进制的整数以 0x 或者 0X 开头,其中10~15 分别以 a~f表示
int i = 0x10;
//16
二、引用数据类型
类(class)
接口(interface)
数组(array)
类型转换
运算中,不同类型的数据先转化为同一类型,然后进行运算。
隐式转换
byte,short,char -- int -- long -- float -- double
强制转换(高转低)
targetType varName = (targetType) (data)
byte d = (byte)(a+b)
注意点:不能对boolean类型转换
转换的时候可能存在内存溢出,或者精度丢失。
计算溢出实例
public class HelloWord {
public static void main(String[] args){
//操作比较大的数的时候,注意溢出问题
int money = 10_0000_0000; //jdk新特性,数字之间可以用下划线分割
int years = 20;
int total = money * years; //-1474836480, 计算的时候溢出了
long total2 = money * years; //-1474836480, 默认是int,转换之前已经存在问题了
long total3 = money * ((long)years); //20000000000 先把一个数转换为long,在计算,计算结果返回大类型。
}
}
Unicode字符集
范围是 \u0000 ~ \uFFFF , 一共可以表示 65536个字符。其中前256个(\u0000 ~ \u00FF) 字符和ASCII码字符完全重合
转义字符 | 说明 | Unicode表示方式 |
---|---|---|
\b | 退格符 | \u0008 |
\n | 换行符 | \u000a |
\r | 回车符 | \u000d |
\t | 制表符 | \u0009 |
\" | 双引号 | \u0022 |
\’ | 单引号 | \u0027 |
\\ | 反斜杠 | \u005c |