java 基本類型

java 基本類型

基本類型

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

每個類型都有一個封裝類,封裝類繼承自 Object 對象,可以用作存放在容器中,另外還提供了一些輔助函數

基本類型 封裝類 內存空間 取值範圍 描述
boolean Boolean 1 true 或 false 布爾類型
byte Byte 8 [-128, 127] 字節類型
short Short 16 [-32768, 32767] 短整型
int Integer 32 [-2147483648, 2147483647] 整型
long Long 64 [-9223372036854775808, 9223372036854775807] 長整型
float Float 32 [1.4E-45, 3.4028235E38] 單精度浮點
double Double 64 [4.9E-324, 1.7976931348623157E308] 雙精度浮點
char Character 16 - 字符類型
void Void - - 空類型

普通類型能隱式轉換成對應的封裝類型

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));
}

鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章