본문 바로가기
Framwork/Java기초

Chapter 11. 패키지와 클래스들

by 김엉배 2023. 8. 15.
728x90
반응형

목차

1. java.lang.Object 클래스
2. java.lang.String 클래스
3. java.lang.StringBuffer
4. java.lang.StringBuilder 클래스
5. java.lang.Math 클래스
6. wrapper 클래스
7. java.util.Random 클래스

 

1.  java.lang.Object 클래스


  • 자바의 주요 패키지
패키지명 설명
java.lang 일반적으로 많이 사용하는 클래스들이 여기에 포함
Object, Math, String, StringBuffer, StringBuilder, System, Thread, wrapper
클래스들(Boolean, Byte, Charater, Double,Float, Integer, Long, Short)
java.util 유틸리티 클래스들이 여기에 포함.
특히, Collections Framwork라고 하는 자바의 자료구조 클래스들이 포함되어 있다.
java.io 자바 입출력 관력 클래스들이 포함되어 있는 패키지
클래스명 설명
Object 자바의 최상위 클래스
String, StringBuffer, StringBuilder 문자열 클래스
Math 수학 클래스
Boolean, Byte, Character, Double,
Float, Integer, Long, Short
wrapper 클래스(자바의 기본 자료행에 대응되는 클래스)
class 클래스 자체 정보를 갖는 클래스
Thread 동시에 여러일을 처리하도록 하는 기능

 

  • Object 클래스의 메소드
메소드 설명
protected Object clone() 객체를 복사하여 반환함.
public boolean equals(Object obj) obj 객체와 같은지 비교함.
public final Class<?> getClass() 클래스 정보를 반환함.
public int hashCode() 객체의 해시값을 반환함.
public final void notify()
public final void notifyAll()
스레드와 연관되는 메소드.
public String toString() 객체의 스트링 표현을 반환함.
public final void wait()
public final void wait(long timeout)
public final void wait(long timeout, int nanos)
스레드와 연관되는 메소드.

 

  • equals() 메소드
    - Object 클래스에 equals 메소드는 '==' 기호와 같다. 즉, 인스턴스 참조값을 의미.
    - equals 메소드가 인스턴스 자체가 같은지 비교하도록 하려면 오버라이딩해서 사용해야 한다.
//비교 부분만 작성
public class code177 {
  public static void main(String[] args) {
    Things th1 = new Thing("desk" ,5);
    Things th2 = new Thing("desk" ,5);

    if(th1.equals(th2)) System.out.println("Same Thing");
    else System.out.println("Different Thing");
  }
}
----------------------------------------------------
결과
Same Thing

 

  • toString() 메소드
    - 인스턴스의 참조값을 반환한다.
    - 인스턴스를 문자열로 바꾸어줄 수 있다.
package code178;

class Thing {
  private String name;
  private int price;
  Thing(String name, int price) {
    this.name = name;
    this.price = price;
  }
  void show() {
    System.out.println("name: " + name + ",price: " + price);
  }
}

public class code178 {
  public static void main(String[] args) {
    Thing t = new Thing("book", 20000);
    String s = t.toString();
    System.out.println(s);
    System.out.println(t);
    t.show();
  }
}
---------------------------------------------------------------------
결과
code178.Thing@16f65612
code178.Thing@16f65612
name : book, price : 20000

 

 

2.  java.lang.String


  • String 인스턴스 생성
    - 다른 인스턴스 생성과 마찬가지로 new 키워드 이용
    - 간단하게 큰따옴표만 생성
String s1 = new String("Hello world");
String s2 = new String("Hello world");

if(s1 == s2) System.out.println("s1 == s2");
else System.out.println("s1 != s2");

String s3 = "Java Programming";
String s4 = "Java Programming";

if(s3 == s4) System.out.println("s3 == S4");
else System.out.println("s3 != s4");
-------------------------------------------
결과
s1 != s2
s3 == s4

 

  • String 클래스에 적용할 수 있는 메소드
메소드 설명
char charAt(int index) 명시된 인덱스에 해당하는 문자를 반환
int compareTo(String anotherString) 두 문자열을 사전식으로 비교
String concat(String str) 문자열 뒤에 str을 연결
boolean contains(CharSequence s) 문자열에 s가 포함되어 있다면 true를 반환, 아니면 false 반환
boolean equals(Object anObject) 문자열과 anObject가 가타은 문자열인지 판단하여 true 또는 false 
int indexOf(int ch) 문자 ch가 있다면 그 위치 인덱스를 반환.
ch가 여러개 있다면 가장 앞에 있는 인덱스를 반환
int lastindexOf(int ch) 문자 ch가 있는 가장 마지막 인덱스를 반환
int length() 문자열 길이를 반환
String replace(char oldCh, char newCh) 문자 oldCh를 newCh로 변환하고 새로 변환된 문자열을 반환
String toString() Object 클래스의 toString() 메소드를 오버라이딩한 것으로 문자열 자체를 반환

 

 

