java 基本类型

本文深入探讨Java的基本数据类型,包括它们的封装类、内存空间、取值范围及描述。同时,文章详细介绍了数组操作,如填充、排序、二分查找和子数组生成,以及Java 8引入的Optional类型,其提供了丰富的接口来处理可能为空的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java 基本类型

基本类型

java 基本的基本类型包括 boolean, byte, char, short, int, long, float, double

每个类型都有一个封装类,封装类继承自 Object 对象,可以用作存放在容器中,另外还提供了一些辅助函数

基本类型封装类内存空间取值范围描述
booleanBoolean1true 或 false布尔类型
byteByte8[-128, 127]字节类型
shortShort16[-32768, 32767]短整型
intInteger32[-2147483648, 2147483647]整型
longLong64[-9223372036854775808, 9223372036854775807]长整型
floatFloat32[1.4E-45, 3.4028235E38]单精度浮点
doubleDouble64[4.9E-324, 1.7976931348623157E308]双精度浮点
charCharacter16-字符类型
voidVoid--空类型

普通类型能隐式转换成对应的封装类型

Integer i = 10;
Double d = 10.0;

封装类还定义了类型的表示范围

System.out.println("Byte: [" + Byte.MIN_VALUE + ", " + Byte.MAX_VALUE + "]");
System.out.println("Short: [" + Short.MIN_VALUE + ", " + Short.MAX_VALUE + "]");
System.out.println("Integer: [" + Integer.MIN_VALUE + ", " + Integer.MAX_VALUE + "]");
System.out.println("Long: [" + Long.MIN_VALUE + ", " + Long.MAX_VALUE + "]");
System.out.println("Float: [" + Float.MIN_VALUE + ", " + Float.MAX_VALUE + "]");
System.out.println("Double: [" + Double.MIN_VALUE + ", " + Double.MAX_VALUE + "]");

封装类提供了与字符串相互转化的功能

assertEquals(Integer.parseInt("10"), 10);
assertEquals(Integer.valueOf(10).toString(), "10");
assertEquals(Double.parseDouble("123.456"), 123.456, 0.00001);
assertEquals(Double.valueOf(123.456).toString(), "123.456");

数组

数组是固定长度的,可以通过下标直接访问元素

int[] ia = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
assertEquals(ia[3], 3);
assertEquals(ia.length, 10);

Arrays.fill 可以用来填充数组

int[] ia = new int[5];
Arrays.fill(ia, 6);
assertArrayEquals(ia, new int[]{6, 6, 6, 6, 6});

Arrays.sort 可以对数组进行排序

int[] ia = {5, 8, 1, 2, 0, 1};
Arrays.sort(ia);
assertArrayEquals(ia, new int[]{0, 1, 1, 2, 5, 8});

Arrays.binarySearch 可以进行二分查找

int[] ia = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
assertEquals(Arrays.binarySearch(ia, 5), 5);

Arrays.copyOfRange 生成子数组

int[] ia = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
assertArrayEquals(Arrays.copyOf(ia, 5), new int[]{0, 1, 2, 3, 4});
assertArrayEquals(Arrays.copyOfRange(ia, 3, 8), new int[]{3, 4, 5, 6, 7});

Optional

Optional 是 java 8 引入的可选类型,Optional 暗示用户该值有可能为空,Optional 提供如下接口

  • isPresent: 是否为空
  • get: 获取对应类型的值,如果为空,会抛出异常
  • orElse: 获取对应类型的值,如果为空,返回参数
  • filter: 如果满足谓词,返回当前 Optional,如果不满足,返回 Optional.empty
  • map: 对当前值执行 Function,返回 Founction 的返回值,并用 Optional 封装返回值
  • flatMap: 和 map 一样,但是要求 Function 的返回值已经是一个 Optional 对象
{
    Optional<Integer> i1 = Optional.empty();
    Optional<Integer> i2 = Optional.ofNullable(null);
    Optional<Integer> i3 = Optional.ofNullable(6);
    Optional<Integer> i4 = Optional.of(6);
}
{
    assertFalse(Optional.<Integer>empty().isPresent());
    assertFalse(Optional.<Integer>ofNullable(null).isPresent());
    assertTrue(Optional.ofNullable(6).isPresent());
    assertTrue(Optional.of(6).isPresent());
}
{
    assertThrows(NoSuchElementException.class, Optional.<Integer>empty()::get);
    assertEquals(Optional.of(6).get(), Integer.valueOf(6));
}
{
    assertEquals(Optional.<Integer>empty().orElse(0), Integer.valueOf(0));
    assertEquals(Optional.of(6).orElse(0), Integer.valueOf(6));
    assertEquals(Optional.<Integer>empty().orElseGet(() -> 0), Integer.valueOf(0));
    assertEquals(Optional.of(6).orElseGet(() -> 0), Integer.valueOf(6));
}
{
    assertEquals(Optional.of(6).filter(i -> i % 2 == 0), Optional.of(6));
    assertEquals(Optional.of(6).filter(i -> i % 2 == 1), Optional.empty());
    assertEquals(Optional.of(6).map(i -> i.toString()), Optional.of("6"));
    assertEquals(Optional.of(6).flatMap(i -> Optional.of(i * i)), Optional.of(36));
}

链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值