字符串、大數與數組
1. 字符串
1.1 字符串拼接
- 任何一個字符串與一個非字符串的值拼接起來絮姆,
非字符串
會轉化成字符串
int age = 11;
String value = "my age:" + age;
// value的值為字符串"my age:13"
1.2 字符串部分方法
- int compareTo(String other)
- 字符串前面部分的每個字符完全一樣,返回后面兩個字符串長度差
- 字符串前面部分的每個字符存在不一樣秩霍,返回出現不一樣的字符 ASCII 碼的差值
- 字符串的每個字符完全一樣篙悯,返回 0
boolean isBlank():如果字符串為空(不能為 null )或者是空字符串或者存在空格,返回true铃绒,
該方法是 Java 11 新增的
boolean isEmpty():如果字符串為空(不能為 null )或者是空字符串鸽照,返回 true
-
boolean strip():去除字符串前后的全角和半角空白字符,
該方法是 Java 11 新增的
boolean trim():去除字符串前后的半角空白字符
-
String join(CharSequence delimiter, CharSequence ... elements):返回一個新的字符串颠悬,用給定的字符串連接所有的元素
String value = String.join("|", "hello", "world", "hhh"); // value的值為"hello|world|hhh"
-
String repeat(int count):返回一個字符串矮燎,將當前的字符串重復 count 次飞几,
該方法是 Java 11 新增的
String value = "hello".repeat(3); // value的值為"hellohellohello"
1.3 StringBuilder 類和 StringBuffer 類
StringBuilder 類是 Java 5 中引入的舞虱,這個類的前身是 StringBuffer 類,StringBuilder 類的效率優(yōu)于 StringBuffer
府蔗,因為 StringBuffer 類采用多線程的方式操作字符串灾票,但是 StringBuilder 類采用單線程的方式操作字符串峡谊,因而 StringBuffer 類是一個線程安全的類
,但是 StringBuilder 類不是一個線程安全的類
- 如果要操作少量數據,使用 String 即可
- 如果要快速操作大量數據既们,但是線程安全不需要考慮濒析,使用 StringBuilder
- 如果要保證線程安全的前提下操作大量數據,使用 StringBuffer
2. 大數
2.1 BigInteger 類和 BigDecimal 類
可以使用 valueof()
方法或者字符串
的形式實例化 BigInteger 和 BigDecimal 類
BigInteger value = BigInteger.valueof(100);
BigInteger value = new BigInteger("4123523793279382031471423648919141");
BigDecimal value = BigDecimal.valueof(100.891);
BigDecimal value = new BigDecimal("5414325134.5352442314");
2.2 常用方法
- BigInteger add(BigInteger other) / BigDecimal add(BigDecimal other) :加法
- BigInteger subtract(BigInteger other) / BigDecimal subtract(BigDecimal other):減法
- BigInteger multiply(BigInteger other) / BigDecimal multiply(BigDecimal other):乘法
- BigInteger divide(BigInteger other) / BigDecimal divide(BigDecimal other):除法
-
BigDecimal divide(BigDecimal other, RoundingMode mode):如果除不盡啥纸,要想得到結果悼枢,可以使用
RoundingMode
類中的常量 - RoundingMode.CEILING:取右邊最近的整數
- RoundingMode.DOWN:去掉小數部分取整,也就是正數取左邊脾拆,負數取右邊馒索,相當于向原點靠近的方向取整
- RoundingMode.FLOOR:取左邊最近的正數
- RoundingMode.HALF_DOWN:五舍六入,負數先取絕對值再五舍六入再負
- RoundingMode.HALF_UP:四舍五入名船,負數原理同上
- RoundingMode.HALF_EVEN:這個比較繞绰上,整數位若是奇數則四舍五入,若是偶數則五舍六入
- BigInteger mod(BigInteger other):取模
-
BigInteger sqrt():取平方根(
Java 9 新增
) - int compareTo(BigInteger other) / int compareTo(BigDecimal other):兩個大數比較渠驼,如果相等蜈块,返回 0,如果小于 other迷扇,返回負數百揭,如果大于 other,返回正數
- static BigInteger valueof(long x) / static BigDecimal valueof(long x):得到一個等于 x 的大實數
- static BigDecimal valueof(long x, int scale):得到一個等于 x / 10 ^ scale 的大實數
2.3 相關常量
BigInteger.ZERO蜓席, BigInteger.ONE器一,BigInteger.TEN,BigInteger.TWO(Java 9 新增
)
3. 數組
3.1 Arrays類常用方法
static xxx[] copyOf(xxx[] a, int end) / static xxx[] copyOfRange(xxx[] a, int start, int end):返回與 a 類型相同的一個數組厨内,其長度為 length 或者為 end - start祈秕,數組元素為 a 的值,如果 end 大于 a.length雏胃,結果會填充 0 或 false 值
static void sort(xxx[] a):使用快速排序算法對數組進行排序
static int binarySearch(xxx[] a, xxx v) / static int binarySearch(xxx[] a, int start, int end, xxx v):使用二分查找在有序數組 a 中查找值 v请毛,如果找到,則返回相應的下標瞭亮,否則方仿,返回一個負數 r,-r - 1 是值 v 應該插入的位置(為保持 a 有序)
static void fill(xxx[] a, xxx v):將數組所有元素設置為 v
static boolean equals(xxx[] a, xxx[] b):如果兩個數組大小相同统翩,并且下標相同的元素都對應相等仙蚜,則返回 true
static String deepToString(Object[] a):將多維數組打印出來