3.  java.lang.StringBuffer


  • StringBuffer 인스턴스 생성
생성자 설명
StringBuffer() 크기 16인 빈 문자열이 생성됨.
StringBuffer(int capacity) capacity 값을 주면 그 크기로 빈 문자열이 생성됨.
StringBuffer(String str) 문자열 str로 초기화하는 인스턴스가 생성
StringBuffer sb1 = new StringBuffer("Hello");

StringBuffer sb2 = new StringBuffer();
sb2.append("World"); //빈 StringBuffer 객체에 "World" 문자열을 붙인다.

StringBuffer sb3 = new StringBuffer(20);
sb3.append("Java Programming is created by James Gosling");

System.out.println(sb1);
System.out.println(sb2);
System.out.println(sb3);

System.out.println(sb1.capacity());
System.out.println(sb2.capacity());
System.out.println(sb3.capacity());
--------------------------------------------------------------
결과
Hello
World
Java Programming is created by James Gosling
21
16
44
  • StringBuffer 메소드를
메소드 설명
StringBuffer append(boolean b) 인수로 넣는 자료형 데이터를 StringBuffer 하고 결과StringBuffer를  반환함. 
StringBuffer append(char c)
StringBuffer append(double d)
StringBuffer append(float f)
StringBuffer append(int i)
StringBuffer append(long Ing)
StringBuffer append(String str) 문자열 s를 추가한 StringBuffer를 반환함.
StringBuffer append(StringBuffer sb) StringBuffer sb를 추가한 StringBuffer를 반환함.
int capacity() 현재 StringBuffer의 저장 크기를 반환함.
char charAt(int index) index에 위치한 문자 한 개를 반환함.
int compareTo(StringBuffer another) StringBuffer another와 사전순으로 비교한 결과 반환함.
StringBuffer delete(int start, int end) start 인덱스에서 end 인덱스 사이의 문자들을 삭제함.
StringBuffer deleteCharAt(int index) index 위치에 있는 문자 한개를 삭제한 후에 StringBuffer를 반환
int indexOf(String str) str이 최초로 나오는 위치 인덱스를 반환함.
StringBuffer insert(int offset, char c) offset 위치에 문자 c를 삽입하고 StringBuffer 인스턴스를 반환함.
StringBuffer insert(int offset, String str) offset 위치에 문자열 str을 삽입하고 StringBuffer 인스턴스를 반환함.
StringBuffer replace(int start, int end, String str) 인덱스 start에서 end 부분을 str로 대체한 StringBuffer 인스턴스 반환함.
StringBuffer reverse() index 위치에 문자를 ch로 바꿈.
String substring(int start) start 인덱스에서 시작하는 부문 문자열을 반환함.
void trimToSize() 문자들이 이용하는 크기로 용량을 잘자냄.

- String 인스턴스는 변경 불가능해 수정 시 새로운 인스턴스를 구성해야 하지만, StringBuffer는 변경이 가능해 계속 변경이 가능.

 

 

 

4.  java.lang.StringBuilder


- StringBuilder 클래스는 multable 한 문자열 클래스는 점에서 StringBuffer클래스와 많이 유사하다.

- 둘의 차이는 StringBuffer 인스턴스는 스레드에서 이용 가능하고 StringBuilder는 스레드에서 이용할 수 없다.

  • ex)
StringBuilder sbd1 = new StringBuilder("Hello World");
StringBuilder sbd2 = new StringBuilder();

StringBuilder sbd3 = new StringBuilder(20);
sbd3.append("Java Programming is created by James Gosling");

System.out.println(sbd1);
System.out.println(sbd2);
System.out.println(sbd3);

System.out.println(sbd1.length() + ", " + sbd1.capacity());
System.out.println(sbd2.length() + ", " + sbd2.capacity());
System.out.println(sbd3.length() + ", " + sbd3.capacity());
--------------------------------------------------------
결과
Hello
World
Java Programming is created by James Gosling
5, 21
5, 16
44, 44

 

 

5.  java.lang.Math 클래스


- 수학 관련 클래스로 아주 사용 빈도가 높은 클래스이며, 생성자가 없고 두 개의 상수와 메소드들로 이루어져 있다.

  • 필드
필드 설명
static double E 자연 로그 e값
static double PI 원주율 PI 값

 

  • 메소드
메소드 설명
static double.abs(double a) a의 절대값을 계산
static double ceil(double a) a 이상의 수 중에서 가장 작은 정수를 반환함.
static double floor(double a) a 이하의 수 중에서 가장 큰 정수를 반환함.
static double max(double a, double b) a와 b 중에서 큰 값을 반환함.
static double min(double a, double b) a와 b중에서 작은 값을 반환함.
static double pow(double a, double b) a^b을 반환함.
static long roung(double a) a를 반올림한 값을 반환함.
static double sqrt(double a) a의 루트 값을 반환함.

 

 

