organize/자바

Java 18

001cloudid 2024. 5. 3. 18:46
728x90

join(), StringJoiner

join()은 여러 문자열 사이에 구분자를 넣어서 결합

package chapter09;

public class Study05Ex1 {
	
	public static void main(String[] args) {

		String animals = "dog,cat,pig";
		String[] arr = animals.split(","); //문자열을 "," 구분자로 나눠서 배열에 저장
		String str = String.join("-", arr); //"dog"+"-"+"cat"+"-"+"pig". 배열의 문자열을 '-'로 구분해서 결합
		System.out.println(str); //dog-cat-pig

	}

}

 

문자열과 기본형 간의 변환

package chapter09;

public class Study05Ex2 {
	
	public static void main(String[] args) {

		//숫자 -> 문자열 
		int i = 100;
		//방법 1 숫자 + ""(빈문자열)
		String str1 = i + ""; 
		//방법2
		String str2 = String.valueOf(i); 
		//방법 1은 편리, 방법 2는 속도가 빠름
		
		//문자열을 숫자
		//방법 1
		int i1 = Integer.parseInt("100"); //"100"을 100으로 변환
		//방법 2
		int i2 = Integer.valueOf("100");
		//방법 3. 원래는 반환 타입이 Integer
//		Integer i2 = Integer.valueOf("100");
		//※byte, short를 문자열로 변경할 때는 String valueOf(int i)를 사용하면 됨

		System.out.println("=================");
		
		int iVal = 100;
//		String strVal = String.valueOf(iVal); //int를 String으로 변환
		String strVal = iVal + "";
		
		double dVal = 200.0;
		String strVal2 = dVal + ""; //int를 String으로 변환
		
		double sum = Integer.parseInt("+"+strVal)+Double.parseDouble(strVal2);
		double sum2 = Integer.valueOf(strVal) + Double.valueOf(strVal2);
		
		System.out.println(String.join("", strVal,"+",strVal2,"=")+sum);
		System.out.println(strVal+"+"+strVal2+"="+sum2);
		
	}

}

 

StringBuffer클래스

문자열을 저장하고 다루기 위한 클래스

String처럼 문자형 배열(char[])을 내부적으로 가지고 있음

public final class StringBuffer implements java.io.Serializable{
	private char[] value;
    (...생략...)
}

String과 달리 내용을 변경할 수 있음(mutable)

 

StringBuffer의 생성자
배열은 길이 변경 불가. 공간이 부족하면 새로운 배열 생성
만들어진 배열의 크기가 부족했을 때 크기가 더 큰 새로운 배열을 생성한 후 기존 배열의 내용을 복사, 참조 변경
StringBuffer는 저장한 문자열의 길이를 고려해서 적절한 크기로 생성
※버퍼의 크기를 지정하지 않으면 버퍼의 크기는 16이됨.

 

StringBuffer의 변경

StringBuffer는 String과 달리 내용 변경이 가능

	StringBuffer sb = new StringBuffer("abc");
	sb.append("123");
	//※append() : 끝에 문자열 추가, delete() : 삭제, insert() 삽입

append()는 지정된 내용을 StringBuffer에 추가 후, StringBuffer의 참조를 반환(Study06Ex2)

package chapter09;

public class Study06Ex2 {

	public static void main(String[] args) {
		
		StringBuffer sb = new StringBuffer("abc");
		sb.append("123");
		
		StringBuffer sb2 = sb.append("aa");
		
		System.out.println(sb);
		System.out.println(sb2);
		
		//==> sb.append("123").append("aa");
		//		 sb
	}

}

 

StringBuffer의 비교

StringBuffer는 equals()가 오버라이딩되어 있지 않음(주소 비교)

		StringBuffer sb1 = new StringBuffer("abc");
		StringBuffer sb2 = new StringBuffer("abc");
		System.out.println(sb1==sb2); //false
		System.out.println(sb1.equals(sb2)); //false

 

StringBuffer을 String으로 변환한 후에 equals()로 비교해야함

String s1 = sb1.toString();
String s2 = sb2.toString();
System.out.println(s1.equals(s2)); //true

 

StringBuffer 클래스의 메서드

  • StringBuffer() 
    16문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성
StringBuffer sb1 = new StringBuffer(); //""
  • StringBuffer(int length)
    지정된 개수의 문자를 담을 수 있는 버퍼를 가진 StringBuffer 인스턴스를 생성
StringBuffer sb2 = new StringBuffer(10); //""
  • StringBuffer(String str)
    지정된 문자열 값(str)을 갖는 StringBuffer 인스턴스를 생성
StringBuffer sb3 = new StringBuffer("Hello"); //"Hello"
  • StringBuffer append(Object obj)
    매개변수로 입력된 값을 문자열로 변환하여 StringBuffer 인스턴스가 저장하고 있는 문자열의 뒤에 덧붙임
