Java String Class - Java 147

Java String Class – Java 147

Java 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 等操作範例。

發佈留言