본문 바로가기
국비 교육/백엔드(Java, Spring)

[자바] 자바 주요 API - String

by 육츠 2024. 1. 29.
Contents 접기

자바 주요  API

1) String 관련 메소드,생성자 ***

 - StringBuffer, StringBuilder
 - StringToknizer

2) Wrapper 클래스

- Primitive 타입의 자료형을 객체화 시킨 클래스
- Integer,  Double
* primitive data type  :  = 원시 자료형은 프로그래밍 언어가 제공하는 자료형 중 하나로서 내장형/ 기본형 으로 불린다.

3) Math 클래스 

메소드 메소드
char  charAt(int index) static String format(Locale l, String format, Object... args)
int codePointAt(int index) int indexOf(int ch)
int compareTo(String anotherString) boolean isEmpty()
String concat(String str) int lastIndexOf(int ch)
boolean contains(CharSequence s) int length()
boolean endsWith(String suffix) String[] split(String regex)
boolean equals(Object anObject) String substring(int beginIndex)
String trim() String substring(int beginIndex, int endIndex)

 

Iterator

: ArrayList, HashSet 과 같은 컬렉션을 반복하는 데 사용할 수 있는 객체를 가리킨다.

package struct;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorTest {

	public static void main(String[] args) {
		List<String> list = new ArrayList<>();
		list.add("사과");
		list.add("배");
		list.add("딸기");
		list.add("바나나");
		list.add("포도");
		list.add("딸기");
		
		Iterator<String> iter = list.iterator();
		// iterator = 포인터를 계속 움직인다.
		while (iter.hasNext()) 
			System.out.println(iter.next()); 
		// 마지막 데이터가 있는지 체크 후 가져오는 것
        
        //map 은 직접적으로 key를 전달할 수 없기 때문에 set을 사용한다.
		Set<Integer> keys = map.keySet();
		Iterator<Integer> iter2 = keys.iterator();
		// Iterator<Integer> iter2 = map.keySet().iterator(); : 같은 의미
		
		
		while(iter2.hasNext()) {
			Integer key = iter2.next(); // map 에 키가 된 Integer 값을 가져온다.
			String value = map.get(key);
			System.out.println(key + " : " + value);
			
		}
		
		
	}

}
코드 의미
while (iter.hasNext()) 
    System.out.println(iter.next()); 
