아래는 programmers 정답
class Solution {
public String solution(String[] seoul) {
String answer = "";
for(int i=0; i<seoul.length; i++) {
if(seoul[i].equals("Kim")) {
answer = "김서방은 " + i + "에 있다";
}
}
return answer;
}
}
아래는 vscode로 문제풀이 작성한 것이다.
import java.util.ArrayList;
class kim {
public static void main(String[] arg) {
System.out.println("programmers start!");
ArrayList<String> inputArray = new ArrayList<String>();
inputArray.add("June");
inputArray.add("Kim");
System.out.println(solution(inputArray));
}
public static String solution(ArrayList<String> seoul) {
String answer = "";
for(int i = 0; i< seoul.size(); i++) {
if(seoul.get(i) == ("June")) {
System.out.println("ok");
}
}
return answer;
}
}
자바 ArrayList
ArrayList는 자바에서 기본적으로 많이 사용되는 클래스
일반 배열과 동일하게 연속된 메모리 공간을 사용하며 인덱스는 0부터 시작
배열과의 차이점은 배열이 크기가 고정인 반면 ArrayList는 크기가 가변적으로 변함
내부적으로 저장이 가능한 메모리 용량(Capacity)이 있으며 현재 사용 중인 공간의 크기(Size)가 있다.
ArrayList 사용 방법
1.아래 구문 먼저 추가
import java.util.ArrayList;
2. ArrayList 생성은 아래 구문들로 가능 / 보통 생성시 new ArrayList<>(); 와 같이 타입을 생략해서 작성
ArrayList<Integer> integers1 = new ArrayList<Integer>(); // 타입 지정
ArrayList<Integer> integers2 = new ArrayList<>(); // 타입 생략 가능
ArrayList<Integer> integers3 = new ArrayList<>(10); // 초기 용량(Capacity) 설정
ArrayList<Integer> integers4 = new ArrayList<>(integers1); // 다른 Collection값으로 초기화
ArrayList<Integer> integers5 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5)); // Arrays.asList()
integer : Wrapper 클래스-객체
3. ArrayList element 추가 / 변경
ArrayList를 생성한 후 add() 메소드로 엘레멘트를 추가할 수 있습니다.
또한 set() 메소드로 기존에 추가된 값을 변경하는 것도 가능합니다.
3. ArrayList element 삭제
추가했던 값을 삭제할 때는 remove() 메소드를 호출합니다.
equals 와 == 의 차이점
1. 형태의차이
equals()는 메소드 [객체끼리 내용을 비교]
==은 비교를 위한 연산자
2. 주소값 비교와 내용비교
equals 메소드는 비교하고자 하는 대상의 내용자체를 비교
==연산자는 비교하고자 하는 대상의 주소값을 비교
* 고정배열만 .equals 를 쓸수있다.
설명링크 : https://ojava.tistory.com/15
배열에 관한 다른 예제
import java.util.ArrayList;
// 다음과 같이 import를 쓴 후 해당 클래스 (ArrayList) 경로를 호출한다.
class Solution {
public static void main(String[] arg) {
// 자바의 모든 프로그램은 이함수로 시작 String[] arg 문자열을 배열로 사용하겠다는 의미
//파일이름 Solution
String[] seoul = new String[3];
//String[] seoul = {"Jane", "Kim", "none"};
seoul[0] = "Jane";
seoul[1] = "Kim";
seoul[2] = "none";
//String은 고정배열, [배열번호]로추가, length 속성으로 크기 측정
System.out.println(solution(seoul));
// 해당메소드를 사용하면 모니터에 전달된 데이터를 출력한 후에 줄바꿈
// 변수명은 소문자로시작
// seoul이라는 배열을 solution이라는 변수에 넣음 (매개변수느낌)
StringBuffer text_test = new StringBuffer();
text_test.append("oneStep");
text_test.append("TwoStep");
System.out.println(text_test.length());
//StringBuffer은 가변배열, append()메서드로 추가, Length()메서드로 크기측정
}
public static String solution(String[] seoul) {
String answer = "";
ArrayList<String> inputArray = new ArrayList<String>();
// 타입지정 : 타입<타입값>변수명 = 초기값은 타입<타입값>();실행
inputArray.add("Jane");
inputArray.add("Kim");
//ArrayList 가변배열, add()메소드로 추가, size()메소드로 크기측정
System.out.println(inputArray.size());
for(int i = 0; i < seoul.length; i++) {
if(seoul[i].equals("Kim")) {
answer = "김서방은" + i + "에 있다";
}
}
return answer;
//ArrayList 가변배열
}
}
메모리가 문자열을 수정하는 방법 :
새로운 메모리에 할당해주고, 그 주소값을 연결해준다. = 문자열의 불변성
계속 만들고 쓰레기를 만드니 메모리낭비가 심해진다.
자바는 string buffer 이라는 방식을 취한다. 하나의 문자열이 수정이 가능하다.
java.lang.StringBuffer 클래스
String 클래스의 인스턴스는 한 번 생성되면 그 값을 읽기만 할 수 있고, 변경할 수는 없습니다.
하지만 StringBuffer 클래스의 인스턴스는 그 값을 변경할 수도 있고, 추가할 수도 있습니다.
이를 위해 StringBuffer 클래스는 내부적으로 버퍼(buffer)라고 하는 독립적인 공간을 가집니다.
하지만 StringBuffer 인스턴스를 사용하면 문자열을 바로 추가할 수 있으므로,
공간의 낭비도 없으며 속도도 매우 빨라집니다.
이러한 StringBuffer 클래스는 java.lang 패키지에 포함되어 제공됩니다.
불변 클래스(immutable class)와 가변 클래스(mutable class)
String 클래스와 같이 인스턴스가 한 번 생성되면
그 값을 변경할 수 없는 클래스를 불변 클래스(immutable class)라고 합니다.
반대로 StringBuffer 클래스와 같이 자유롭게 인스턴스의 값을 변경할 수 있는 클래스를
가변 클래스(mutable class)라고 합니다.
append() 메소드
append() 메소드는 인수로 전달된 값을 문자열로 변환한 후, 해당 문자열의 마지막에 추가합니다.
StringBuffer str = new StringBuffer("Java");
System.out.println("원본 문자열 : " + str);
System.out.println(str.append("수업"));
System.out.println("append() 메소드 호출 후 원본 문자열 : " + str);
실행 결과 :
원본 문자열 : Java
Java수업
append() 메소드 호출 후 원본 문자열 : Java수업
'Programmers > java' 카테고리의 다른 글
[JAVA] Programmers 문자열을 정수로 바꾸기 ☑ (0) | 2022.07.11 |
---|---|
[JAVA] Programmers 자릿수 더하기 ☑ (0) | 2022.07.11 |
[JAVA] Programmers 소수 만들기 ☑ (0) | 2022.06.15 |
[JAVA] Programmers 두 개 뽑아서 더하기 ☑ (0) | 2022.06.14 |
[JAVA] Programmers 부족한 금액 계산하기 ☑ (0) | 2022.06.14 |