[JAVA] Object, String, Math, Wrapper 클래스

2023. 2. 3. 11:23카테고리 없음

1. Object 클래스

  • Object 클래스는 모든 클래스의 최고 조상이기 때문에 Object 클래스 멤버들은 모든 클래스에서 바로 사용이 가능하다.
  • Object 클래스는 멤버변수를 가지고 있지 않고, 단 11개의 메소드만 가지고 있다.
  • toString()
    • 객체에 대한 정보를 문자열로 제공할 목적으로 정의된 메소드
    • 객체의 정보를 제공한다는 것은 대부분의 경우 인스턴스 변수에 값들을 문자열로 표현한다는 뜻이다.
  • equals()
    • 매개변수로 객체를 받아서 비교하여 그 결과를 boolean값으로 리턴하는 메소드
    • Object 클래스의 equals()는 객체가 가지고 있는 주소 값을 비교한다. 그래서 동위 객체는 무조건 false가 나온다.( 다른 주소 이기 때문에 ) * 동위 객체 : 갖고 있는 값만 같은 객체
      주소 값이 아니라 인스턴스 내부의 값을 비교하고 싶으면( 동위 객체를 동일 객체로 보고 싶으면 ) equals() 메소드를 재정의 해야한다.

      Object 클래스의 equals( == 와 다름이 없음 )
      String은 equals를 재정의 해줬기 때문에 값만 비교 가능
  • hashCode()
    • 해싱기법에 사용되는 해쉬함수를 구현한 메소드
    • 객체의 비교를 할 때 동일객체로 보려면 equals() 메소드 뿐만 아니라 hashCode() 메소드도 적절하게 오버라이딩을 해주어야 한다.
    • 같은 객체라면 hashCode()를 호출했을 때의 결과값도 같아야 하기 때문이다.

  • 우리가 만든 클래스에서 주소값이 아닌 내부의 값들로 잘 비교할 수 있도록 재정의 할 수 있어야 한다.

    재정의

2. String 클래스

  • 기존의 다른 언어에서는 문자열을 char 형의 배열로 다루었으나 자바에서는 문자열을 위한 클래스를 제공한다.
  • 문자열을 위한 클래스를 제공한다. String 클래스는 문자열을 저장하고 이를 다루는데 필요한 메소드를 함께 제공한다.
  • "문자열1".split( "문자열2" )
    • "문자열1"을 "문자열2" 기준으로 나눠서 문자열 배열에 넣는다.

  • String.join( "문자열", 문자열배열 )
    • 배열에 있는 문자열들을 "문자열"로 연결해서 하나의 문자열로 만든다.
    • . , / 등은 문자열이 아닌 식의 한 종류( 정규식 )으로 인식하기 때문에 [ ] 안에 넣어서 문자열이라는 것을 나타내줘야 한다.

  • "문자열1".indexOf( "문자열2" )
    • "문자열1"에서 "문자열2"를 찾아서 인덱스를 반환해준다.( int )
    • "문자열2"가 중복으로 있으면 먼저 앞에 나오는 것을 반환해준다.
    • 없는 경우에는 -1를 반환해준다.
    • "문자열2"는 문자열이기 때문에 여러 글자도 넘길수 있다. 이때는 문자열이 시작되는 인덱스가 반환된다.

  • "문자열".charAt( n )
    • "문자열"의 n번째 글자를 반환해준다.( char )

  • "문자열".toUpperCase, "문자열".toLowerCase
    • "문자열".toUpperCase : 소문자를 전부 대문자로 바꾸어서 반환해준다.( String )
    • "문자열".toLowerCase : 대분자를 전부 소문자로 바꾸어서 반환해준다.( String )
    • 실제의 값은 바뀌지 않는다.

  • "문자열".subString( n ), "문자열".subString( n, m )
    • "문자열".subString( n ) : n번째 글자부터 끝까지 잘라서 반환해준다.( String )
    • "문자열".subString( n, m ) : n번째 글자부터 ( m-1 )까지 잘라서 반환해준다.( String )

  • String.valueOf( 값 )
    • 해당 값을 문자열 타입으로 변환해준다.
    • 값이 객체이면 객체.toString으로 들어가게 된다.

  • Interger.parseInt( "정수로 된 문자열" )
    • "정수로 된 문자열" 통째로 정수형태로 변환해준다.( int )
    • Double.parseDouble( str ), Boolean.parseBoolean( str ) ...


3. Math 클래스

  • Math 클래스는 기본적인 수학계산에 유용한 메소드들로 구성되어 있다.
  • Math 클래스는 내부에 멤버변수들이 하나도 없기 때문에 굳이 객체로 만들어서 사용할 필요가 없다. 때문에 내부에 상수와 static 메소드들만 존재한다.
  • random()
    • 0.0 ~ 1.0 사이에 랜덤한 실수를 반환해 준다.( double )
    • Math.random() 말고도 Random 클래스를 사용하면 랜덤으로 실수를 반환할 수 있다.
    • Random 클래스에서 r.nextInt(r)을 하면 0~r 미만을 난수로 출력해준다.

  • round( 실수 )
    • 기본적으로 소수점 첫째자리에서 반올림 해준다. 만약 다른 소수점에서 반올림하고 싶으면 거기에 맞게 조절해주면 된다.

  • ceil( 실수 ), floor( 실수 )
    • ceil( 실수 ) : 소수점 첫째자리에서 올림, floor( 실수 ) : 소수점 첫째자리에서 내림
    • 만약 다른 소수점에서 반올림하고 싶으면 round 때 처럼 조절해주면 된다.

  • abs( 값 )
    • abs( 값 ) : 절대값

  • pow( n, m )
    • pow( n, m ) : n의 m제곱


4. Wrapper 클래스

  • 기본형 타입( 원시 타입 )을 객체로 변환하여 사용할 수 있도록 도와주는 클래스들이다.
  • 기본형 변수를 객체로 다루어야 할 때 사용한다. 
    int -> Integer
    double -> Double
    ...
  • 박싱 : 기본형 타입을 객체로 변환, 언박싱 : 객체를 기본형 타입으로 변환
  • Wrapper 클래스들은 모두 equals(), toString() 들이 오버라이딩이 되어있다.
  • 따라서 비교할 때는 그 객체가 가지고 있는 값으로 비교하게 되고, 출력할 때에도 그 객체가 가지고 있는 값을 출력하게 된다.
  • jdk 1.5 버전부터 오토 박싱 오토 언박싱을 지원한다.
    Integer 객체 = ( Integer ) 정수 값;  --> 오토 박싱
    객체 = 정수값  --> 오토 언박싱