기본 API클래스
자바에선 String 클래스를 통해 문자열에 대한 처리를 제공한다.
String a = new String("java"); // String에 원래 문자열을 집어넣는 방법
String a = "java"; // 현재 사용하는 방법
String은 문자 여러개로 만든 배열과 같은 취급을 받기 때문에
String은 참조변수이자 .으로 접근이 가능하다
하지만 실제로 배열은 아니기 때문에 배열과 같은 방식으로 접근할수는 없고,
대신에 자바에서 지원하는 String 전용 메서드를 사용하여 접근할수 있다.
메서드 | 의미 |
concat(String str) | 문자열을 연결한다. |
substring(int a, int b) | 문자열을 a부터 b전까지 잘라낸다.(1,4면 1~3까지) |
length() | 문자열의 길이를 반환한다. |
toUpperCase() | 문자열을 대문자로 변경한다. |
toLowerCase() | 문자열을 소문자로 변경한다. |
charAt(index) | 인덱스에 해당하는 글자를 반환한다. |
indexOf(String str) | 문자열의 위치를 반환한다. |
equals(String str) | 문자열이 같은지 boolean 값으로 반환한다. |
trim() | 문자열 앞, 뒤에 있는 공백을 제거한다. |
replace(String str1, String str2) | 문자열 내의 특정 부분을 다른 문자열로 변경한다. |
replaceAll(String str1, String str2) | 문자열 내의 특정 부분을 다른 문자열로 변경한다. |
valueOf(int a) | 파라미터 a를 입력받아 문자열로 반환한다. |
split() | 문자열을 입력한 기준으로 분리한다. |
format(String x, Object y) | 입력되는 객체 혹은 문자열을 x의 형태로 만들어서 리턴한다. |
concat은 문자열을 연결하는 역할을 하지만 자바에서 +를 사용하면 문자열과 문자열, 문자열과 변수 간에 연결이 더 간편하기 때문에 주로 +를 사용하고 concat은 잘 쓰이지 않는다.
StringBuilder / StringBuffer
String은 수정이 불가능하고 선언할때마다 새로운 객체를 생성하기 때문에 메모리를 많이 차지하게 된다.
이를 해결하기위해서 StringBuilder와 StringBuffer를 사용한다.
StringBuilder와 StringBuffer는 변경이 가능하기 때문에
String의 단점을 보완할수있다.
대신 StringBuilder와 StringBuffer는 선언할때 new를 사용해야 하고,
데이터를 추가할 때 append 명령어를 사용해야한다.
예시
StringBuffer a = new StringBuffer("안녕");
a.append("하세요");
System.out.println(a); // 출력 : 안녕하세요
String의 경우에는 처음에 "안녕" 나중에 "안녕하세요" 라고 대입시키면
메모리상에 "안녕"과 "안녕하세요" 모두 남는 반면에
스트링빌더와 버퍼는 "안녕"을 "안녕하세요"로 바꿀수 있다.
둘의 사용법은 같으나
스트링빌더는 단일스레드, 스트링버퍼는 멀티스레드환경에서 사용하는게 유리하다.
(웹페이지는 주로 멀티)
시간처리
자바에서 시간을 처리하기 위해서 사용하는 메서드이다.
System.currentTimeMills()
시간을 1970년 1월 1일을 기준으로 밀리초 단위로 나타내는 메서드 이다.
현재시간이 밀리초로 나타나기 때문에 데이터타입으로는 long을 사용해 변수에 담으며,
주로 프로그램에서 시간을 숫자로 연산하기 위해 사용하는 방법중 하나이며,
출근시간과 퇴근시간에 각각 currentTimeMills()를 적용하여 퇴근시간에서 출근시간을 빼면
밀리초 단위로 값이 나오게 되는데, (1000*60*60)로 나눠주면 하루에 근무한 시간을 구할수 있다.
java.util.Calendar
자바에서 날짜를 다루기 위해 기본적으로 지원하는 클래스로
Calendar 클래스를 이용하여 년, 월, 주, 일과 같은 날짜의 개념에 접근할수 있다.
Calendar는 추상클래스로 직접 인스턴스를 생성하지 못하고, getInstance() 메서드를 통해 인스턴스를 생성하거나, GregorainCalendar 생성자와 다형성을 이용해 생성하는 방법이 있다.
Calendar a = Calendar.getInstance(); // 싱글턴 패턴
Calendar b = new GregorainCarendar(); // 다형성을 이용한 객체 생성
둘중 어떤 방법을 사용해도 생성되는 인스턴스의 종류는 같다.
getter / setter
Calendar 클래스에서 정보를 가져오려면 get() 메서드를 사용해야 하고, 정보를 변경하려면 set() 메서드를 사용해야 한다.
또한 자바에서 월 개념은 0부터 11까지 이므로 1월은 0, 12월은 11로 표현된다.
일의 경우에는 기존 방식과 동일하지만,
요일의 경우 일요일부터 시작되며, 일요일이 1, 토요일이 7에 대응한다.
캘린더를 이용해서 날짜 변경하는법
Calendar Christmas = Calendar.getInstance(); // Christmas 변수에 오늘 날짜가 대입됨
Christmas.set(Calendar.MONTH, 11); // 12월
Chistmas.set(Calendar.DATE, 25); // 25일
위의 방법으로 Chistmas 변수에 현재년도 12월 25일이란 날짜를 대입할수 있다.
long, Calendar, Date 간의 변환
시간을 나타내는데 사용한 long, Calendar, Date는 서로 변환 가능하다.
Calendar calendar = Calendar.getInstance(); // calendar 객체 생성
Date date = calendar.getTime(); // calendar에 저장된 시간을 date에 대입
System.out.println(date); // 오늘 날짜를 일로 변환한 값을 출력
calendar.setTime(date); // 일 기준으로 calendar를 설정
long time = calendar.getTimeInMills(); // 1970년 1월 1일부터 calendar 변수 시간까지 시간을 밀리초로 time 변수에 저장
calendar.setTimeInMills(time); // time에 저장된 시간을 밀리초 단위로 calendar에 대입
Random
무작위 값을 얻고싶을때 사용한다.
Random() | 현재 시간을 종자값으로 하는 인스턴스 생성 |
Random(long seed) | seed를 종자값으로 하는 인스턴스 생성 |
Random()메서드에 값을 주게되면 랜덤이긴 하지만 값이 여러번 중복되는 현상이 발생하기 때문에 주로 종자값을 주지 않는 방법을 사용하며, 이 경우에는 위에 사용했던 밀리초 개념을 종자값으로 두어 중복이 발생할수 없게 한다.
int nextInt() | 무작위 int 값 반환 |
int nextInt(int n) | 0보다 크고 n보다 작은 int 값 반환 |
boolean nextBoolean() | 무작위 boolean 값 반환 |
long nextLong() | 무작위 long 값 반환 |
double nextDouble() | 무작위 double 값 반환 |
float nextFloat() | 무작위 float 값 반환 |
위의 메서드를 활용하여 원하는 종류의 Random 인스턴스의 값을 받아올수 있다.
'프로그래밍 공부' 카테고리의 다른 글
2025.02.03 java 공부 (0) | 2025.02.03 |
---|---|
2025.01.24 java 공부 (0) | 2025.01.24 |
2025.01.22 java 공부 (0) | 2025.01.22 |
2025.01.21 java 공부 (0) | 2025.01.21 |
2025.01.20 java 정리 (0) | 2025.01.20 |