마지막 데이터가 있는지 체크 후 true 면 출력
Iterator<Integer> iter2 = map.keySet().iterator(); map 은 직접적으로 key 를 전달할 수 없다.  때문에 set 을 사용하여 key 를 전달한다.
while(iter2.hasNext()) {
    Integer key = iter2.next();
    String value = map.get(key);
map 에 키가 된 Integer 값을 가져온다.

 

String

package api;

public class StringTest02 {
	//String

	public static void main(String[] args) {
		String str = "무궁화 꽃이 피었습니다.";
		// 시퀀스 객체 => 순서가 존재한다.
		
		char ch = str.charAt(4);
		// char charAt(int index)
		System.out.println(ch);
		
		// int codePointAt(int index)
		int code = str.codePointAt(3);
		// 공백의 코드값 = 32
		System.out.println(code);
코드 의미
char ch = str.charAt(4); "무궁화 꽃이 피었습니다." 중 4번째에 위치한 꽃을 가져온다.
int code = str.codePointAt(3); 공백의 코드값(32) 반환

 

compareTo()

- 바깥 코드값("Korea") - 안 코드값("korea")
- 같은 건 스킵한다.(다른 데이터 값이 나올때까지)
- 모두 같으면 0 이 반환된다. => 즉 동일한 데이터다   
- 대문자가 더 작은 값이라고 인식한다.  (예 A: 65, a :97)

		// int compareTo(String anotherString)
		int diff = "Korea".compareTo("korea");
		System.out.println(diff);

 

코드 의미
int diff = "Korea".compareTo("korea"); 값의 크기 비교
equals() 와의 차이
- equals() : 같다 or 다르다의 여부만 확인
- compareTo() : 외에도 앞이 큰지(양수), 뒤가 큰지(음수), 혹은 같은지(0) 까지 확인

 

		// String concat(String str)
		String temp = "월드".concat("컵");
		System.out.println(temp);

		// boolean contains(CharSequence s) : 특정단어가 포함되는지
		boolean result = str.contains("장미");
		System.out.println(result);

		// boolean endsWith(String suffix) : 특정단어로 끝나는지
		result = str.endsWith("다!");
		System.out.println(result);

		result = str.startsWith("장미");
		System.out.println(result);

		// int indexOf(int ch) : 특정문자의 위치값 반환
		int index = str.indexOf('강');  // -1 반환 : 단어 존재하지 않음
		// int index = str.indexOf('꽃');  
		System.out.println(index);
		// lastIndexOf : 마지막 인덱스 찾을때

		// boolean isEmpty()
		result = "".isEmpty(); // 전달 인자를 주지 않음		
		System.out.println(result); // " ".isEmpty 는 값이 존재하는 거다.

		// String trim() : 다시 문자열로 반환
		result = "19980713 ".trim().isEmpty(); // 앞뒤 문맥을 자른다.
		System.out.println(result); //

		System.out.println("19980713 ".length());

		//isBlank() : ws 가 포함되어있으면 true 가 나온다.
코드 의미
boolean result = str.contains("장미"); 특정단어가 포함되는지
result = str.endsWith("다!");
result = str.startsWith("장미");
특정단어로 끝나는지  
특정단어로 시작하는지
int index = str.indexOf('강');  특정문자의 위치값 반환 ( -1 반환 : 단어 존재하지 않음)
lastIndexOf() 마지막 인덱스 찾을때
result = "".isEmpty(); 비어있는지 확인 (전달 인자를 주지 않음)
- isBlank() : ws 가 포함되어있으면 true 가 나온다.
result = "19980713 ".trim().isEmpty(); 앞뒤 문맥을 잘라서 다시 문자열로 반환
System.out.println("19980713 ".length()); 길이 잴때 length()   (괄호 필요)

 

특정데이터 에서 범주안에 들어있는지 (문자열의 전체길이까지 봐야 한다.)

"123".charAt(0) ==> char c ='1';
c >= '0' ;
		// String substring(int beginIndex) : 부분 문자열
		String carNum = "125허2422";
		//		String carNum = "111허2222";
        
		String  front = carNum.substring(0,3);
		String  back = carNum.substring(4);
		System.out.println(front);
		System.out.println(back);
		

		if(!(isNumeric(front) && isNumeric(back))) {
			System.out.println("올바른 자동차 번호가 아닙니다.");
		} else {
			System.out.println("올바른 자동차 번호입니다.");
		}
        
        } // main
        
        
		// 문자열이 섞여 있는지 확인하여 숫자만 있으면 true 아니면 false
		public static boolean isNumeric(String temp) {
		// char ch = 0;
		
		for(int i = 0; i < temp.length(); i++) {
			
			if(!( temp.charAt(i) >= '0'&& temp.charAt(i) <= '9')) //숫자로 변환할 수 있는 값만
				return false;
		}
		
		return true;
	}
코드 의미
String  front = carNum.substring(0,3);
String  back = carNum.substring(4);
부분 문자열 (문자열 자르기)

 

StringBuffer

StringBuffer 는 자기 자신을 반환하기 때문에 크기가 커질 수 있는 것이다

package api;

// import java.lang 패키지 내부의 클래스는 import 하지 않아도 자동 import
public class StringBufferTest {

	public static void main(String[] args) {
		StringBuffer buff1 = new StringBuffer(); // 기본값
		StringBuffer buff2 = new StringBuffer("울릉도"); // 초기값 존재
		StringBuffer buff3 = new StringBuffer(100); // 용량 지정
		
		System.out.println("buff1의 용량: " + buff1.capacity()); // 세팅이 16자까지
		System.out.println("buff2의 용량: " + buff2.capacity());
		System.out.println("buff3의 용량: " + buff3.capacity());
		
		// 체인
		buff2.append(" 동남쪽")  //자기자신을 반환
		     .append(" 뱃길따라 ")
		     .append(200)
		     .append("리")
		     .append(" 외로운 섬하나 새들의 고향")
		     .append(" 그 누가 아무리 자기네 땅이라고 우겨도")
		     .append(" 독도는 우리땅");
		
		System.out.println("buff2의 용량: " + buff2.capacity());
		// 글자포함 + 여유공간
		System.out.println("buff2의 길이: " + buff2.length());
		// 글자만
		
		buff2.trimToSize();
		System.out.println("buff2의 용량: " + buff2.capacity());
		System.out.println("buff2의 길이: " + buff2.length());
		// 남아있는 버퍼를 지움
		
		String str = buff2.toString();
		// 추가할 글자가 없기때문에 문자로 바꾸는 작업을 한다.
		// 가장 마지막에 진행
		
	}

}
코드 의미
- StringBuffer buff1 = new StringBuffer();
- StringBuffer buff2 = new StringBuffer("울릉도"); 
- StringBuffer buff3 = new StringBuffer(100); 
- 기본값
- 초기값 존재
- 용량 지정
System.out.println("buff2의 용량: " + buff2.capacity());
System.out.println("buff2의 길이: " + buff2.length());
- 글자 포함 여유 공간의 개수
- 글자 개수만
buff2.trimToSize(); 남아있는 버퍼를 지운다. (여유공간을 지우는 것)
String str = buff2.toString(); 추가할 글자가 없기때문에 문자로 바꾸는 작업을 한다.
(가장 마지막에 진행)

 

Wrapper

Wrapper Class 는 primitive data type을 객체화시킨 클래스를 일컫는 용어이다.
- Byte, Short, Integer, Long, Character
- Float, Double
- Boolean

package api;

public class WrapperTest {

	public static void main(String[] args) {
		
		// Integer i1 = new Integer(1);
		// 17버전 에서는 deprecated 되었음
		
		Integer i1 = 1; // 숫자가 바로 객체화 된다
		// 기본자료형이 객체로 변경 (Auto Boxing)
		Integer i2 = 12; 
		
		int result = i1 + i2; 
		// 객체가 자동으로 기본 자료형으로 변경 (Auto Unboxing)
		
	}

}
Auto Boxing Auto Unboxing
원시 타입의 값을 해당하는 wrapper 클래스의 객체로 변경
= 기본 자료형이 객체로 변경
Wrapper 클래스 타입을 원시 타입으로 변경
= 객체가 자동으로 기본 자료형으로 변경
Integer i1 = 1; int result = i1 + i2;