java 基本的基本類型包括 boolean, byte, char, short, int, long, float, doublejava
每一個類型都有一個封裝類,封裝類繼承自 Object
對象,能夠用做存放在容器中,另外還提供了一些輔助函數git
基本類型 | 封裝類 | 內存空間 | 取值範圍 | 描述 |
---|---|---|---|---|
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 | - | - | 空類型 |
普通類型能隱式轉換成對應的封裝類型github
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
能夠用來填充數組code
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
是 java 8 引入的可選類型,Optional 暗示用戶該值有可能爲空,Optional
提供以下接口
isPresent
: 是否爲空get
: 獲取對應類型的值,若是爲空,會拋出異常orElse
: 獲取對應類型的值,若是爲空,返回參數filter
: 若是知足謂詞,返回當前 Optional,若是不知足,返回 Optional.emptymap
: 對當前值執行 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)); }