StringBuffer sb4 = new StringBuffer("abc");
StringBuffer sb5 = sb4.append(true); //sb5 = abctrue
  • int capacity() 
    StringBuffer인스턴스의 버퍼크기를 알려줌. length()는 버퍼에 담긴 문자열의 길이를 알려줌
StringBuffer sb6 = new StringBuffer(100);
sb6.append("abcd");
int bufferSize = sb6.capacity(); //100
int stringSize = sb6.length(); //4
  • char charAt(int index) 
    지정된 위치(index)에 있는 문자를 반환
StringBuffer sb7 = new StringBuffer("abc");
char c1 = sb7.charAt(2); //'c'
  • StringBuffer delete(int start, int end)
    시작위치(start)부터 끝 위치(end) 사이에 있는 문자를 제거. 단, 끝 위치의 문자는 제외
StringBuffer sb8 = new StringBuffer("0123456");
StringBuffer sb9 = sb8.delete(2, 4); //01456
  • StringBuffer deleteCharAt(int index) 지정된 위치(index)의 문자를 제거
StringBuffer sb10 = new StringBuffer("0123456");
StringBuffer sb11 = sb10.deleteCharAt(3); //012456
  • StringBuffer insert(int pos, Object obj)
    두 번째 매개변수로 받은 값을 문자열로 변환하여 지정된 위치(pos)에 추가. pos는 0부터 시작
StringBuffer sb12 = new StringBuffer("0123456");
sb12.insert(4, '/'); //0123/456
  • int length() StringBuffer
    인스턴스에 저장되어 있는 문자열의 길이를 반환
StringBuffer sb13 = new StringBuffer("0123456");
int length = sb13.length(); //7
  • StringBuffer repalce(int start, int end, String str)
    지정된 범위(start~end)의 문자들을 주어진 문자열로 바꿈. end 위치의 문자는 포함되지 않음(start<= x < end)
StringBuffer sb14 = new StringBuffer("0123456");
sb14.replace(3, 6, "xyz"); //012xyz6
  • StringBuffer reverse() 
    StringBuffer인스턴스에 저장되어 있는 문자열의 순서를 거꾸로 나열
StringBuffer sb15 = new StringBuffer("0123456");
sb15.reverse(); //6543210
  • void setCharAt(int index, char ch)
    지정된 위치의 문자를 주어진 문자(ch)로 바꿈
StringBuffer sb16 = new StringBuffer("0123456");
sb16.setCharAt(0, '9'); //9123456
  • void setLength(int newLength) 
    지정된 길이로 문자열의 길이를 변경. 길이를 늘리는 경우 나머지 빈 공간에 null 문자 '\u0000'으로 채움
StringBuffer sb17 = new StringBuffer("0123456");
sb17.setLength(5); //01234
StringBuffer sb18 = new StringBuffer("0123456");
sb18.setLength(10); //"0123456   "
String str1 = sb18.toString().trim(); //0123456
  • String toString() StringBuffer 인스턴스의 문자열을 String으로 반환
StringBuffer sb19 = new StringBuffer("0123456");
String str2 = sb19.toString(); //0123456
  • String substring(int start), String substring(int start, int end)
    지정된 범위 내의 문자열을 String으로 뽑아서 반환. 시작위치만 지정하면 시작위치부터 문자열 끝까지 뽑아서 반환
StringBuffer sb20 = new StringBuffer("012345");
String str3 = sb20.substring(3); //345
String str4 = sb20.substring(3, 5); //34

 

package chapter09;

public class Study07Ex1 {

	public static void main(String[] args) {

		StringBuffer sb1 = new StringBuffer("01");
		System.out.println(sb1); //01
		StringBuffer sb2 = sb1.append(23); 
		System.out.println(sb2); //0123
		sb1.append('4').append(56);
		System.out.println(sb1); //0123456
		
		StringBuffer sb3 = sb1.append(78);
		System.out.println(sb3); //012345678
		sb3.append(9.0);
		System.out.println(sb3); //0123456789.0
		
		System.out.println();
		
		System.out.println(sb1);
		System.out.println(sb2);
		System.out.println(sb3);
		
		System.out.println();
		
		System.out.println(sb1.deleteCharAt(10)); //01234567890
		System.out.println(sb1.delete(3, 6)); //01267890
		System.out.println(sb1.insert(3, "abc")); //012abc67890
		System.out.println(sb1.replace(6, sb1.length(), "end")); ////012abcend
		
		System.out.println();
		
		System.out.println(sb1.capacity()); //18
		System.out.println(sb1.length()); //9
		
	}

}

 

 

728x90

'organize > 자바' 카테고리의 다른 글

Java 20  (0) 2024.05.05
Java 19  (0) 2024.05.04
Java 17  (0) 2024.05.02
Java 16  (0) 2024.05.01
Java 15  (0) 2024.04.30