【Java】8中基本数据类型与引用类型

一、基本数据类型

1、8中基本数据类型

基本数据类型包装类(全类名)大小(字节)范围
bytejava.lang.Byte1-128(-2^7)~ 127(2^7-1)
shortjava.lang.Short2-32768(-2^15)~ 32767(2^15 - 1)
intjava.lang.Integer4-2,147,483,648(-2^31)~ 2,147,483,647(2^31 - 1)
longjava.lang. Long8-9,223,372,036,854,775,808(-2^63)~ 9,223,372,036,854,775,807(2^63 -1)
floatjava.lang.Float41.4e-45f ~ 3.4028235e+38f
doublejava.lang.Double84.9e-324 ~ 1.7976931348623157e+308
charjava.lang.Character2\u0000(十进制等效值为 0)~ \uffff(即为 65535)
booleanjava.lang.Booean1或4true、false

注意:除Character外,其他7个包装类,均继承了java.lang.Number类

2、使用注意事项

定义基本类型数据

// 使用大写L,而不是小写l,防止l与1混淆
long num = 0L;
// 定义浮点型数据,需要带上后缀f/F,防止出错
float count = 0.0f;
// 定义浮点型数据,需要带上后缀d/D,防止出错
double money = 0.0d;

// Java中表示二进制数据,以0b开头
int bin = 0b0001;
// Java中表示八进制数据,以0开头
int oct = 0342377;
// Java中表示十六进制数据,以0x开头
int hex = 0x123abc;
// Java中表示十进制数据,默认
// 字面常量数字的下划线,jdk7开始使用,便于阅读
int dec = 1_2_3;

注意:数据类型的自动转换,如,+=等会自动类型转换

3、缓存问题

  • IntegerCache类,Byte、Short、Integer(缓存范围可变)、Long,范围-128 ~ 127
  • Character范围0 ~ 127

4、装箱、拆箱

JDK1.5引入自动装箱(boxing)、拆箱(unboxing)机制。

  • 基本类型到包装类,装箱:Integer.valueOf()
  • 包装类到基本类型,拆箱:intValue()

二、引用数据类型

1、说明

引用类型说明
String不可变类,使用字节数组存储byte[] value
class一切皆对象,每个类只会被加载一次
interface面向接口编程,多态
array内存连续,大小固定,随机访问,增删慢,查询快

2、string的使用

不可变类,字符串常量存储在字符串常量池中,目的是共享、无重复。

(1)字符串的创建
  • 字面量方式:JVM先去字符串常量池(堆)找,有则使用,返回引用地址;无则创建,返回引用地址
  • new关键字方式:JVM先去字符串常量池找,有就不需要创建,直接在堆中创建对象返回引用地址;无则创建,再在堆中创建后返回引用地址
  • + 拼接变量字符串(语法糖):本质为StringBuilder的appen()方法,常量与常量拼接在常量池
String str1 = "a";
String str2 = str1 + "b"; // 原理如下:
                          // StringBuilder sb = new StringBuilder();
                          // sb.append("a");
                          // sb.append("b");
                          // sb.toString(); -> new String(),但不会在常量池中生成 
(2)与其他数据类型转换
  • string与字符数组的转换: toCharArray()、new String()
  • string与基本数据类型、包装类的转换:String.valueOf()、Integer.parseInt()等
  • string与字节数组的转换:getBytes()、new String()
  • string与数组的转换:Arrays.toString()输出
(3)StringBuffer、StringBuilder
  • StringBuffer:JDK1.0,可变字节序列,线程安全,效率低
  • StringBuilder:JDK1.5,可变字节序列,线程不安全,效率高
  • 以上二者初始大小均为16,动态扩容为原容量<<1+2,即容量*2+2
  • 支持链式操作
(4)空串
  • 空串:长度为0的字符串,有内存空间
  • null:默认值,表示一个空对象,未分配内存空间

3、数组的使用

数组的声明方式

// 常用方式,定义有默认值,可后续赋值
int[] arr1 = new int[3];

// 直接初始化数组
int[] arr2 = {0,0,0};

// 常用于匿名的传递参数
int[] arr3 = new int[]{0,0,0};

4、Java是值传递

  • 基本数据类型直接传递值
  • 引用类型传递地址值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值