Java 基本数据类型和包装类

5 篇文章 0 订阅
5 篇文章 0 订阅

1 Java 基本数据类型

1.1 八种基本数据类型

  • 四种整数类型 (byte、short、int、long)
  • 两种浮点数类型 (float、double)
  • 一种字符类型(char)
  • 一种布尔类型(boolean)

1.2 基本用法及说明

byte:
  • 8 位,占 1 字节
  • 最小值是 -128(-2^7),最大值是 127(2^7 - 1)
  • 默认值是 0
  • 例子:byte a = 100,byte b = -50
short:
  • 16位,占 2 字节
  • 最小值是 -32768(-2^15),最大值是 32767(2^15 - 1);
  • 默认值是0;
  • 例子:short s = 1000,short r = -20000
int:
  • 32位,占 4 字节
  • 最小值是-2,147,483,648(-2^31)
  • 最大值是2,147,485,647(2^31 - 1)
  • 一般地整型变量默认为int类型;
  • 默认值是0;
  • 例子:int a = 100000, int b = -200000
long:
  • 64位,占 8 字节
  • 最小值是-9,223,372,036,854,775,808(-2^63)
  • 最大值是9,223,372,036,854,775,807(2^63 -1)
  • 默认值是 0L
  • 例子: long a = 100000L,int b = -200000L
float:
  • 32位,占4字节
  • -3.4E38- 3.4E38… 浮点数是有舍入误差的
  • 默认值是 0.0f
  • 例子:float f1 = 234.5f,float f = 6.26F
double:
  • 64位,8位
  • 浮点数的默认类型为double类型
  • 默认值是 0.0d
  • 例子:double d1 = 123.4
boolean:
  • 只有两个取值:true 和 false
  • 默认值是false;
  • 例子:boolean one = true, two = false

Java 规范中,没有明确指出 boolean 的大小。在《Java虚拟机规范》给出了 4 个字节,和 boolean 数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。

char:
  • char 类型是一个单一的16位Unicode字符;用 ''表示一个字符
  • 可以当整数来用,它的每一个字符都对应一个数字

1.3 八种包装类型

1.3.1 包装类
  • byte --> Byte
  • short --> Short
  • int --> Integer
  • long --> Long
  • float --> Float
  • double --> Double
  • char --> Character
  • boolean --> Boolean
1.3.2 包装类的构造方法
  • 所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例

    public Type(type value)
    如:Integer i=new Integer(1);

  • 注意事项:
    (1)Boolean 类构造方法参数为 String 类型时,若该字符串内容为 true (不考虑大小写),则该 Boolean 对象表示 true,否则表示 false。
    (2)当 Number 包装类构造方法参数为 String 类型时,字符串不能为 null, 且该字符串必须可解析为相应的基本数据类型的数据,否则编译通过,运行时NumberFormatException异常。

2 int 和 Integer 有什么区别

2.1 区别

  • int 为基本类型,Integer 为包装类型,Integer 有很多方法可以使用。
  • int 可以通过 Integer.valueOf(xx) 转成 Integer
  • Integer 可以调用 intValue()方法得到 int值
  • Java 1.5 之后不用显示调用,JVM 会自动进行拆装箱

2.2 注意事项

  • 使用 Integer 和 int 直接比较大小时需要判断 Integer 的值是否为null。因为 Integer 会调用 intValue()方法 拆箱为 int,为 null 时会报空指针异常。

2.3 一个 Integer 值比较不注意的问题

public void test2() {
    Integer a1 = Integer.valueOf(60);
    Integer b1 = 60;
    System.out.println("1:="+(a1 == b1));

    Integer a2 = 60;
    Integer b2 = 60;
    System.out.println("2:="+(a2 == b2));

    Integer a3 = new Integer(60);
    Integer b3 = 60;
    System.out.println("3:="+(a3 == b3));

    Integer a4 = new Integer(60);
    Integer b4 = new Integer(60);
    System.out.println("4:="+(a4 == b4));

    Integer a5 = 129;
    Integer b5 = 129;
    System.out.println("5:="+(a5 == b5));
}

结果:

1:=true
2:=true
3:=false
4:=false
5:=false

Java 中 Integer 类型对于 -128 - 127 之间的数是缓冲区取的。所以用等号比较是一致的。
但对于不在这区间的数字是在堆中 new 出来的。所以地址空间不一样,也就不相等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值