6 분 소요

Object클래스

Object클래스의 메서드

모든 클래스의 최고 조상으로 오직 11개의 메서드만을 가지고 있습니다.

equals(), hashCode(), toString()은 적절히 오버라이딩해야합니다.

notify(), wait() 등은 쓰레드와 관련된 메서드 입니다.

Object클래스의 메서드 설 명
protected Object clone() 객체 자신의 복사본을 반환한다.
public boolean equals(Object obj) 객체 자신과 객체 obj가 같은 객체인지 알려준다(같으면 true)
protected void finalize() 객체가 소멸될 때 가비지 컬렉터에 의해 자동적으로 호출된다. 이 때 수행되어야하는 코드가 있는 경우에만 오버라이딩한다.
public class getClass() 객체 자신의 클래스 정보를 담고 있는 Class인스턴스를 반환한다.
public int hashCode() 객체 자신의 해시코드를 반환한다.
public String toString() 객체 자신의 정보를 문자열로 반환한다.
public void notify() 객체 자신을 사용하려고 기다리는 쓰레드를 하나만 깨운다.
public void notifyAll() 객체 자신을 사용하려고 기다리는 모든 쓰레드를 깨운다.
public void wait() 다른 쓰레드가 notify()나 notifyAll()을 호출할 때까지 현재 쓰레드를 무한히 또는 지정된 시간(timeout, nanos)동안 기다리게 한다.(timeout은 천 분의1초, nanos는 109분의 1초)
publiv void wait(long timeout) 다른 쓰레드가 notify()나 notifyAll()을 호출할 때까지 현재 쓰레드를 무한히 또는 지정된 시간(timeout, nanos)동안 기다리게 한다.(timeout은 천 분의1초, nanos는 109분의 1초)
public void wait(long timeout, int nanos) 다른 쓰레드가 notify()나 notifyAll()을 호출할 때까지 현재 쓰레드를 무한히 또는 지정된 시간(timeout, nanos)동안 기다리게 한다.(timeout은 천 분의1초, nanos는 109분의 1초)

equals(Object obj)

객체 자신과 주어진 객체를 비교합니다. 같으면 true이고 다르면 false입니다.

Object클래스에 정의된 equals()는 참조변수 값(객체의 주소)을 비교합니다.

public boolean equals(object obj) {
    return (this==obj);
}

equals()를 오버라이딩해서 인스턴스변수의 값을 비교하도록 바꿉니다.

image-20240207102916569

hashCode()

객체의 해시코드를 반환하는 해시 함수 입니다.

해시코드는 데이터를 저장하고 검색하는 방법중의 하나인 해싱을 구현한 컬렉션 클래스에서 객체를 저장하고 읽어올 때 사용하는 키입니다.

동일한 실행에서 한 객체에 대해 hashCode()를 반복해서 호출했을 때 얻어지는 해시코드는 동일해야 합니다. 호출할 때마다 값이 달라지면 안됩니다.

일반적으로 해시코드가 같은 인스턴스들이 존재하는 것은 가능하지만 Object클래스에 정의된 hashCode()는 객체의 주소값으로 해시코드를 생성하므로 두 인스턴스의 해시코드는 같을 수 없습니다.

equal()를 오버라이딩하면, hashCode()도 적절히 오버라이딩 해야합니다.

toString()

객체의 정보를 문자열로 제공할 목정으로 정의된 메서드 입니다.

image-20240207112456556

getClass()

자신이 속한 클래스의 Class객체를 반환하는 메서드입니다.

Class객체는 클래스이 모든 정보를 담고 있으며, 클래스당 단 1개만 존재합니다. 클래스 파일(*.class)이 메모리에 로드될때 생성됩니다.

clone()

image-20240207113247424

String클래스

String클래스의 특징

문자형 배열(char[])과 그에 관련된 메서드들이 정의되어 있습니다.

String인스턴스의 내용은 바꿀 수 없습니다.

String str = “abc”;와 String str = new String(“abc”);의 비교

String str1 = “abc”;
String str2 = “abc”;

이것은 str1가 먼저 “abc”로 초기화했고, str2가 “abc”라는 값이 있는 주소를 같이 공유합니다.

String str3 = new String(“abc”);
String str4 = new String(“abc”)

위의 소스코드는 생성자로 각각 “abc”라는 값을 다른 주소에 저장합니다.

빈 문자열(“”, empty string)

  • 내용이 없는 문자열, 크기가 0인 char형 배열을 저장하는 문자열입니다.

  • 크기가 0인 배열을 생성하는 것은 어느 타입이나 가능합니다.

    char [] cArr = new char[0];  //크기가 0인 char 배열
    int [] iArr = {}; //크기가 0인 int 배열
    
  • String str=”“;은 가능해도 char c = ‘‘;는 불가능

  • String 은 참조형의 기본값인 null 보다 빈 문자열로 초기화하고 char형은 기본값인 ‘\u0000’보다 공백으로 초기화

    String s= null;
    char c ='\u0000'
          
    =>
    String s = "";//빈 문자열로 초기화
    char c = ' ';//공백으로 초기화
    

