util ~ singleton~string~object
/*
* Util 패키지의 주요 클래스
* 1. Random 클래스
* - 임의의 난수를 발생시키는 클래스.
* 2. Math 클래스
* - 수학과 관련된 메서드를 제공해 주는 클래스
* - 유일하게 java.ang 패키지에 있는 클래스.
* 3. Calendar 클래스
* - 날짜 / 시간 관련 정보를 제공해 주는 클래스.
* 4. Arrays 클래스
* - 배열 객체를 처리해 주는 클래스.
*/
/*
* 1. Random 클래스
* - 지정된 범위 내에서 임의의 난수를 발생시키는 클래스.
* - 활용 분야 : 게임, 확률 등에서 사용됨.
* - 형식) nextInt(가장 큰 수) + 시작 수
*/
Random random = new Random();
int[] lotto = new int[6]; // 로또 배열
for(int i=0; i<lotto.length; i++) {
lotto[i] = random.nextInt(45) + 1;
if(i>0) {
for(int j=0; j<i; j++) {
if(lotto[i] == lotto[j]) {
//중복인 경우
lotto[i] = random.nextInt(45) + 1;
j = -1;
}}}
/*
* 2. Math 클래스
* - 수학과 관련된 메서드를 제공해 주는 클래스
*/
// 1. max() : 최대값을 구해 주는 메서드
// min() : 최소값을 구해 주는 메서드
System.out.println("최대값 >>> " + Math.max(num1, num2));
System.out.println("최소값 >>> " + Math.min(num1, num2));
// 두 수를 가지고 비교함.
// 2. round() : 반올림이 적용이 되는 메서드
System.out.println(Math.round(125.5124));
// 3. abs() : 절대값을 구해 주는 메서드.
System.out.println("abs >>> " + Math.abs(-125.34));
// 4. ceil() : 무조건 올림을 해 주는 메서드
// 웹페이지 페이지수 작성할 때 게시물이 43개여도 10개씩 한페이지씩 할때 ceil이용해서 5페이지됨
System.out.println("ceil >>>" + Math.ceil(12.123));
/*
* 3. Calendar 클래스
* - 날짜 / 시간과 관련된 정보를 제공해 주는 클래스.
* - Calendar 클래스는 추상클래스임.
* - 추상클래스로 작성된 이유 : 날짜와 시간을 계산하는 방법이 지역, 나라마다 다르기 때문임.
* - Calendar 클래스는 날짜와 시간을 계산하는데 꼭 필요한 메서드나 상수로 구성이 되어 있음.
* - Calendar 클래스를 객체 생성을 하려면,
* Calendar 클래스가 가지고 있는 클래스(정적) 메서드 getInstance() 메서드를 사용하면 됨.
* - getInstance() 메서드를 호출하면 내부적으로 java.util.GregorianCalendar 객체를 생성하여 리턴을 함.
* - GregorianCalendar 클래스는 Calendar 클래스의 자식 클래스임.
* - getInstance() : 싱글턴 방식. 하나의 인스턴스만을 가지고 공유해서 사용할 때 쓰는 방식.
*/
Calendar cal = Calendar.getInstance();
// 날짜와 관련된 정보를 확인하는 방법
int year = cal.get(Calendar.YEAR); // 현재 년도
int month = cal.get(Calendar.MONTH) + 1;
int day = cal.get(Calendar.DAY_OF_MONTH);
// 1년 52주 주에 오늘이 몇번째 주인지 확인
int week = cal.get(Calendar.WEEK_OF_YEAR);
// 시간과 관련된 정보를 확인하는 방법
// 1. 12시간제를 이용하는 방법 - 오전(0), 오후(1)
int am_pm = cal.get(Calendar.AM_PM);
int hour = cal.get(Calendar.HOUR);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
if(am_pm==0) {
System.out.println("현재 시간은 오전 " + hour + "시" + minute + "분" + second + "초 입니다.");
}else {
System.out.println("현재 시간은 오후 " + hour + "시" + minute + "분" + second + "초 입니다.");
}
// 2. 24시간제를 이용하는 방법
int hours = cal.get(Calendar.HOUR_OF_DAY);
/*
* 4. Arrays 클래스
* - 배열 객체를 처리해 주는 클래스.
*/
// 1. fill() : 배열의 요소를 특정한 값(데이터)으로 채우는 메서드
Arrays.fill(str, "김유신"); // 클래스이름.멤버메서드 --> static
// 2. equals(객체, 객체)
// 두 객체의 내용(데이터)이 같은지 틀린지를 비교하는 메서드. - 반환타입 boolean.
if(Arrays.equals(str, str2)) {
// 3. sort() : 배열의 원소(데이터)를 정렬(오름차순)해 주는 메서드.
int[] arr = {54, 67, 13, 97, 41};
Arrays.sort(arr); // 오름차순 정렬
singleton
@static을 응용하여 프로그램 전반에서 사용하는 인스턴스를 하나만 구현하는 방식
1. private 생성자 만들기
2. 인스턴스 생성하기
3. public 메서드 만들기
* String 클래스의 특징
* 1. 문자열 객체를 처리하는 클래스.
* 2. 객체 생성 방법 - 2가지
* 1) 일반 변수 선언 방법으로 객체 생성. // 상수풀에서 홍길동을 찾으므로 str1과 str2의 주소값이 같다
* 예) String str1 = "홍길동";
* String str2 = "홍길동";
* 2) new 키워드를 이용하는 방법
* 예) String str3 = new String("홍길동"); // 2번째 방법은 따로 객체가 생성되서 비효율적
* String str4 = new String("홍길동");
// 문자열 연산(결합)
str1 = str1 + str2;
System.out.println("str1 주소 >>> " + System.identityHashCode(str1));
// String은 대표적인 final 클래스라 연산시 새로운 상수풀로 주소값이 바뀜
// 1. toUpperCase() : 소문자 -> 대문자
// toLowerCase() : 대문자 -> 소문자
// 2. length() : 문자열의 길이를 정수값으로 반환해주는 메서드.
// 3. concat() : 문자열을 결합하는 메서드.
// 4. eqaulsIgnoreCase()
// => 대소문자를 구분하지 않는 메서드.
// 5. charAt(index)
// => 문자열에서 특정 단일 문자를 추출하는 메서드 (0부터시작)
/*
* String 클래스의 단점
* - 빈번하게 문자열 연산을 실행할 경우 메모리를 많이 차지하게 됨.
* - 매번 연산시마다 새로운 객체를 생성하게 됨.
* ==> 메모리 영역의 과부하가 발생할 가능성이 큼.
* - 이러한 단점을 개선한 클래스가 등장을 함 : StringBuffer 클래스
*/
1. append() : 문자열을 추가해 주는 메서드
2. replace() : 문자열을 교체하는 메서드
형식) replace(시작 index, 끝(-1) index, "교체할 문자열");
3. substring() : 문자열을 추출하는 메서드. // 웹 홈페이지 게시판 연/월/일 만 뽑고 시분초는 안뽑을 때 사용
형식1) substring(시작 index, 끝(-1) index) // 중간 문자열 추출할 때
형식2) substring(시작 index, ) // 원하는 곳부터 끝까지 추출할 때
/*
* StringTokenizer 클래스
* - 특수 문자를 기준문자(delimiter)를 기준으로 문자열을 잘라주는(파싱) 클래스.
* - 기준문자로 분리된 문자열을 토큰(token)이라고 함.
* - 웹에서 전화번호를 하이폰(-) 기준으로 앞자리, 중간자리, 뒷자리 형식으로 구분해서 번호를 추출할 때 사용함.
* (예 : 주민번호, 핸드폰 번호 등등)
*/
// countTokens() : 기준문자로 분리된 토큰의 갯수를 정수값으로 반환해 주는 메서드.
// hasMoreTokens() : 반환할 다음 토큰이 있는지를 확인하는 메서드.
// ==> 있으며 true값을, 없으면 false값을 반환
// nextToken() : 존재하는 토큰을 반환해 주는 메서드.
/*
* Object 클래스
* 1. java의 모든 클래스의 조상 클래스이다.
* ==> java의 가장 최상위 조상클래스가 Object 클래스임.
* 2. 사용자가 정의한 클래스에 자동으로 상속이 된다.
* ==> 단, extends 키워드를 사용하지 않은 클래스에만 상속이 됨.
*
* [Object 클래스의 주요 메서드]
* - toString() : - 객체 자신의 정보를 문자열로 반환하는 메서드.
* - 인스턴스에 대한 정보를 문자열로 제공할 목적으로 사용이 됨.
* - getClass() : - 객체 자신의 클래스 정보를 담고 있는 Class 인스턴스를 반환하는 메서드.
* - hashCode() : - 객체 자신의 해쉬 코드를 반환하는 메서드.
* - equals() : - 객체 자신과 또 다른 객체가 같은 객체인지 알려주는 메서드.
* - clone() : - 객체 자신의 복사본을 만드는 메서드.
*/
/*
* toString() 메서드 재정의
* - Object 클래스에서 상속을 받은 메서드를 유용한 정보가 반환이 되도록 재정의.
* - 해당 클래스의 멤버변수가 정보를 가지고 있는데
* 가지고 있는 데이터에 올바른 값이 담겼는지, 혹은 틀린 데이터가 담겼는지 확인을 하고 싶은 경우에
* toString() 메서드를 재정의하여 값을 확인할 수 있음.
*/
source - generate toString()..
object배열은 모든 자료형을 받을수 있으나 딱히 쓸모는 없다.
😀단축for문
for(String k : str) {
System.out.println("str 배열 요소 >>> " + k);
😀배열
new를 넣어야지 heap메모리에 잡힘
[0] => 인덱스
arr [1] ==> 배열이름에 1번째 인덱스
😀클래스이름.멤버메서드 --> static
'자바 JAVA' 카테고리의 다른 글
23.01.26 (네트워크) (1) | 2023.01.26 |
---|---|
23.01.18 (기본 클래스) (0) | 2023.01.18 |
23.01.16 (상속과 다형성) (0) | 2023.01.16 |
23.01.13 (클래스와 객체) (0) | 2023.01.13 |
23.01.12 (클래스와 객체) (0) | 2023.01.12 |
댓글