minghxx.blog
  • 자바의 정석 109~113강 ch9 java.lang 패키지와 유용한 클래스(2)
    2023년 08월 13일 02시 37분 48초에 업로드 된 글입니다.
    작성자: 민발자
    728x90

    ch 9-15~18 StringBuffer클래스

    1. StringBuffer클래스

    문자형 배열 char[] 을 내부적으로 가지고 있음 

    String과 다르게 내용 변경 가능 mutable

    append() : 문자열을 추가할 수 있음

     

    2. StringBuffer의 생성자

    배열을 이용해 문자열을 다루기 때문에 배열의 길이가 부족하면 새로운 배열을 생성해야 함 → 저장할 문자열 길이를 고려해 생성

    크기 미설정시 기본 크기 16

     

    3. StringBuffer의 변경

    append() : 지정된 내용 추가 후 StringBuffer 참조 반환

    StringBuffer sb = new StringBuffer("abc");
    sb.append("123").append("zz");
    // append()메서드는 StringBuffer의 참조를 반환하기 때문에

     

    4. StringBuffer의 비교

    equals() 오버라이딩 되어있지 않음 → 주소를 비교함

    값 비교를 원하는 경우 String으로 변환 후 equals()로 비교


    ch 9-15~18 StringBuffer 클래스의 메서드

    메서드 설명
    StringBuffer() 16문자 담을 수 있는 StringBuffer 인스턴스 생성
    StringBuffer(int length) length만큼 담을 수 있는 StringBuffer 인스턴스 생성
    StringBuffer(String str) str을 갖는 StringBuffer 인스턴스 생성
    StringBuffer append(boolean b)
    StringBuffer append(char c)
    StringBuffer append(char[] str)
    StringBuffer append(double d)
    StringBuffer append(float f)
    StringBuffer append(int i)
    StringBuffer append(long l)
    StringBuffer append(object obj)
    StringBuffer append(string str)
    매개변수로 입력된 값을 문자열로 변환해 StringBuffer 문자열 뒤에 추가
    int capacity() 버퍼 크기를 알려줌(length는 문자열 길이)
    char charAt(int index) index위치의 문자 반환
    StringBuffer delete(int start, int end) start~end 사이 문자 제거, end index는 포함하지 않음
    StringBuffer deleteCharAt(int index) index위치의 문자 제거
    StringBuffer insert(int pos, boolean b)
    StringBuffer insert(int pos, char c)
    StringBuffer insert(int pos, char[] str)
    StringBuffer insert(int pos, double d)
    StringBuffer insert(int pos, float f)
    StringBuffer insert(int pos, int i)
    StringBuffer insert(int pos, long l)
    StringBuffer insert(int pos, object obj)
    StringBuffer insert(int pos, String str)
    지정 위치 pos에 두 번째 매개변수 문자열로 변환하여 추가
    int length() 문자열 길이 반환
    StringBuffer replace(int start, int end, String str) start~end의 문자열을 str로 변경, end index는 포함되지 않음
    StringBuffer reverse() 문자열 순서를 거꾸로 나열
    void setCharAt(int index, char ch) index위치의 문자를 ch로 변경
    void setLength(int newLength) newLength로 문자열 길이 변경  빈공간은 널문자 '\u0000'으로 채움
    String toString() StringBuffer 문자열을 String으로 변환하여 반환
    String subString(int start)
    String subString(int start, int end)
    지정된 범위의 문자를 String으로 뽑아서 반환, end index는 포함되지 않음
    start만 있으면 start~끝까지

    ch 9-21~24 StringBuilder, Math 클래스

    1. StringBuilder

    StringBuffer → 동기화, 멀티 쓰레드에 안전(thread-safe)

    StringBuilder  동기화 안됨

    멀티 쓰레드 아닌 경우 동기화는 불필요한 성능 저하  싱글 쓰레드인 경우 StringBuilder 사용시 성능 향상

    동기화 여부, 이름만 다르고 메서드 모두 동일

     

    +)

    싱글 쓰레드 : 한 번에 1개 작업

    멀티 쓰레드 : 한 번에 여러 개 작업, 데이터 공유

     

    2. Math클래스

    수학 관련 static 메서드 집합

    메서드 설명
    static double abs(double a)
    static float abs(float f)
    static int abs(int f)
    static long abs(long f)
    주어진 값의 절대값 반환
    양수  양수
    음수  양수
    static double ceil(double a) 주어진 값 올림하여 반환
    static double floor(double a) 주어진 값 버림하여 반환
    static double max(double a, double b)
    static float max(float a, float b)
    static int max(int a, int b)
    static long max(long a, long b)
    주어진 두 값 비교하여 큰 쪽 반환
    static double min(double a, double b)
    static float min(float a, float b)
    static int min(int a, int b)
    static long min(long a, long b)
    주어진 두 값 비교하여 작은 쪽 반환
    static double random() 0.0~1.0범위의 임의의 double값 반환
    static double rint(double a) 주어진 값과 가장 가까운 정수값 double형으로 반환
    정수 가운데 값 1.5, 2.5 등 짝수 반환
    Math.rint(3.5), Math.rint(4.5)  모두 4.0 반환
    오차를 줄일 수 있음
    static long round(double a)
    static long round(float a)
    소수점 첫째자리에서 반올림한 정수값long 반환
    정수 가운데 값 1.5, 2.5 등 큰 정수 반환
    Math.round(3.5) → 4
    Math.round(4.5) 5

    ch 9-25~17 래퍼클래스, Number 클래스

    1. 래퍼wrapper 클래스

    기본형 값을 감싸는 클래스, 8개 기본형을 객체로 다루기 위해 사용하는 클래스

    기본형 래퍼클래스
    boolean Boolean
    char Character
    byte Byte
    short Short
    int Integer
    long Long
    float Float
    double Double

     

    2. Number 클래스

    모든 숫자 래퍼 클래스의 조상

    래퍼객체를 기본형으로 변경해주는 메서드를 가지고 있음 intValue(), longValue(), ...


    ch 9-28~31 문자열과 숫자 변환, 오토박싱 & 언박싱

    1. 문자열을 숫자로 변환하기

    // 문자열 → 기본형
    byte b = Byte.parseByte("100");
    short s = Short.parseShort("100");
    int i = Integer.parseInt("100");
    long l = Long.parseLong("100");
    float f = Float.parseFloat("3.14");
    double d = Double.parseDouble("3.14");
    
    // 문자열 → 래퍼 클래스
    Byte b = Byte.valueOf("100");
    Short s = Short.valueOf("100");
    Integer i = Integer.valueOf("100");
    Long l = Long.valueOf("100");
    Float f = Float.valueOf("3.14");
    Double d = Double.valueOf("3.14");

     

    2. n진법의 문자열을 숫자로 변환하는 방법

    Integer.parseInt("100", 2); // 4
    Integer.parseInt("100", 8); // 64
    Integer.parseInt("100", 16); // 256
    Integer.parseInt("FF", 16); // 255

     

    3. 오토 박싱&언박싱

    오토박싱 : 기본형 → 래퍼클래스

    언박싱 : 래퍼클래스 → 기본형

    JDK1.5이전 기본형과 참조형간의 연산 불가능했지만 1.5 이후 컴파일러가 자동으로 박싱&언박싱해줘 연산 가능

    ArrayList<Integer> list = new ArrayList<Integer>();
    list.add(new Integer(100)); // list에는 객체만 추가 가능
    list.add(100); // JDK1.5이후 자동으로 박싱해서 기본형으로 넣을 수 있음
    
    Integer i1 = list.get(0); // list에 있는 객체 꺼냄
    int i2 = list.get(0).intValue(); // Integer를 기본형 int로 변환하여 꺼냄
    int i3 = list.get(0); // 언박싱 컴파일러가 해주기 때문에 변환없이 꺼낼수있음
    728x90
    댓글