: 문자열을 추가하거나 변경할 때 주로 사용하는 자료형
stringBuffer 자료형과 함께 사용하는 메서드
- append() : 기존 문자열에 추가하고자 하는 문자열을 추가할 수 있는 메서드
insert() : 특정 위치(index)에 원하는 문자열을 추가할 수 있는 메서드
substring() : String 자료형에서 사용하는 substring과 사용법 같음
- 문자열에서 자르고 싶은 (시작 index, 마지막 index)로 사용 가능
- 마지막 index의 문자열을 자르고자 하는 문자열에 포함되지 않으며, 해당 문자열을 직접적으로 바꾸지 않고 String 자료형으로 받아줘야 한다.
package test;
public class Test1 {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();
sb.append("hello");
sb.append(" ");
sb.append("world!");
System.out.println(sb); // hello world!
sb.insert(5, " 2023");
System.out.println(sb); // hello 2023 world!
System.out.println(sb.substring(0, 10)); // hello 2023
}
}
- .getClass().getName()으로 해당 변수에 자료형 타입을 확인할 수 있는데,
StringBuffer 자료형에 toString()을 붙여 확인하면 String 타입으로 확인된다.
- String 자료형과 StringBuffer 자료형 모두 같은 결과값을 낼 수 있지만,
String 자료형은 + 연산이 있을 때 마다 새로운 String 객체가 생성됨.
또, 한 번 값이 생성되면 그 값을 변경할 수 없음.
StringBuffer는 반대로 값을 변경할 수 있다. 한 번 생성된 값을 언제든지 수정 가능.
*String에 사용하는 trim, toUpperCase의 경우 문자열을 변경하는 것이 아닌,
-> 또 다른 String 객체를 반환한 것.
- StringBuffer은 String보다 무거운 편에 속함. 메모리 사용량도 많고, 속도도 느림
-> 문자열 변경 작업이 거의 없는 경우 그냥 String 사용하는 것이 유리.
: 자료형의 집합
1, 2, 3차원 배열 등 다차원 배열도 가능하지만 2차원 배열 이상은 잘 사용하지 않는다.
: 배열과 비슷한 자료형 -> 배열보다 편리한 기능을 많이 갖고 있다.
: 리스트와 배열의 가장 큰 차이는
-> 배열은 크기가 정해져 있고,
리스트의 크기는 동적으로 변한다.
ArrayList : 사용하기 위해서는 import java.util.ArrayList를 해야 한다.
관련 메서드
add : ArrayList에 새로운 값을 추가할 때 사용하는 메서드
- 위치를 지정하여 추가할 수 있다. .add(index, 값);
- 위치를 지정하지 않으면 순서대로 list에 삽입이 된다.
get : ArrayList에 특정 인덱스의 값을 추출
size : ArrayList에 사이즈를 구함
contains : ArrayList 안에 해당 항목이 있는지 판별하여 boolean으로 return 한다.
remove : 2가지 방식이 있는데, 객체|인덱스 두 가지다.
- 객체 방식의 경우, 객체에서 해당되는 항목을 삭제하고
삭제 결과에 따라 true(성공), false(실패)를 return 한다.
- 인덱스 방식의 경우, 해당 인덱스의 항목을 삭제하고, 삭제한 항목을 return한다.
package test;
import java.util.ArrayList;
import java.util.Arrays;
public class Test1 {
public static void main(String[] args) {
ArrayList<String> arr = new ArrayList<>();
arr.add("A");
arr.add("B");
arr.add("C");
arr.add(1,"D");
System.out.println(arr.get(1)); // D
System.out.println(arr.size()); // 4
System.out.println(arr.contains("B")); //true
System.out.println(arr.remove("A")); // true
System.out.println(arr.remove(0)); // D
System.out.println(arr); // [B, C]
ArrayList<String> pit = new ArrayList<>();
// Arrays.asList("123", "456", "789")
pit.add("123");
pit.add("456");
pit.add("789");
System.out.println(pit);
//[123,456,789]
String res = String.join(",", pit);
System.out.println(res); //123,456,789
}
}
: 대응관계를 쉽게 표현할 수 있게 해 주는 자료형. -> Associative, Hash
- 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 X
- Key를 통해 value를 얻음 (Map은 큰 특징)
- Map 자료형에는 HashMap, LinkedHashMap, TreeMap 등이 있음.
package test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
public class Test1 {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("사과", "Apple");
map.put("포도", "grape");
map.put("오렌지", "orange");
System.out.println(map); // {포도=grape, 사과=Apple}
System.out.println(map.get("사과")); // Apple
System.out.println(map.getOrDefault("과일바구니", "basket"));
// basket
System.out.println(map.containsKey("포도")); // true
System.out.println(map.containsValue("basket")); // false
System.out.println(map.remove("사과")); //Apple
System.out.println(map); // {포도=grape, 오렌지=orange}
System.out.println(map.size()); // 2
System.out.println(map.keySet()); // [포도, 오렌지]
}
}