[Java 基础] 8 种基本数据类型

目录

# 8 种基本类型

# 类型转换

# 包装类型

# char 类型   

       


      

# 8 种基本类型

Java 内置 8 种基本数据类型:
  • 4 种整数型
    • byte —— 1 字节, 有符号数
    • short —— 2 字节, 有符号数
    • int —— 4 字节, 有符号数
    • long —— 8 字节, 有符号数
  • 2 种浮点型
    • float —— 4 字节, 单精度浮点数
    • double —— 8 字节, 双精度浮点数
  • 1 种字符型
    • char —— 2 字节, Unicode 字符, 无符号数, 最小值 '\u0000', 最大值 '\uffff'
  • 1 种布尔型
    • boolean
        
4 种整数型都是有符号数
char 是无符号数
整数型默认为 int 类型
浮点数默认为 double 类型
        
位移操作符只能用来处理整数类型.
如果对 char, byte, short 类型进行位移操作, 那么在位移前, 会被转换为 int 类型, 得到的结果也是 int 类型.
如果对 long 类型进行位移操作, 得到的结果也是 long 类型.
        

       


# 类型转换

Java 允许把任何基本数据类型通过 自动类型转换强制类型转换而转换成别的基本数据类型 (除了布尔类型, 布尔类型不允许进行类型转换).
容量小的数据类型可以自动转换为容量大的数据类型 (容量指的是表数范围, 不是字节大小)
byte, short, char 在运算时会转换成 int, 结果也是 int.
        

       


 # 包装类型

基本类型具有包装类型, 使得可以在堆中创建非基本对象, 包装类内部封装了对应的基本类型.
包装类都是不可变类, 不可变使程序更加简单安全.
        
IntegerCache 是 Integer 的私有内部类, 在初始化的时候创建并保存了 -128 ~ 127 的对应的 Integer 对象, 这样 -128 ~ 127 范围的就不用重复创建了, 直接取 IntegerCache 内的就可以了. 
这样节省了内存空间. 又因为 Integer 是不可变的, 可以安全的共享. 这种设计思路叫做 享元模式 (Flyweight, 共享的轻量级元素).
        
Integer i1 = 127;
Integer i2 = 127;
Integer i3 = new Integer(127);
assert i1 == i2;       // i1, i2 是同一个 IntegerCache 中的对象
assert i1 != i3;       // i1 是 IntegerCache 中的对象, i3 是 new 出来, 是不同的对象

Integer i4 = 128;
Integer i5 = 128;
assert i4 != i5;       // i4, i5 是分别 new 出来的, 是不同的对象

     


# char 类型

在 Java 内部用 Unicode 处理字符, 编码格式为 UTF-16BE. 
UTF-16 使用 2 或 4 个字节表示一个字符, Unicode 编号在 65536 以内的占 2 个字节, 超出的占 4 个字节.
        
char 本质上是一个固定占用 2 个字节的无符号正整数, 这个正整数对应 Unicode 编号, 用于表示那个 Unicode 编号对应的字符.
        
由于 char 固定占用 2 个字节, 那 4 个字节的字符怎么表示? 使用 2 个 char. 相关类有 Character, String.
int 可以表示所有的 Unicode, 所以 Character 类中的方法有 char 和 int 的重载版本. 可以说 Character 面向的不是 char, 而是 Unicode
        
        
// 以下四种表示是一样的
char c = '马'
char c = 39532
char c = 0x9a6c
char c = '\u9a6c'
        
        
        
        
        
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值