Table of Contents
ToggleJava String Class
提供了幾種 String 常見方法的操作範例, String Class 介紹常見的 charAt 、 indexOf 、 lastIndexOf 、 substring 等方法,本篇增加了範例,並透過單元測試來驗證產出結果。
檔案目錄
./
+- src
+- test
| +- org
| +- ruoxue
| +- java_147
| +- string
| +- StringClassTest.java
單元測試
String Class Java 提供查找、搜尋、取代等操作 String 。
charAt
建立一個 String ,取得指定索引的字元。
@Test
public void charAt() {
String value = "Assertj 155";
char result = value.charAt(2);
System.out.println(result);
assertEquals('s', result);
result = value.charAt(8);
System.out.println(result);
assertEquals('1', result);
}
s
1
getChars
String Class Java 建立一個 String ,取得字元陣列。
@Test
public void getChars() {
char[] result = new char[10];
String value = "Assertj 155";
value.getChars(0, 7, result, 0);
System.out.println(Arrays.toString(result));
assertEquals(10, result.length);
value.getChars(8, 11, result, 7);
System.out.println(Arrays.toString(result));
assertEquals(10, result.length);
}
[A, s, s, e, r, t, j, , , ]
[A, s, s, e, r, t, j, 1, 5, 5]
getBytes
String Class Java 建立一個 String ,取得 byte 陣列。
@Test
public void getBytes() {
String value = "Assertj";
byte[] result = value.getBytes();
System.out.println(Arrays.toString(result));
assertEquals(7, result.length);
value = "Assertj 155";
result = value.getBytes(StandardCharsets.UTF_8);
System.out.println(Arrays.toString(result));
assertEquals(11, result.length);
}
[65, 115, 115, 101, 114, 116, 106]
[65, 115, 115, 101, 114, 116, 106, 32, 49, 53, 53]
indexOf
String Class Java 建立一個 String ,搜尋指定的字串,傳回位置。
@Test
public void indexOf() {
String value = "Assertj 155";
int result = value.indexOf("s");
System.out.println(result);
assertEquals(1, result);
result = value.indexOf("1", 2);
System.out.println(result);
assertEquals(8, result);
}
1
8
lastIndexOf
String Class Java 建立一個 String ,從後面搜尋指定的字串,傳回位置。
@Test
public void lastIndexOf() {
String value = "Assertj 155";
int result = value.lastIndexOf("s");
System.out.println(result);
assertEquals(2, result);
result = value.lastIndexOf("1", 2);
System.out.println(result);
assertEquals(-1, result);
}
2
-1
substring
String Class in Java 建立一個 String ,取得指定位置的字串。
@Test
public void substring() {
String value = "Assertj 155";
String result = value.substring(8);
System.out.println(result);
assertEquals("155", result);
result = value.substring(0, 7);
System.out.println(result);
assertEquals("Assertj", result);
}
155
Assertj
replace
String Class in Java 建立一個 String ,取代指定位置的字串。
@Test
public void replace() {
String value = "Assertj 155";
String result = value.replace("Assertj", "ASSERTJ");
System.out.println(result);
assertEquals("ASSERTJ 155", result);
result = value.replace("155", "978");
System.out.println(result);
assertEquals("Assertj 978", result);
}
ASSERTJ 155
Assertj 978
intern
String Class in Java 建立一個 String ,取得字串池中的字串。
@Test
public void intern() {
String value = "Assertj";
String result = value.intern();
System.out.println(result);
assertEquals("Assertj", result);
value = "Assertj 155";
result = value.intern();
System.out.println(result);
assertEquals("Assertj 155", result);
}
Assertj
Assertj 155
StringClassTest.java
String Class in Java 新增單元測試,驗證是否符合預期。
package org.ruoxue.java_147.string;
import static org.junit.Assert.*;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import org.junit.Test;
public class StringClassTest {
@Test
public void charAt() {
String value = "Assertj 155";
char result = value.charAt(2);
System.out.println(result);
assertEquals('s', result);
result = value.charAt(8);
System.out.println(result);
assertEquals('1', result);
}
@Test
public void getChars() {
char[] result = new char[10];
String value = "Assertj 155";
value.getChars(0, 7, result, 0);
System.out.println(Arrays.toString(result));
assertEquals(10, result.length);
value.getChars(8, 11, result, 7);
System.out.println(Arrays.toString(result));
assertEquals(10, result.length);
}
@Test
public void getBytes() {
String value = "Assertj";
byte[] result = value.getBytes();
System.out.println(Arrays.toString(result));
assertEquals(7, result.length);
value = "Assertj 155";
result = value.getBytes(StandardCharsets.UTF_8);
System.out.println(Arrays.toString(result));
assertEquals(11, result.length);
}
@Test
public void indexOf() {
String value = "Assertj 155";
int result = value.indexOf("s");
System.out.println(result);
assertEquals(1, result);
result = value.indexOf("1", 2);
System.out.println(result);
assertEquals(8, result);
}
@Test
public void lastIndexOf() {
String value = "Assertj 155";
int result = value.lastIndexOf("s");
System.out.println(result);
assertEquals(2, result);
result = value.lastIndexOf("1", 2);
System.out.println(result);
assertEquals(-1, result);
}
@Test
public void substring() {
String value = "Assertj 155";
String result = value.substring(8);
System.out.println(result);
assertEquals("155", result);
result = value.substring(0, 7);
System.out.println(result);
assertEquals("Assertj", result);
}
@Test
public void replace() {
String value = "Assertj 155";
String result = value.replace("Assertj", "ASSERTJ");
System.out.println(result);
assertEquals("ASSERTJ 155", result);
result = value.replace("155", "978");
System.out.println(result);
assertEquals("Assertj 978", result);
}
@Test
public void intern() {
String value = "Assertj";
String result = value.intern();
System.out.println(result);
assertEquals("Assertj", result);
value = "Assertj 155";
result = value.intern();
System.out.println(result);
assertEquals("Assertj 155", result);
}
}
心得分享
Java String Class Example 使用文字的方式建立字串時,為了使 Java 更有效地使用記憶體,若字串池已存在此物件,則不會建立新物件,當字串池不存在此物件,則會建立新物件,然後會被放置於字串池, String Class in Java 提供 charAt 、 indexOf 、 lastIndexOf 、 substring 等操作範例。