str1.compareTo(str2) //int 반환
boolean startsWith(String prefix) //해당 단어로 시작하는 문자열인지 검사한다
boolean endsWith(String suffix) //해당 단어로 끝나는 문자열인지 검사한다
int indexOf(String str) //해당 단어가 시작하는 인덱스를 반환한다 (찾지 못할 경우 -1 반환)
//prefix로 시작하는지 검사한다
str.startsWith(prefix); //boolean 반환
String.substring(start)
//문자열 start위치부터 끝까지 문자열 자르기
String.substring(start,end)
//문자열 start위치 부터 end전까지 문자열 발췌
//////////문자열 -> 숫자 변환
Integer.parseInt()
Integer.valueOf()
//////////숫자 -> 문자열
Integet.toString()
- char에 사용하면 아스키코드가 되어버림.
- num = Character.getNumericValue(ch)를 사용하거나,
- 혹은 (int)ch - (int)’0’을 통해 구할 수 있음
- 혹은 c+""를 통해 문자열로 만들어 주어도 됨
//배열
arr.length
//문자열
str.length()
//문자열 인덱스 접근
str.charAt(i)
str.toUpperCase()
str.toLowerCase()
Arrays.copyOfRange(array, from, to);
값에 의한 복사가 일어난다.
복사된 배열에서 값을 바꿔도 원본 배열의 값은 바뀌지 않는다.
import java.util.Arrays;
//오름차순
Arrays.sort(arr);
//내림차순 (내림차순 때는 int말고 integer를 써야 함!)
Arrays.sort(arr,Collections.reverseOrder());
//일부분만
Arrays.sort(arr, 0, 4); // 0,1,2,3 요소만 정렬
배열이 정렬되어 있어야만 사용할 수 있음
int Arrays.binarySearch(배열, key값)
Arrays.binarySearch
는 int
를 반환하는데
[참고] 값에 1을 빼는 이유는 만약 반환 값이 0일 경우 +0과 -0의 구분을 할 수 없어서이다. 즉
값을 찾아서 0번째 인덱스에 존재한다는 의미
vs값이 없고 만약 추가된다면 0번째 인덱스에 추가된다는 의미
를 구분하기 위해서이다. 이처럼 -1을 해주면 무조건 값을 찾았을 경우에는 양수를 값을 찾지 못했을 경우에는 음수를 반환하게 된다.
리스트를 배열로 바꾸는 법
타입이 같다면 toArray를 사용하면 된다.
example) ArrayList -> String[]
list.toArray(new String[list.size()])
하지만 Integer 리스트를 int 배열로 바꾸는 등 타입이 변경되야 할 때는 stream을 유용하게 사용할 수 있다.
example) ArrayList -> int[]
list.stream().mapToInt(i->i.intValue()).toArray()
//comparator 사용
Collections.sort(strings, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
int java.util.list.indexOf(Object o)
List에서 특정요소를 찾아 index를 반환한다.
배열에서 쓰고 싶은 경우Arrays.asList(arr).indexOf(item);
처럼 배열->리스트로 변환해 주어야 한다.
하지만 만약 정렬된 배열이면 굳이 리스트로 변환하지 않고 Arrays.binarySearch(배열,key)를 사용할 수 있다.
example)
List<String> list = Arrays.asList("a","b","c");
System.out.println(list.indexOf("b")); // 1 출력
Math.round 와 String.format()
double money = 5000.000;
System.out.println(Math.round(money*1000)/1000);
//결과 5000
System.out.println(String.format("%.3f", money));
//결과 : 5000.000
Math.round => 첫째짜리까지 반올림.
곱하고 나누기 꼼수를 이용해 n번째까지 반올림 가능
Math.sqrt()
더블을 반환함, Math는 내장되어있음