1. JAVA/3). 자바_개념

자바_개념_Day_27

구이제이 2024. 2. 6. 17:49

모든 예외의 부모클래스

해쉬코드 : 고유의 값

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