Java数据类型
免责说明:java基础资料均来自于韩顺平老师的《循序渐进学Java零基础》教案,具体视频内容可以去B站观看,这些资料仅用于学习交流,不得转载用于商业活动
1.数据类型
每一种数据都定义了明确的数据类型,在内存中分配大小不同的内存空间(字节)
8大基本数据类型
- 整数类型:存放整数
- byte,1个字节
- short,2个字节
- int,4个字节(默认)
- long,8个字节
- 浮点类型(小数)
- float,4个字节
- double,8个字节(默认)
- 字符型:char,2个字节
- 布尔型:boolean,1个字节,存放true和false
引用数据类型
- 类:class
- 接口:interface
- 数组:[]
- 枚举:enum
- 注解: @XXX
- 字符串:String
2.整数类型
1 byte num1=18; 2 short num2=18; 3 int num3=18; //4个字节 4 long num4=18; //8个字节
说明:
- Java各整数类型又固定的范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性
- Java的整型常量(字面量,具体数值)默认为int型,声明long类型常量需要在后面加上"l"或者“L”
- bit:计算机中最小存储单位。
- byte:计算机中基本存储单元1byte=8bit
3.浮点类型
说明:
- 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
- 尾数部分可能丢失,造成精度损失(小数都是近似值)
- 与整数类型类似,Java浮点类型也有固定的范围和字段长度,不受操作系统影响,float是4个字节,double是8个字节
- Java的浮点型常量默认为double型,声明floar型常量,后面需要加“f”或者“F”
- 浮点型常量有两种表示形式
- 十进制数形式:5.12 ,512.0F,.512(必须有小数点)
- 科学计数法形式:5.12e2【5.12*10的2次方】 5.12E-2 【5.12/10的二次】
- 通常情况下,应该使用double类型,因为他比float更精确
4.字符类型
字符类型可以表示单个字符,字符类型是char,char是两个字节(可以存放汉字),多个字符我们使用字符串String
char c1='a'; char c2='\t'; char c3='中' char c4=97; char c5='a'+2
说明:
- 字符常量是用单引号(' ')引起来的单个字符
- java中还允许使用转义字符'\'来讲其后的字符转变为特殊字符型常量。如 '\n'表示换行符
- 在Java中char的本质是一个整数,在输出时,是unicode码对应的字符
- 可以直接给char赋值一个整数,然后输出时,会按照对应的unicode字符输出。如97对应字符a
- char类型是可以进行运算的,相当于一个整数,因为它都对应有unicode码
4.2 字符编码表
ASCII编码表:一个字节表示,一共128个字符,实际上一个字节可以表示256(一个字节8位 就是2的8次方)个字符,只用了128个
Unicode编码表:固定大小的编码,使用两个字节来变色字符,字母和汉字同一都占用两个字节,这样浪费空间
utf-8编码表:大小可变的编码,字母使用1个字节,汉字使用3个字节
gbk编码表:可以变色汉字,而且范围广,字母使用1个字节,汉字使用2个字节
gb2312编码表: 可以表示汉字,gb2312<gbk
big5码:繁体中文
4.2.1 ASCII码
上世纪60年代,美国制定了一套字符编码(使用一个字节),对英语字符与二进制位之间的关系,做了统一规定。被称为ASCII码。
ASCII码一共规定了128个字符的编码,只占用了一个字节的后面7位,最前面的1位统一规定为0.
特别提示:一个字节可以表示256个字符,ASCII码只用例128个字符
缺点:不能表示所有字符
4.2.2 Unicode编码
好处:将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码,使用Unicode没有乱码的问题
缺点:一个英文字母和一个汉字都占用2个字节,这对于存储空间来说是浪费
2的16次方是65536,所有最多编码是65536个字符
编码0-127的字符是与ASCII的编码一样。比如'a' 在ASCII码是0X61,在unicode码是0X0061,都对应97.因此unicode码兼容ASCII码
4.2.3 UTF-8编码
UTF-8是在互联网上使用最广的一种Unicode的实现方式(改进型)
UTF-8是一种变长的编码方式。它可以使用1-6个字节表示一个符号,根据不同的符号而变化字节长度
使用大小可变的编码 字母占1个字节,汉字占3个字节
5.布尔类型:boolean
基本介绍
布尔类型数据只允许取值true和false,无null
布尔类型占用1个字节
布尔类型适用于逻辑运算