코딩테스트 응시 언어 변경 [ python -> java ]
JAVA를 열심히 뜯어먹어보자
참고 블로그
java 코딩테스트 준비 (기본)
원래 나는 python으로 코딩테스트를 준비하고 있는데, 요새들어 종종 코딩테스트 언어가 java로만 제한된 기업들이 있어 java로 코딩테스트를 급하게 준비할 일이 생기곤 했다. (...) 이번에도 그런
velog.io
1. System.out.print
2. 문자열을 배열로 변환하는 메소드 toCharArray()
- char[] array = s.toCharArray() 결과로 원소 하나씩 존재하는 배열이 만들어진다. 문자열을 char문자로 쪼갠 뒤 char[]배열에 순서대로 값을 넣어 변환시킨다.
https://ssdragon.tistory.com/31
자바 toCharArray()
🤔 toCharArray()란? String 문자열을 char형 배열로 바꿔서 반환해주는 메서드이다. "ABCD" 라는 문자열이 있으면 arr[0] = 'A' arr[1] = 'B' arr[2] = 'C' arr[3] = 'D' 위 값처럼 char 배열을 반환해준다. 이 메서드는
ssdragon.tistory.com
3. 문자열을 전부 소문자로 변환하는 메소드 toLowerCase()
- 문자열에 특정한 문자를 찾아야할 때, for문 순회 전에 전부 소문자로 바꾼 뒤 찾자.
4. 문자열의 인덱스 번호로 해당 문자를 가져오는 메소드 charAt()
5. 문자열 길이를 얻으려면 .length , 배열 길이를 얻으려면 .length()
6. Integer wrapper class의 메소드 정리
https://velog.io/@imok-_/Integer-Class%EC%9D%98-%EB%A9%94%EC%86%8C%EB%93%9C
Integer Class의 메소드
Integer Class 메소드 정리
velog.io
- 문자열을 바로 숫자로 변환시켜주는 메소드 Integer.parseInt(String s) : String 클래스가 int 타입으로 변한다!
7. primitive type의 변수들의 길이를 얻으려면 String class로 바꿔서 length()를 하는게 편하다.
8. String 타입의 변수에 다른 문자열을 덧붙이는 연산을 할 땐, += 사용하지말고 StringBuilder 객체를 선언해서 append()를 하자. https://onlyfor-me-blog.tistory.com/entry/JAVA-StringBuilder%EB%9E%80-StringBuilder-%EC%82%AC%EC%9A%A9%EB%B2%95
[JAVA] StringBuilder란? StringBuilder 사용법
자바에서 문자열하면 String을 대개 많이 떠올리고 사용할 것이다. 그런데 이 문자열이 1개 이상 있어서 이것들을 더해야 한다고 하면 어떤 방법을 쓸 수 있을까? 간단하게는 이 방법을 쓸 수 있을
onlyfor-me-blog.tistory.com
10. 오토박싱 : Integer i = 5; 라고 선언해도 알아서 기본형 타입의 값을 감싸주는 기능이 존재함(java 5 이후부터).
- 컴파일러가 자동으로 new Integer(5) 메소드를 호출해서 객체 정보를 넣어준다. 역의 역할을 오토언박싱이라고 한다.
11. 메소드체이닝 : StringBuffer는 메소드 이후 리턴값으로 본인 객체를 리턴한다. 그렇기 때문에 new StringBuffer.append().append().append()... 가 가능하다.
StringBuffer sb2 = new StringBuffer();
StringBuffer sb3 = sb2.append("hello"); // 리턴값으로 자기자신을 반환하기 때문에 sb3와 sb2는 같은 객체
if(sb2 == sb3){
System.out.println("출력값으로 동일함!");
}
12. 문자열 덧셈 : 보통 str1 + str2 을 많이 활용하는데 이렇게 해서는 안된다는 것을 알았다. 문자열 덧셈 연산을 할 때, 내부적으로 StringBuffer를 호출해서 append()를 진행한다. 왜냐하면 String class는 불변객체이기 때문에 덧셈연산시 String객체를 생성하는 작업이 수행되기 때문에 이보다는 StringBuffer 객체를 생성해서 덧셈연산을 수행하는 편이 효율적이다. 즉 String 덧셈 연산을 진행할 때 + 보단 버퍼객체를 생성하자.
13. Math 클래스는 생성자는 private이지만 메소드는 static으로 선언되어있어, Math.max() 와 같이 사용이 가능하다. 프로그래머스에서도 java.lang.Math 라이브러리를 import할 필요 없이 바로 사용이 가능하다.
14. Set은 인터페이스로 구현체는 HashSet과 TreeSet을 주로 활용한다.
Set<String> set1 = new HashSet<>();

15. String.toString()이 아닌 String.valueOf()를 사용해야하는 이유 : 두 메소드 모두 스트링 클래스로 형변환을 하기 위해 사용되는데, 검색해보니 valueOf()를 추천한다. 1. null처리가 가능 2. primitive 타입도 형변환이 자유롭다
String.valueOf() 를 사용해야하는 이유
매번 궁금할 때마다 찾아보고 까먹기를 반복했는데직접 테스트 코드를 통해 동작시켜보면서 확실하게 기억해보자
velog.io
16. set에서 데이터 검색 : set은 index가 없기 때문에 get() 메소드를 제공하지 않는다. 따라서 iterator(반복자)를 사용해야 한다. + hashset.iterator()는 이터레이터 객체를 리턴해준다.
17. map의 key들을 전부 꺼내어 set에 저장 : map.keySet();

