java筆記4-java核心類
阿新 • • 發佈:2019-01-04
目錄
字串和編碼
字串
Java字串的特點:
- 字串物件可以直接使用"..."表示
- 內容不可變
- 使用equals()判斷是否相等
字串常用操作:
- 是否包含子串:contains/indexOf/lastIndexOf/startsWith/endsWith
- 去除首尾空白字元:trim
- 提取子串:substring
- 大小寫轉換:toUpperCase/toLowerCase
- 替換子串:replace/replaceAll
- 分割:split
- 拼接:join
String和其他資料型別互相轉換 String和char[]互相轉換 String和byte[]互相轉換(需要指定編碼)
編碼
ASCII
GB2312/GBK/GB18030
Unicode/UTF-8
建議總是使用UTF-8編碼
import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; public class TestString { public static void main(String[] args) throws UnsupportedEncodingException { String s = "hello"; boolean a = s.equals("Hello");// "false" // equalsIgnoreCase不考慮大小寫 boolean b = s.equalsIgnoreCase("Hello");// true // 移除首尾空白字元 String s1 = " \t hello \r \n"; String s2 = s.trim();// "hello" s = s.trim();// "hello" /** * 是否包含子串 */ String str = "hello"; str.contains("ll");// true str.indexOf("ll");// 2 str.startsWith("he");// true str.endsWith("lo");// true // 提取子串 String str1 = "hello,world"; str1.substring(7, 9);// "or" // 替換子串 String s3 = "hello"; s3.replace('l', 'w');// "hewwo" s3.replace("l", "w~");// "hew~w~o" // 正則表示式替換子串 String str2 = "A,,B,;C;,D"; str2.replaceAll("[\\,\\;\\s]+", ", ");// "A, B, C, D" // static String join()拼接字串 String[] arr = { "A", "B", "C" }; String s4 = String.join("~~", arr);// "A~~B~~C" // 分割字串 String str3 = "A,,B;C,D"; String[] ss = str3.split("[\\,\\;\\s]+");// {"A","B","C","D"} /** * 大小寫轉換 */ String str4 = "hello"; str4.toUpperCase(); str4.toLowerCase(); // 把任意資料轉換為String: String.valueOf(123);// "123" String.valueOf(true);// "true" String x = String.valueOf(new Object());// "
[email protected]" // 把String轉換為其他型別 int i = Integer.parseInt("123"); Integer I = Integer.valueOf("123"); // ERROR Integer I2 = Integer.getInteger("123"); // String轉換為char[] String s5 = "hello"; char[] cs = s.toCharArray();// {'h','e','l','l','o'} // char[]轉換為String String s6 = new String(cs); // String轉換為byte[] String s7 = "hello"; byte[] bs1 = s7.getBytes("UTF-8"); byte[] bs2 = s7.getBytes(StandardCharsets.UTF_8); // byte[]轉換為String new String(bs1, "UTF-8"); new String(bs2, StandardCharsets.UTF_8); } }
StringBuilder
StringBuilder
- 可以高效拼接String
- 是可變物件
- 可以進行鏈式操作
不要使用StringBuffer(多執行緒)
public class StringBuilderTest {
public static void main(String[] args) {
String name = "World";
StringBuilder sb = new StringBuilder();
sb.append("Hello, ").append(name).append('!');
String s = sb.toString();
System.out.println(s);
}
}
包裝型別
JDK定義的包裝型別:
boolean | Boolean |
byte | Byte |
short | Short |
int | Integer |
long |
Long |
float | Float |
double | Double |
char | Character |
int、Integer和String的相互轉換
自動裝箱:auto boxing
自動拆箱:auto unboxing
自動拆箱可能發生NullPointerException
裝箱和拆箱會影響執行效率
包裝型別定義了一些有用的靜態變數
JavaBean
JavaBean是一種Java程式設計規範:
目的:
- 方便IDE工具讀寫屬性
- 傳遞資料
- 列舉屬性
JavaBean特點:
一組public getter/setter方法
boolean屬性的讀方法通常為isXxx()
屬性可以是隻讀或只寫的
屬性只需要getter/setter方法,不一定需要例項欄位
利用IDE可以快速生成屬性方法
列舉類 (Enumeration)
Java使用enum定義常量型別,常量本身帶有型別資訊,可以使用==比較。
enum定義的型別是class,繼承自java.lang.Enum
所有常量都是唯一引用例項
常量可用於switch語句
name()獲取常量定義的字串,注意不要使用toString()
ordinal()返回常量定義的順序(無實質意義)
可以為enum類編寫構造方法、欄位、方法
構造方法必須為private
常用工具類
-
Math:數學計算
-
Random:生成偽隨機數
-
SecureRandom:生成安全的隨機數
-
BigInteger:表示任意大小的整數
-
BigDecimal:表示任意精度的浮點數
package com.feiyangedu.sample;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.security.SecureRandom;
import java.util.Random;
public class Main {
public static void main(String[] args) {
// Math
Math.sqrt(2); // 1.414
Math.pow(2, 10);// 2^10=1024
Math.exp(2);// e^2=7.389
Math.log(4);// loge4=1.386
Math.log10(100);// 2
Math.sin(Math.PI / 6);// sin(PI/6)=0.5
Math.cos(Math.PI / 3);// 0.5
// Math.random() 0<=隨機數<1
double x1 = Math.random();
// 生成某個區間的隨機數 MIN<=R<MAX
long MIN = 1000;
long MAX = 9000;
double x2 = Math.random() * (MAX - MIN) + MIN;
double r = (long) x2;
// Random用來建立偽隨機數 不給定種子時Random使用系統當前時間戳作為種子
Random rnd = new Random(123456);
rnd.nextInt();
rnd.nextFloat();
rnd.nextInt(10);// 生成不大於N的隨機數
// SecureRandom 用來建立安全的隨機數
SecureRandom sr = new SecureRandom();
for (int i = 0; i < 10; i++) {
System.out.println(rnd.nextInt(100));
}
// BigInteger 用任意多個int[]來表示非常大的整數
BigInteger bi = new BigInteger("1234567890");
System.out.println(bi.pow(5));
// BigDecimal 表示任意精度的浮點數
BigDecimal bd = new BigDecimal("123.10");
System.out.println(bd.multiply(bd));
}
}