모든 예외의 부모클래스
해쉬코드 : 고유의 값
toString : 주소값을 보여준다.
객체를 만들고,
hashcode()
주소값, 원칙은 주소값
hashcode > equals() > true;
>다르면 > false
주소값이 다르면, 다른 객체,
1.주소가 같은지, 2.값이 같은지
hashcode, equals
해쉬코드 생성
ㅡㅡㅡ
public class Cat {
String name;
public Cat(String name) {
super();
this.name = name;
}
}
public class Dog {
String name ;
public Dog(String name) {
super();
this.name = name;
int id;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return name;
}
@Override
public int hashCode() {
return Objects.hash(name);
}
@Override
public boolean equals(Object obj) { //Object 객체라서 뭐든지 받을수 있다.
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Dog other = (Dog) obj;
return Objects.equals(name, other.name);
}
}
public class CatMain {
public static void main(String[] args) {
Cat cat1 = new Cat("야옹이");
Cat cat2 = new Cat("야옹이");
String name1 = "홍길동";
String name2 = new String("홍길동");
String name3 = new String("홍길동");
System.out.println(cat1==cat2); //false : 주소
//toString() 메소드 재정의 하지 않았을 때
System.out.println(cat1); //주소 : objectexam01.Cat@626b2d4a
System.out.println(cat2); //주소 : objectexam01.Cat@5e91993f
System.out.println(cat1.equals(cat2)); // false: 객체 주소비교 // 다른객체
System.out.println(cat1.name.equals(cat2.name)); //값을 비교
System.out.println();
// == 의 비교
//equals
System.out.println("===============================================");
System.out.println(name1==name2); //주소 false
//toString() 메소드를 재정의
System.out.println(name1); //홍길동
System.out.println(name2); //홍길동
//String 클래스는 Object의 equals()메소드를 재정의
System.out.println(name1.equals(name2)); // 내용비교 true;
System.out.println(name2.equals(name3)); // 내용비교 true;
Dog dog1 = new Dog("멍멍이");
Dog dog2 = new Dog("멍멍이");
System.out.println(dog1==dog2); //false
//toString() 메소드를 재정의
System.out.println(dog1); //멍멍이,
System.out.println(dog2); //멍멍이,
System.out.println(dog1.equals(dog2));
System.out.println();
System.exit(0); //강제종료, 정상적으로 종료
System.exit(1); //비정상적 종료
System.exit(-1);
}
}
ㅡㅡㅡ
public class DateExam {
public static void main(String[] args) {
Date now = new Date(); // 현재날짜
String strNow1 = now.toString();
System.out.println(strNow1);
SimpleDateFormat f = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 MM분 ss초");
String strNow2 = f.format(now);
System.out.println(strNow2);
}
}
ㅡㅡㅡ
public class StringBuilderExam {
public static void main(String[] args) {
StringBuilder str = new StringBuilder();
str.append("안녕!!");
str.append("즐거운 시간");
str.append("자바는 즐거워~");
System.out.println(str);
str.delete(1, 6); //1~ 6번앞까지 5까지만 삭제된다.
//str String보다
//작업이 많다면 StringBuilder가 낫다.
//아니면,
System.out.println(str);
//알고리즘,자료구조 = 코딩테스트
//영어
//같은 예제가 내것이 될떄까지.
System.out.println(str);
}
}
public class StringTokenizerExam {
public static void main(String[] args) {
String str01 = "java/html/python/css";
StringTokenizer strToken = new StringTokenizer(str01, "/"); // 슬래쉬(만나면) 쪼개라
//꺼낼떈 while
while(strToken.hasMoreElements()) { //꺼내올 문자열이 있으면 꺼낸다.
// String token = strToken.nextToken();
// System.out.println(token);
System.out.println(strToken.nextToken());
}
System.out.println();
String str02 = "안녕!!/java/즐거운 시간";
String[] arryStr = str02.split("/| "); // 슬래쉬 또는 공백으로 되어있으면, 이것을 쪼개서 여기다가 담아줘라.
//1)배열출력
for(int i = 0 ; i < arryStr.length ; i++) {
System.out.println(arryStr[i]);
}
System.out.println();
//2)배열출력
for(String s : arryStr) {// 이배열에 있는 것을 하나씩 꺼내주고 문자열으로 담아준다.
System.out.println(s);
}
System.out.println();
//3)배열출력
// 배열을 문자열로 출력
System.out.println(Arrays.toString(arryStr));
System.out.println();
//문자열의 일부만을 출력하고 싶다.
String str03 = "hello!! java";
String subStr = str03.substring(3, 6); //마지막 인덱스 +1 : 내가 꺼내올 마지막
System.out.println(subStr);
System.out.println();
//문자열의 앞 뒤에 있는 공백을 제거
String str04 = " hello!! java ";
System.out.print(str04);
System.out.println("즐거운 시간");
System.out.println("------------------------");
System.out.print(str04.trim());
System.out.println("즐거운 시간");
}
}
▣ System 클래스
- java.lang 패키지
- 운영체제의 일부 기능을 이용할 수 있게 함
- System 클래스의 정적 메소드와 필드를 이용하면
프로그램을 종료, 키보드 입력, 콘솔(모니터) 출력
현재 시간 읽기, 시스템 프로퍼티 읽기 등이 가능
- System.exit(int status) : 프로세스 종료
System.exit(0) : 프로그램 종료(프로세스 종료)
1 또는 -1 : 비정상적인 종료
- System.in : 키보드 입력
- System.out : 콘솔(모니터)에 문자 출력
- System.err : 콘솔(모니터)에 에러 내용 출력
- System.currentTimeMillis() : 현재 시간을 밀리초 단위의 long 값으로 리턴
- System.nanoTime() : 현재 시간을 나노초 단위의 long 값으로 리턴
- System.getProperty() : 운영체제와 사용자 정보 제공
System.in.read() : 키보드로 입력된 키코드를 읽어오기
0-48, A - 65, a - 97,..
윈도우 : Enter - 13, 10
macOS : Enter - 10
===============================================
▣ String / StringBuffer / StringBulider 클래스
1) String 클래스
- String 클래스는 문자열을 추가할 때마다 새로운 객체를 생성하고
이전 객체는 GC가 메모리에서 제거
추가가 많을 경우 속도가 느려짐
2) StringBuffer / StringBulider 클래스(쓰는 것은 똑같지만, 쓰는 환경이 다르다)
(멀티쓰레드는 Buffer 음성,자막,영상
(단일쓰레드는 Builder
- 자바에서 변경될 수 있는 문자열을 다루기 위해 사용
- 문자열을 추가/삭제해도 객체를 새롭게 생성하지 않음
- StringBuffer / StringBulider의 객체는 내부에 문자열을 저장하는 버퍼(임시기억장소)가 있음
그 버퍼의 크기는 변할 수 있음.
- StringBuffer : 다중쓰레드 환경에서 더 안정적
- StringBulider : 단일 쓰레드 환경(일반적)
StringBulider append(String s) : 문자열 s를 버퍼에 덧붙인다.
StringBulider insert(위치(int offset) , String s) : 문자열 s를 버퍼의 위치(offset 위치)에 삽입
StringBulider delete(int start, int end) : 문자열의 일부분을 버퍼에서 제거
StringBulider replace(int start, int end, String s) : 문자열의 일부분을 문자열 s로 대체
....
===============================================
▣ StringTokenizer 클래스
- 문자열을 token으로 분리하는데 사용
- 토큰 : 분리한 문자열을 의미
- 공백이나 줄바꿈, 탭, 쉼표,...등 구분자(delimiter)를 사용해 문자열 분리
int countTokens() : 분리할 수 있는 문자열의 총수를 반환
boolean hashMoreTokens() : 남아 있는 문자열이 있는지 여부를 반환
String nextTonken() : 문자열을 하나씩 가져옴(다음 토큰을 꺼내옴)
더 이상 가져올 문자열이 없으면 예외를 발생시킴
nextTonken()를 사용하기 전에 hashMoreTokens() 메소드로 가져올
문자열이 있는지 먼저 체크해야 함
StringTokenizer 참조변수명 = new StringTokenizer(String s); //문자열 s를 기본 구분자로 나눔
기본구분자 : 공백, 탭, 줄바꿈, carriage return, form feed
StringTokenizer 참조변수명= new StringTokenizer(String s, "구분자");
//문자열 s를 구분자 구분
---------------------------------------------------
String str01 = "java/html/python/css";
StringTokenizer strToken = new StringTokenizer(str01, "/");
while(strToken.hasMoreTokens()) { //꺼내올 문자열이 있으면
String token = strToken.nextToken();
System.out.println(token);
// System.out.println(strToken.nextToken());
}
===========================================
===============================================
▣ Arrays 클래스
- 배열을 복사, 정렬, 탐색 등에 사용되는 메소드 제공
- Arrays가 제공하는 메소드는 모두 static 메소드
Arrays.toString(배열명) : 배열을 문자열로 출력
Arrays.sort(배열) : 배열을 오름차순으로 정렬
Arrays.equals(배열1, 배열2) : 두 배열이 같은지 비교
Arrays.copyOf(배열, 길이) : 원본 배열을 지정한 영역 만큼 복사
===============================================
▣ 날짜/시간/ 표시형식
1. Date 클래스
- 대부분의 메소드는 현재 deprecated 중
- 주로 하위 버전 호환성이나 간단한 날짜 정보를 원할 때만 사용
- 현재 날짜
Date now = new Date();
2. Calendar 클래스
- 달력 정보를 제공하는 클래스
- 지역이나 문화에 따라 달력을 표시하는 방식이 다르기 때문에
추상 클래스로 되어 있음
- 현재 시각(컴퓨터에 있는 시간대를 기준으로 Calendar 하위 객체를 얻을 수 있음)
Calendar now = Calendar.getInstance();
int year = now.get(Calendar.YEAR); // 년도를 리턴
3. SimpleDateFormat 클래스
- SimpleDateFormat ()
- SimpleDateFormat (String pattern)
- SimpleDateFormat (String pattern, Locale locale)
y - 연
M - 월
w - 월 구분 없는 주
W - 주
d - 일
D - 월 구분 없는 일
E - 요일
a - 오전과 오후
h - 시(1-12)
H - 시(0-23)
k - 시(1-24)
K - 시(0-11)
m - 분
s - 초
S - 밀리초
z - 타임존
// 날짜를 문자열 패턴으로
SimpleDateFormat f = new SimpleDateFormat("패턴");
String s = f.format(new Date());
// 날짜 문자열을 Date 객체로 가져오기
SimpleDateFormat f = new SimpleDateFormat("패턴");
Date d = f.parse("날짜문자열");
4. DecimalFormat 클래스
- DecimalFormat f = new DecimalFormat("패턴");
String df = f.format(처리할 숫자);
'1. JAVA > 3). 자바_개념' 카테고리의 다른 글
자바_개념_Day_30 (0) | 2024.02.13 |
---|---|
자바_개념_Day_29 (1) | 2024.02.08 |
자바_개념_Day_26 (1) | 2024.02.05 |
자바_개념_Day_25 (0) | 2024.02.02 |
자바_개념_Day_24 (0) | 2024.02.01 |