본문 바로가기
교육, 학습/멀티캠퍼스_풀 스택

JAVA 문법 - 자바 API(java.lang의 StringBuffer, String, Object클래스)

by 개발하는 경제학도 2022. 1. 13.

강의 소개

현재 수강하고 있는 멀티캠퍼스 k-digital 지능형 웹서비스 풀 스택 과정을 수강하며 적은 내용입니다.
교재로는 자바의 정석을 사용하고 있습니다.


 

자바 기본 API

자바 API는 라이브러리라고 생각하면 된다.
자주 사용되는 패키지중에서 기초가 되는 java.lang의 클래스들과 그 메서드들은 아래와 같다.

java.lang

개발 시 기본적으로 필요한 기능들을 제공해준다.
가장 기초적으로 필요한 기능들을 제공하기에 컴파일러에서 자동 import 해준다. 따라서 유일하게 import를 생략하고도 사용할 수 있다.
java.lang 패키지에서 자주 사용되는 클래스와 메서드는 아래와 같다.

1. Object 클래스

모든 클래스가 자동으로 상속받고 있는 클래스로 최상위 클래스이다.
[클래스의 메서드]

hashCode() 인스턴스 본인의 고유번호, 즉 해시코드를 반환해준다. ex. 사람의 주민번호
getClass() 인스턴스 본인이 속한 클래스 정보를 반환한다.
toString() 인스턴스에 대한 정보를 반환해준다. 반환하는 형태는 '인스턴스의 타입@해시코드'이다.
ex. java.lang.Object@41e123

System.out.println(객체이름) 은 System.out.println(객체이름.toString());과 같다. 즉, 인스턴스를 출력하면 자동으로 toString 메서드도 붙는 것이다.

equals() 객체끼리 같은지 비교하여 boolean타입으로 결과를 반환한다. Object클래스의 equals()는 ;참조변수의 값(객체의 주소)이 같은지 비교한다.

 

2. String 클래스

원본 변경이 불가능하다. (아래의 스트링 버퍼와의 차이점)
문자열 처리에 관한 기능들을 담고 있다. Object클래스의 메서드를 오버 라이딩한 equals(), toString()에 유의해서 확인해보자.

equals() String클래스의 equals메서드는 Object의 equals를 오버라이딩(= 메서드 재정의)하여 문자열 간의 '값'만 같은지 비교한다.
대소문자 구분은 해준다. ex. "ABC".equals("abc"); // false
equalsIgnoreCase() equals메서드와 동일하게 문자열 값만 비교하지만, 이름처럼 대소문자 구분이 없다.
ex. "ABC".equals("abc"); // true
toString() Object클래스의 toString메서드를 오버라이딩했다. 문자열을 출력해준다.
length() 문자열의 길이를 반환해준다.
charAt(숫자) 문자열에서 숫자에 해당하는 인덱스 위치의 문자만 반환한다. ex. "Multi".charAt(0); // 'M'
spilt("문자") 문자열을 분할하며, 참조변수로는 String[] 즉, 문자열 배열을 받는다.
1) 매개변수를 주지 않는 경우엔 공백을 기준으로 자른다. ex. String[] arr = "문자열".split();
2) 매개변수로 문자를 주는 경우 그 문자 기준으로 자른다. ex. String[] arr = "문자열".split(",");
substring(시작 숫자, 끝 숫자) 문자열 중에서 일부 문자열만을 추출한다. 시작 인덱스~끝 인덱스(끝에 해당하는 인덱스는 미포함)까지 추출한다.
valueOf() 기본형 타입을 String타입(= 문자열)로 바꿔준다.

 

3. StringBuffer 클래스

String처럼 문자열을 다루지만, 원본 변경이 가능(mutable)하다는 차이점이 있다.
따라서 수정이 많이 되는 문자열에 주로 사용된다.

특징
1) String클래스와 다르게 + 연산자를 쓰지 못해 append를 사용해서 문자열 결합을 하는 것에 유의해야 한다.
2) String클래스와 다르게 equals는 인스턴스 '주소 값 비교'를 하는 Object 클래스의 메서드를 호출한다.
3) StringBuffer 인스턴스를 String클래스로 변경하려면 인스턴스. toString()을 사용한다.

(스트링 버퍼 자세히)
2022.01.13 - [교육, 학습/멀티캠퍼스_풀 스택] - JAVA 문법 - StringBuffer클래스 사용 이유(String과 비교)

4. Math 클래스

모두 static 메서드들이다. 즉, 인스턴스를 생성하지 않고 Math. 메서드()로 바로 사용한다.
abs(), ceil(), floor() , random(), round() 등이 있다.
그중에서 random 메서드는 0~0.1 사이의 실수를 반환해준다. (0.1은 미포함된다.)
아래와 같은 코드로 1부터 10까지의 정수중에서 랜덤 값인 난수를 반환할 수 있다.

int number = (int)(Math.radom() * 10) + 1; // 1~10 사이의 정수를 반환한다.

 

5. Wrapper 클래스

Wrapper라는 클래스 자체는 없지만, 자바의 기본형 타입들을 클래스로 포장한 것들을 묶어 부르는 표현이다.
기본형도 객체처럼 사용될 경우가 있기 때문이다.

클래스 이름 유형
Wrapper클래스의 이름은 아래처럼 두 가지 유형으로 나뉜다. 클래스이니 첫 문자는 대문자이다.
1) 기본형 타입 그대로 사용하는 경우: Boolean, Byte, Short, Long, Float, Double
2) 기본형과 이름이 다른 경우: Character (기본형으로는 char), Integer (기본형으로는 int)

Boxing, Unboxing, Autoboxing
1) 기본형을 클래스로 바꾸고 싶을 때 인스턴스를 생성한다. (Boxing)

Byte b = new Byte(10);

2) 클래스를 기본형으로 바꾸고 싶을 때 xxValue()를 사용한다. (Unboxing)
3) 기본형과 Wrapper클래스 간의 자동 변환도 된다. (Autoboxing)

문자열 타입을 기본형으로 변경
parsexxx메서드는 문자열 매개변수를 기본형으로 변경해주는 static메서드이다.

int number = Integer.parseInt("5000");

 

 

출처: 자바의 정석(남궁 성 저), 멀티캠퍼스

참고자료: 이것이 자바다(신용권 저)

댓글