11_자바 기본 API(object, String, wrapper)

안녕하세요 Mr_ChooC(coding)AI 입니다~

이번에는 Java에서 제공하는 기본 API클래스에 대해서 알아보도록 하겠습니다.

코드는 github에서 공유 하도록 하겠습니다.

Github: https://github.com/Chooyoungjun/javastudy/tree/main/12_Basic_api

기본 API 클래스

1.     Object 클래스

2.     문자열 클래스

A.     String buffer 클래스

B.     String Tokenizer 클래스

3.     Wrapper 클래스

A.     Autoboxing

B.     AutoUnboxing

기본 API 클래스

자바에서 개발자들을 위해 기본적으로 제공 하는 클레스들을 기본 API(Application Programming Interface)라고 합니다. 이러한 내용은 공식 웹사이트(https://docs.oracle.com/javase/7/docs/api/)에서 확인 가능 합니다. 공식 사이트에는 많은 API를 나열하였지만 저희는 많이 사용되고 꼭 필요한 API대해서 알아 보고 나머지는 공식 사이트에서 학습하시기를 부탁 드리겠습니다.

1.     Object 클래스

Object클래스는 모든 클래스의 조상 클래스입니다. 그래서 무조건 집고 넘어가야 하는 API 입니다. 알고 있다면 응용할 수 있는 곳이 많겠죠?

Object클래스는 멤버 변수는 없습니다. 하지만 11개의 메서드를 가지고 있습니다. 하기 Snapshot을 참조해 주시기를 부탁드리겠습니다.


위의 snapshot을 참고해서 반환타입이 void인지 아니면 가지고 있는 지를 확인해서 어떤 값이 반환이 되는지를 확인하시면 되겠습니다. wait관련 내용은 뒤에 포스트 Thread파트에서 좀더 자세 하게 다루도록 하겠습니다. 여기에 있는 메서드는 thread에서 사용하는 부분이 많아서 실습을 thread부분에서 진행해 보도록 하겠습니다.

2.     문자열 클래스

문자열 클래스도 자바에서 제공하는 클래스 입니다. 이 클래스는 특이하게 겍체화 하지 않아도 사용할 수 있습니다.

[일반 적인 방법]

String a = new String(“Java”)

[문자열 문법]

String a = “Java”

문자열 클래스에서는 어떤 메서드를 제공하는지 하기 표를 참조하셔서 아시면 되겠습니다.


엄청 많죠? 여기에서 자주 사용하는 concat, substring, length, toUpper & Lower, charAt, IndexOf, equals, trim, replace에 대해서 실습을 진행해 보도록 하겠습니다.

[실습]

위의 내용중에서 몇 개만 추려서 실습을 진행 하도록 하겠습니다. 기본 문자인 hellow를 활용하여 알아보도록 하겠습니다.


위의 Snapshot대로 순서대로 확인해 보시면 되겠습니다. 실습을 하시면서 이해를 하시면 되겠습니다. 주의 할 점은 indexOf로 문자를 찾을 경우 만약 문자가 존재하지 않는다면 -1을 반환한다는 점에 대해서 알아 두시기를 부탁드리겠습니다. 나머지는 실습을 통해서 이해 하시면 되겠습니다. 이렇게 많은 String의 메서드가 존재하기 때문에 필요할 때 사용하기 위해서는 실습을 잘 하시기를 부탁 드리겠습니다.

A.     String buffer 클래스

위에서 배운 String 클래스는 immutable한 스트링 클래스 입니다. 혹시 immutable mutable에 대해서 이해가 안되시면 앞의 파이썬 Post(https://choocai.blogspot.com/2021/12/02.html)를 참조해 주십시오!

(파이썬에서 자세하게 정리해서 파이썬 내용 링크 드립니다.)

수정이 자주 일어나는 문자열 저장이 필요 할 경우에는 String buffer를 사용해 주시기를 부탁 드리겠습니다.

일단 StringBuffer가 어떤 메서드를 가지고 있는지부터 확인해 보도록 하겠습니다.

[StringBuffer 메서드]


위와 같은 메서드를 제공을 합니다. 특징은 메모리 저장 위치가 변하지 않는 것을 꼭 확인 하셔야 합니다. 실습을 통해서 자세히 알아보도록 하겠습니다.

[실습 코드]


buffer클래스와 일반클래스를 정의해서 사용하였습니다. 보시면 buffer에서 append를 하면 값이 수정 되어 저장이 되지만 string클래스는 값이 저장 되지 않는 점을 확인 할 수 있습니다. Replace도 마찬가지로 buffer는 수정이 되지만 string은 수정이 되고 있지 않습니다. 이런 차이점에 대해서 잘 숙지하시고 적절하게 사용하시면 되겠습니다.

B.     String tokenizer 클래스

String클래스의 또 다른 활용법인 tokenizer에 대해서 알아보도록 하겠습니다. Tokenizer를 활용하기 위해서는 라이브러리를 import해야지 사용 할 수 있습니다.

위의 Snapshot과 같이 import를 해서 사용할 수 있습니다. Java util에서 제공하는 클래스로, 문자열을 구분 문자열을 기준으로 분리할 경우에 사용하는 클래스 입니다.

[문법]

문자열 생성

구분할 문자열 생성

StringTokenizer 객체 생성

Ex)

위와 같이 생성하면 자동으로 구분문자 기준으로 분리해 줍니다. 실습을 통해서 자세하게 알아보도록 하겠습니다.

[실습]


위의 실습대로 StringTokenizer클래스를 어떻게 사용하는지 알아 보았습니다. 잘 숙지하셔서 적절하게 잘 사용하기를 바라겠습니다.

3.     Wrapper 클래스

위에서 String은 자체가 클래스 이기 때문에 많은 메서드를 사용하는 것이 가능하지만 다른 자료형은 어떨까요? 다른 자료형(int, boolean,short … )은 기본이 클래스가 아닙니다. 그래서 객체화가 되지 않습니다. 하지만 객체 지향 언어인 자바에서는 이런 자료형도 객체로 만들 수 있도록 지원을 해 줍니다. 바로 wrapper라는 클래스를 활용하면 됩니다. 이렇게 지원하는 wrapper의 종류부터 문법 그리고 실습을 진행해 보도록 하겠습니다.

[기본 자료형 wrapper 클래스]


위의 snapshot과 같이 10개가 있습니다. 이거를 어떻게 사용하는지는 확인해 보도록 하겠습니다.

[문법]

Wrapper클래스 매개변수 = new Wrapper클래스();

Ex)

