1. 程式人生 > >java筆記4-java核心類

java筆記4-java核心類

目錄

 

字串和編碼

StringBuilder

包裝型別

JavaBean

列舉類 (Enumeration)

常用工具類


字串和編碼

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

}