String클래스의 생성자와 메서드

메서드 설명 예제
String (String s) 주어진 문자열(s)을 갖는 String인스턴스를 생성한다. String s = new String(“Hello”);
s="Hello"
String (char [] value) 주어진 문자열(value)을 갖는 String인스턴스를 생성한다. char[] c ={‘H’, ‘e’, ‘1’, ‘1’ ‘e’}
String s = new String(c)
s="Hello"
String (StringBuffer buf) StringBuffer인스턴스가 갖고 있는 문자열과 같은 내용의 String 인스턴스를 생성한다. StringBuffer sb = new StringBuffer(“Hello”);
String s = new String(sb);
s="Hello"
char charAt (int index) 지정된 위치(index)에 있는 문자를 알려준다. (index 는 0부터 시작) String s = “Hello”
char c=s.charAt(1);
c='e'
String concat (String str) 문자열(str)을 뒤에 덧붙인다. String s = “Hello”
String s2 = s.concat(“ wrold”
s2="Hello World"
boolean contains (CharSequence s) 지정된 문자열(s)이 포함되어있는지 검사한다. String s =”abcedfg”
boolean b=s.contains(“bc”);
b=true
boolean endsWith (String suffix) 지정된 문자열(suffix)로 끝나는지 검사한다. String file =”Hello.txt”
boolean b=file.endsWith(“txt”);
b=true
boolean equals(Object obj) 매개변수로 받은 문자열(obj)과 String인스턴스의 문자열을 비교한다. obj가 String이 아니거나 문자열이 다르면 false를 반환한다. String s = “Hello”
boolean b=s.equals(“Hello”);
b=true
boolean equalsIgnoreCase (String str) 문자열과 String인스턴스의 문자열을 대소문자 구분없이 비교한다. String s = “Hello”
boolean b=s.equalsIgnoreCase(“HELLO”);
b=true
int indexOf(int ch) 주어진 문자(ch)가 문자열에 존재하는지 확인하여 위치(index)를 알려준다. 못 찾으면 -1을 반환한다. String s = “Hello”
int idx1 = s.indexOf(‘o’)
idx1=4
int indexOf(String str) 주어진 문자(ch)가 문자열에 존재하는지 확인하여 위치(index)를 알려준다. 못 찾으면 -1을 반환한다. String s =”ABCDEFG”;
int idx=s.indexOf(“CD”);
idx=2
String intern() 문자열을 constatnt pool에 등록한다. 이미 contant pool에 같은 내용의 문자열이 있을 경우 그 문자열의 주소값을 반환한다. String s = new String(“abc”);
String s2 = new String(“abc”);
boolean b = s.equals(s2);
b=true
int lastIndexOf(int ch) 지정된 문자 또는 문자코드를 문자열의 오른쪽 끝에서부터 찾아서 위치(index)를 알려준다. 못찾으면 -1을 반환한다. String s =”java.lang.java”;
int idx=s.lastIndexOf(“.”);
idx=9
int lastIndexOf(String str) 지정된 문자 또는 문자코드를 문자열의 오른쪽 끝에서부터 찾아서 위치(index)를 알려준다. 못찾으면 -1을 반환한다. String s =”java.lang.java”;
int idx=s.lastIndexOf(“java”);
idx=10
int length() 문자열의 길이를 알려준다. String s = “Hello”;
int length=s.length();
length=5
String replace (char old, char nw) 문자열 중의 문자열(old)를 새로운 문자(new)로 바꾼 문자열을 반환한다. String s = “Hello”;
String s = s.replace(‘H’,’C’);
s="Cello"
String replace(CharSequence old, CharSequence nw) 문자열 중의 문자열(old)를 새로운 문자(new)로 모두 바꾼 문자열을 반환한다. String s = “Hellollo”;
String s = s.replace(“ll”,”LL);
s="HeLLoLLo"
String replaceAll(String regex, String replacement) 문자열 중에서 지정된 문자열(regex)과 일치하는 것을 새로운 문자열(replacement)로 모두 변경한다. String ab=”AABBAABB”;
String r = s.replaceAll(“BB”,”bb”);
r="AAbbAAbb"
String replaceFirst(String regex, String replacement) 문자열 중에서 지정된 문자열(regex)과 일치하는 것 중, 첫 번째 것만 새로운 문자열로 변경한다. String ab=”AABBAABB”;
String r = s.replaceFirst(“BB”,”bb”);
r="AAbbAABB"
String [] split(String regex) 문자열을 지정된 분리자로 나누어 문자열 배열에 담아 반환한다. String animals =”dog,cat,bear”;
String[]arr = animals.split(“,”);
arr = ["dog", "cat", "bear"]
String [] split(String regex, int limit) 문자열을 지정된 분리자로 나누어 문자열배열에 담아 반환한다. 단, 문자열 전체를 지정된 수로 자른다. String animals =”dog,cat,bear”;
String[]arr = animals.split(“,”,2);
arr[0] = "dog"
arr[1]= "cat, bear"
boolean startsWith(String prefix) 주어진 문자열로 시작하는지 검사한다. string s=”java.lang.Object”;
boolean b=s.startsWith(“java”);
b=true
String substring(int begin)
String substring(int begin, int end)
주어진 시작위치부터 끝 위치 범위에 포함된 문자열을 얻는다. 이 때, 시작위치의 문자는 범위에 포함되지만, 끝 위치의 문자는 포함되지 않는다. string s=”java.lang.Object”;
String c=s.substring(10);
c="Object"
String toLowerCase() String 인스턴스에 저장되어있는 모든 문자열을 소문자로 변환하여 반환한다. String s = “Hello”;
String s1 = s.toLowerCase();
s1="hello"
String toString() String 인스턴스에 저장되어 있는 문자열을 반환한다. String s = “Hello”;
String s1 = s.toSting();
s1 = "Hello"
String toUpperCase() String 인스턴스에 저장되어있는 모든 문자열을 대문자로 변환하여 반환한다. String s = “Hello”;
String s1 = s.toUpperCase();
s1="HELLO"
String trim() 문자열의 왼쪽 끝과 오른쪽 끝에 잇는 공백을 없앤 결과를 반환한다. 이 때 문자열 중간에 있는 공백은 제거 되지 않는다. String s = “ Hello World “;
String s1 = s.trim();
s1 = "Hello World"
static String valueOf() 지정된 값을 문자열로 변환하여 반환한다.
참조변수의 경우, toString()을 호출한 결과를 반환한다.
String s = String.valueOf(100);
s = "100"

문자열과 기본행간의 변환

image-20240207145139626

StringBuffer클래스

StringBuffer클래스의 특징

image-20240207160559976

StringBuffer클레스의 생성자와 메서드

image-20240207162629815

image-20240207162732542

image-20240207165650395

Math클래스

image-20240207172316259

wrapper클래스

image-20240207172517816

Number클래스

숫자를 멤버변수로 갖는 클래스의 조상(추상클래스)

미션 🔥

행운의 로또번호 생성기

  1. 서로 격치지 않는(중복되지 않는 ) 숫자 6개 생성

  2. 각 숫자는 1~45 범위내의 숫자

  3. 매번 실행시 다른 숫자 출력

    ➡️랜덤수 : java.util.Random클래스 - nextInt(int bound)사용

  4. 다섯회 출력

  5. 각 번호는 오름차순 정렬

    ➡️java.util.Arrays클래스의 sort()메소드 사용.

출력
★★ 금주 행운의 로또번호 ★
2회: 1, 2, 9, 33, 42, 45
3회: 9, 12, 14, 19, 34, 40
4회: 5, 10, 15, 18, 19, 22
5회: 7, 9, 15, 19, 39, 41

package Mission;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
class L{
	public Collection<? extends String> lottoGen() {
		int[] randomNum = new int[6];
		for (int i = 0; i < 6; i++) {
			int newNum;
			do {
				newNum = (int) (Math.random() * 45) + 1;
			} while (contains(randomNum, newNum));
			randomNum[i] = newNum;
		}
		System.out.println(Arrays.toString(randomNum));
		return null;
	}

	private static boolean contains(int[] randomNum, int newNum) {
		for (int su : randomNum) {
			if (su == newNum) {
				return true;
			}
		}
		return false;
	}
}
public class LottoTest {

	public static void main(String[] args) {
		ArrayList<String> list = new ArrayList<>();

		 L lot = new L();
		 list.addAll(lot.lottoGen());
		 
		
	}
}

컬렉션 프레임워크Collection Framework

  • java.util 패키지

    • 다수의 데이터를 쉽게 처리하는 방법 제공

      ➡ DB 처럼 CRUD 기능 중요

  • collection framework 핵심 interface

    image-20240617093835132

    interface 특징
    List 입력 순서가 있는 데이터의 집합. 순서가 있으니까 데이터의 중복을 허락
    ex) 일렬로 줄서기 ➡ ArrayList, LikedList
    Set 입력 순서를 유지하지 않는 데이터의 집합. 순서가 없어서 같은 데이터를 구별할 수 없음, 중복❌
    ex) 알파벳이 한 종류 씩 있는 주머니 ➡ HashSet, TreeSet
    Map Key와 value의 쌍으로 데이터를 관리하는 집합. 순서는 없고 Key의 중복 불가, value는 중복가능
    속성 - 값, 지역번호 - 지역 ➡ HashMap, TreeMap

카테고리:

업데이트:

댓글남기기