Integer I = new Integer(3);

Double d = new Double(1.23);

위와 같이 하시면 객체처럼 사용할 수 있습니다. 기본 자료형을 객체화 선언하는 것과 같습니다.

[실습]

간단하게 숫자를 객체로 변환해 보겠습니다.


위의 예시와 같이 자료형을 객체화 시켜줍니다. 그래서 toString이라는 메서드를 활용한 것을 확인 할 수 있습니다. 그리고 위에서 보여준 문법대로 객체화 한 것을 확인 할 수 있습니다. 그런데 JDK9.0이상 부터는 번거롭게 객체화 하지 않고 autoboxingautounboxing이라는 개념을 만들어서 편하게 wrapper클래스를 적용하고 해제 할 수 있도록 하였습니다.

A.     Autoboxing

Wrapper클래스를 좀 더 편하게 사용 할 수 있도록 정의한 방법

[문법]

자료형wrapperclass 매개변수 = ;

Ex)

Integer i = 10;

Boolean b = true;

문법에 대해서 알아 보았습니다. 이제 실습을 통해서 자세하게 알아 보도록 하겠습니다.

[실습]


Autoboxing을 통해서 매개변수를 정의하고 다양한 메서드를 사용 할 수 있는 것을 알 수 있습니다. 위와 같이 잘 정의해서 사용하시면 되겠습니다.

B.     AutoUnboxing

Auto-unboxingwrapper클래스로 객체화 한 자료형을 다시 자료형으로 자동으로 변환시키는 방법 입니다. 문법과 실습을 통해서 이해해 보도록 하겠습니다.

[문법]

Integer i = 10;

Boolean b = true;

int ii = i;

bool bb = b;

위와 같이 사용하면 자동으로 unboxing이 되고 객체가 자료형으로 변환 됩니다. 이제 실습을 통해서 좀더 이해해 보도록 하겠습니다.

[실습]


위에서 auto boxing한 매개변수를 자료형으로 변형 시키는 코드입니다. 위의 코드의 실습을 통해서 autoboxingunboxing에 대해서 이해 하셨을 것이라고 생각 합니다.

이렇게 하여 기본 API대해서 자세하게 알아보았습니다. 이제 이러한 내용을 바탕으로 자바의 객체 지향이 어디까지 영향을 주는지 이해 하셨을 것이라고 바라겠습니다. 이제 조금만 더하면 기초는 튼튼하게 다지는 것이니 지치지 마시고 파이팅 하세요!

 

Comments