1.常用類
1.1.scanner,鍵盤錄入,
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String strs=sc.next();
System.out.println(strs);
}
1.2.數組的拷貝
public static void main(String[] args) {
int[] a = {1, 2, 3, 4, 5, 6};
int[] b = Arrays.copyOf(a, 10);
int[] c = new int[10];
System.out.println(Arrays.toString(b));
System.arraycopy(a, 2, c, 0, 4);
System.out.println(Arrays.toString(c));
}
1.3.程序執行的時間
public static void main(String[] args) {
//1970開始到現在的毫秒數
long beginTime = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
i = i + 1;
}
long endTime = System.currentTimeMillis();
long excuteTime = endTime - beginTime;
System.out.println(excuteTime);
}
1.4.垃圾回收
public class TestGc {
@Override
protected void finalize() throws Throwable {
super.finalize();
System.out.println("我被垃圾回收了");
}
public static void main(String[] args) {
new TestGc();
System.gc();
}
}
1.5.Math函數
public static void main(String[] args) {
//返回[0,1)之間的隨機小數
System.out.println(Math.random());
System.out.println(Math.PI);
}
1.6.精度準確的計算
public static void main(String[] args) {
//float 和double精度不是很準,String類型的構造器是非常準確的
BigDecimal a = new BigDecimal("0.01");
BigDecimal b = new BigDecimal("0.09");
System.out.println(a.add(b));
}
2.字符串,字符串的本質是char數組實現了CharSequence接口
- 不可變字符串,String (內存地址不可變),變了之後會指向新的地址。
- 可變字符串,StringBuffer,StringBuilder
2.1.String的創建方式
- 直接賦值 String str = "ab,cd,ef"; 字符串常量,指向方法區(常量池)的值。要麼創建一個對象要麼不創建。
- String str = new String("abc"); 引用方法區常量池的值,沒有的話就自己創建。至少創建一個對象。(堆和方法區)
2.2.字符串爲空
- 表示引用爲空 String aa=null; 還沒有初始化,沒有分配內存空間。
- 表示空字符串 String bb=""; 已經創建了對象,分配了內存空間。
2.3.字符串比較相等
- == 比較內存地址是否相等
- equals,它在object中和==一樣的,建議子類重寫。
- String類重寫了equals方法,先比較地址是否相等,不相等則比較對象是否相等,然後判斷字符是否相等。
2.4.字符串的編譯優化,凡是“”引用起來,都是直接量。在編譯的時候已經確定了。String a="a"+"b"
2.5.String類的常用方法
- 去掉字符串所有空格,replace
- str.toCharArray()轉成char類型的數組(去重打印,結合set)
- str.charAt(0),返回對應位置上面的字母(倒敘輸出)
2.6.可變字符串的性能高一些。
- 三者在執行速度方面的比較:StringBuilder > StringBuffer > String
- StringBuilder:線程非安全的,StringBuffer:線程安全的
- StringBuilder初始容易16,char類型的數組,自動擴容2n+2
2.7.對於三者使用的總結:
- 1. 如果要操作少量的數據用 = String
- 2. 單線程操作字符串緩衝區 下操作大量數據 = StringBuilder
- 3. 多線程操作字符串緩衝區 下操作大量數據 = StringBuffer
3.random類
public static void main(String[] args) {
Random random = new Random();
System.out.println(random.nextInt());
//可以指定生成的範圍[0,145)
System.out.println(random.nextInt(145));
}
3.1.UUID:通用唯一識別符,結合當前的時間和網卡生成一段字符。String str = UUID.randomUUID().toString();(16進制)
4.Date類
public static void main(String[] args) {
//自1970年以來的毫秒值
long millis = System.currentTimeMillis();
//轉成Date
Date date = new Date(millis);
System.out.println(date);
//
System.out.println(date.toLocaleString());
}
5.生成5位驗證碼
public static void main(String[] args) {
String str = "ABCDEFGHIGKLMNOPQRSTUVWXYZ";
str += str.toLowerCase();
str += "1234567890";
System.out.println(str);
//取字符串,StringBuilder接收
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 5; i++) {
char c = str.charAt(new Random().nextInt(str.length()));
sb.append(c);
}
System.out.println(sb);
}
}