6.  wrapper 클래스


- 자바의 기본 자료형(boolean, char, byte, short, int, long, float, double)을 인스턴스로 변환하여 사용할 경우 사용

 

  • Number 클래스: 6개의 숫자 관련 클래스의 상위 클래스
메소드 설명
byte byteValue() byte 값으로 반환함.
abstract double doubleValue() double 값을 반환함.
abstract float floatValue() float 값을 반환함.
abstract int intValue() int 값을 반환함.
abstract long longValue() long 값을 반환함.
short shortValue() short 값을 반환함.

 

  • Byte / Short / Interger / Long 클래스 :  정수형 데이터를 인스턴스화할 수 있도록 한다.
필드(Integer 클래스) 설명
static int MAX_VALUE 가장 큰 정수 값을 갖고 있음.
static int MIN_VALUE 가장 작은 정수 값을 갖고 있음.
메소드 설명
Byte byte byteValue() Byte 인스턴스를 byte로 변환해 반환.
static byte parseByte(String s) 문자열 s를 byte로 변환해 반환.
static Byte valueOf(byte b) byte 값을 Byte 인스턴스로 변환해 반환.
static Byte valueOf(String s) 문자열 s를 Byte 인스턴스로 변환해 반환.
Short short shortValue() Short 인스턴스를 short로 변환해 반환.
static short parseShort(String s) 문자열 s를 short로 변환해 반환.
static Short valueOf(short s) short 값을 Short 인스턴스로 변환해 반환.
static Short valueOf(String s) 문자열 s를 Short 인스턴스로 변환해 반환.
Long long longValue() Long 인스턴슬를 long으로 변환해 반환.
static long parseLong(String s) 문자열 s를 long으로 변환하여 반환.
static Long valueOf(long I) long 값을 Long 인스턴스로 변환해 반환.
static Long valueOf(String s) 문자열 s를 Long 인스턴스로 변환해 반환.

 

  • auto-boxing(오토박싱) / auto-unboxing(오토언박싱)
    - boxing은 기본 데이터를 인스턴스로 변환하는 것을 의미.
    - unboxing은 반대로 인스턴스로  된 데이터를 기본 데이터형으로 변환하는 것을 의미.
Integer x = new Integer(100); //boxing(객체 <- 기본 자료형의 데이터)
int y = x.intValue();         //unboxing(기본 자료형의 데이터 <- 객체)

----------------------------
Integer x = 100; //auto-boxing(100이 자동으로 인스턴스 x로 변환)

----------------------------
Integer x = new Integer(100);
int y = x; //auto-unboxing(인스턴스 x가 자동으로 기본 자료형 100으로 변환)

 

 

7.  java.util.Random 클래스


- java.util 패키지에 있는 Random 클래스는 임의의 수를 생성할 때 유용하다.

  • 생성자
생성자 설명
Random() 임의의 값을 생성할 수 있는 인스턴스 생성함.
(random number generator라고 함)
Random(long seed) seed 값으로 임의의 값을 생성할 수 있는 인스턴스를 생성함.

 

  • 메소드
메소드 설명
int nexInt() 다음의 임의의 정수를 생성함.
int nextInt(int bound) bound 내의 다음의 임의의 정수를 생성함.
import java.util.Scanner;

public class code192 {
  public static void main(String[] args) {
    int computerChoice, guess = 0;
    int count = 0;

    //컴퓨터가 1~100 사이 정수를 하나 선택하도록 함.
    computerChoice = (int) (Math.random() * 100);
    System.out.println("1부터 100사이의 하나의 정수를 선택했습니다.");
    System.out.println("******* 선택한 수를 맞춰 보세요. *************");
    System.out.println("----------------------------------------");
    while(computerChoice != guess) {
      System.out.println("1과 100사이의 값을 입력하시오.");
      count += 1;
      Scanner scin = new Scanner(System.in);
      guess = scin.nextInt();
      if(guess > computerChoice)
        System.out.println("더 작은 수를 입력하세요.");
      if(guess < computerChoice)
        System.out.println("더 큰 수를 입력하세요.");
    }

    System.out.println("컴퓨터가 선택한 수를 맞췄습니다.");
    System.out.println("시도 횟수는 " + count + " 번 입니다.");
  }
}
728x90
반응형

'Framwork > Java기초' 카테고리의 다른 글

Chapter 13. 자바 입출력  (57) 2023.10.19
Chapter 12. 예외 처리  (20) 2023.08.15
Chapter 10. 추상 클래스와 인터페이스  (16) 2023.08.12
Chapter 9. 패키지와 접근 제어  (7) 2023.08.06
Chapter 8. 상속  (5) 2023.08.06