18. 리스트와 배열 비교

19. Date class는 JDK 1.0때 나온 클래스로 지역화에 대한 고려는 되어있지 않다. 그래서 나온게 Calendar 클래스이다.
- Calendar 클래스 생생 방법
- Calendar클래스는 추상클래스이다.
- Calendar클래스에 대한 인스턴스를 생성하려면 Calendar가 가지고 있는 클래스 메소드 getInstnace()를 사용해야 한다.
- getInstance()메소드를 호출하면 내부적으로 java.util.GregorianCalendar 인스턴스를 만들어서리턴한다.
- GregorianCalendar는 Calendar의 자식 클래스이다.
Calendar cal = Calendar.getInstance();
- Calendar 클래스를 이용해서 현재 날짜와 시간에 대한 정보를 알아내는 방법
- Calendar는 현재 날짜와 시간에 대한 정보를 가집니다.
- Calendar가 가지고 있는 get메소드에 Calendar의 상수를 어떤 것을 넣어주느냐에 따라서 다른 값이 나오게 됩니다.
int yyyy = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH) + 1; // 월은 0부터 시작합니다.
int date = cal.get(Calendar.DATE);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
- Calendar 클래스를 이용해서 원하는 날짜나 시간에 대한 정보 얻어오는 방법
- Calendar가 가지고 있는 add메소드를 이용하면 쉽게 다음 날짜나 이전 날짜를 구할 수 있습니다.
- 현재 칼랜더에 시간을 5시간 더하는 방법. 5를 -5로 수정하면 5시가 전을 구할 수 있게 됩니다.
cal.add(Calendar.HOUR, 5);
20. 날짜시분초 표현을 위한 클래스 SimpleDateformat 으로 형식 지정
https://yunamom.tistory.com/200
[Java] SimpleDateFormat 패턴/사용법
기호 의미 출력 G 연대(BC,AD) AD y 년도 2022 M 월 (1~12월 또는 1월~12월) 4또는 4월, April w 년의 몇 번째 주(1~53) 16 W 월의 몇 번째 주(1~5) 3 D 년의 몇 번째 일(1~366) 102 d 월의 몇 번째 일(1~31) 12 F 월의 몇 번
yunamom.tistory.com
21. 자바 IO는 byte단위 입출력과 문자 단위 입출력 클래스로 나뉜다. 데코레이터 패턴을 공부하자
FileInputStream fis = null;
FileOutputStream fos = null;
try {
fis = new FileInputStream("src/javaIO/exam/ByteExam1.java");
fos = new FileOutputStream("byte.txt");
int readData = -1;
while((readData = fis.read())!= -1){
fos.write(readData);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
22. Springboot 프레임워크에서 스레드를 관리해주다보니 스레드에 대해서 이론이 아닌 코드레벨에서는 큰 관심을 가지지 않았는데, 이번에 스레드를 생성하는 방법에 대해서 알아보았다.
- 스레드를 만드는 방법은 Thread 클래스를 상속받거나 Runnable 인터페이스를 구현하는 것이다.
23. String 문자열에서 일부만 추출하고싶을 때 사용할 메소드 : str1.substring(시작인덱스,끝인덱스)
24. String 문자열을 n번 반복한 값을 넣고 싶을 때 사용할 메소드 : str1 = "*".repeat(n);
25. array 복사 메소드 Arrays.copyOf(원본 배열, 길이); https://www.tcpschool.com/java/java_api_arrays
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
26. 배열에서 특정 범위 슬라이싱 하기 : 파이선과 달리 배열 슬라이싱이 없어, String 클래스로 바꾸고 substring()메소드를 이용하는 방법을 활용해왔다. 그게 아니라면 Arrays.copyOfRange(배열, 시작, 끝) 을 활용해서 새로운 배열을 하나 만들자.
27. PriorityQueue<Integer> pq= new PriorityQueue<>(); // 디폴트 : 낮은 수가 우선순위
PriorityQueue<Integer> pq= new PriorityQueue<>(Collections.reverseOrder()); // 높은 수가 우선순위
PriorityQueue<String> pq= new PriorityQueue<>(); // 사전순
pq.poll() : 가장 높은 우선순위 요소 반환 및 삭제 = pq.remove()
https://innovation123.tistory.com/112
28. 자바 자료구조 힙 https://innovation123.tistory.com/111
[JAVA/자료구조] 힙(Heap), 최소 힙(Min Heap), 최대 힙(Max Heap)
힙(Heap) 힙은 완전 이진트리 형태로 최대, 최솟값을 빠르게 찾아내는데 유용한 자료구조이다. 힙은 중복값을 허용한다. 부모-자식 간 (레벨 별) 정렬은 보장하고, 형제간의 정렬은 보장하지 않아
innovation123.tistory.com
29. String[] 에서 List<String> 로 변환하는 법
[Java/자바] List와 String(문자열, 배열)을 서로 변환하는 법
List ↔ String List를 String으로 간단히 변환 join() 메서드 활용List list = new ArrayList();String answer = String.join(",",list); String을 List로 변환split() 메서드 활용String s = "sample";String[] strArr = s.split(""); // [s, a,
hstory0208.tistory.com