본문 바로가기

java

java.lang 패키지

java.lang 패키지는 자바 프로그램의 기본적인 클래스를 담고 있는 패키지입니다. 그래서 java.lang 패키지의 클래스와 인터페이스는 import 없이 사용할 수 있습니다. java.lang 패키지의 주요 클래스와 간략한 용도를 먼저 살펴보겠습니다.

 

  • Object = 자바 클래스의 최상위 클래스로 사용.
  • System = 표준 입력장치로부터 데이터를 입력받을 때 사용, 표문 출력장치로 출력하기 위해 사용, 자바 가상 기계를 종료할 때 사용, 가비지콜렉터 실행을 요철할 때 사용.
  • Class - 클래스를 메모리로 로딩할 때 사용.
  • String - 문자열을 저장하고 여러 가지 정보를 얻을 때 사용.
  • Wrapper(Byte, Short, Character, Integer, Float, Double, Boolean, Long) - 기본 타입의 데이터를 갖는 객체를 만들 때 사용, 문자열을 기본 타입으로 변환할 때 사용, 입력값 검사에 사용.
  • Math - 수학 함수를 이용할 때 사용.
  •  

1. 자바 API 도큐먼트 

 API는 라이브러리라고 부르기도 하는데, 프로그램 개발에 자주 사용되는 클래스 및 인터페이스의 모음을 말합니다. 방대한 자바 표준  API 중에서 우리가 원하는  API를 쉽게 찾아 이용할 수 있도록 도와주는  API 도큐먼트가 있습니다.  API 도큐먼트는 HTML 페이지로 작성되어 있고, 다음 URL을 방문하면 버전별로 볼 수 있습니다. 

http://docs.oracle.com/en/java/javase/index.html 

 

Java Platform, Standard Edition Documentation - Releases

Java Platform, Standard Edition documentation, current and previous releases

docs.oracle.com

2. Object 클래스

자바의 모든 클래스는 Object 클래스의 자식입니다. 때문에 모든 클래스에서 Object 클래스의 메소드를 사용할 수 있습니다. 

 

Object의 메소드 - hashCode()

해시코드란 객체를 식별하는 하나의 정수값을 말합니다. Object 클래스의 해시코드 메소드는 객체의 메모리 버지를 이용해서 해시코드를 만들어 리턴하기 때문에 객체마다 다른 값을 가지고 있습니다. 본 메소드는 해시코드를 반환합니다.

 

Object의 메소드 -  toString()  

toString()은 객체의 문자 정보를 리턴합니다. 객체의 문자 정보란 객체를 문자열로 표현한 값을 말합니다. 기본적으로  toString() 메소드는 '클래스이름@16진수해시코드'로 구성된 문자 정보를 리턴합니다.  toString()의 리턴값은 자바 애플리케이션에서는 별 값어치가 없는 정보이므로 Object의 하위 클래스는 toString() 메소드를 재정의하여 간결하고 유익한 정보를 리턴하도록 되어 있습니다. java.util 패키지의 Date 클래스는 toString() 메소드를 재정의하여 현재 시스템의 날짜와 시간정보를 리턴합니다.또한 String 클래스는 toString() 메소드를 재정의하여 저장하고 있는 문자열을 리턴합니다. 

 

package sec06.exam06;

 

 

import java.util.*;

public class Hello {

public static void main(String[] args) {

 

String s = "fkmkjfvfv";

Object obj = new Object();

Date obj2 = new Date();

 

System.out.println(obj.toString());

System.out.println(obj2.toString());

}

}

 

결과:

java.lang.Object@3b6eb2ec

Thu Jan 28 01:04:42 KST 2021

 

3. System 클래스

자바 프로그램은 운영체제에서 바로 실행되는 것이 아니라 JVM 위에서 실행됩니다. 따라서 운영체제의 모든 기능을 직접 이용하기는 어렵습니다. 하지만 java.lang 패키지에 속하는 System 클래스를 이용하면 운영체제의 일부 기능을 사용할 수 있습니다.

 

System.exit(0) - 프로그램 종료 

System.currentTimeMills() - 현재시간 밀리세컨드 단위로 리턴

System.nanoTime() - 현재시간 나노세컨드 단위로 리턴

 

4. Class 클래스

자바는 클래스와 인터페이스의 메타 데이터를 java.lang 패키지에 소속된 Class 클래스로 관리합니다. 여기서 메타 데이터란 클래스의 이름, 생성자 정보, 필드 정보, 메소드 정보를 말합니다. 

객체 얻는 방법

4-1. 클래스로부터 얻는 방법

  • Class clazz = String.class;
  • Class clazz = Class.forName("java.lang.String);

4-2. 객체로부터 얻는 방법

  • String str = "감자바";
  • Class clazz = str.getClass();

 

package sec06.exam06;

 

public class Hello {

public static void main(String[] args) {

Class cl = Anonymous.class;

 

System.out.println(cl.getName());

System.out.println(cl.getSimpleName());

System.out.println(cl.getPackage().getName());

}

}

 

결과:

sec06.exam06.Anonymous

Anonymous

sec06.exam06

 

5. String 클래스

 

package sec06.exam06;

 

import java.io.IOException;

 

public class Hello {

public static void main(String[] args) throws IOException {

 

byte[] bytes = new byte[100];

 

int readByteNo = System.in.read(bytes);

String str = new String(bytes, 0, readByteNo);

System.out.print(str);

System.exit(0);

}

}

 

int readByteNo = System.in.read(bytes); - 매개변수로 넣은 배열에 입력된 문자의 바이트 저장하고 읽은 바이트의 수를 리턴

String str = new String(bytes, 0, readByteNo); - 배열을 문자열로 변환

 

 

package sec06.exam06;

 

import java.io.IOException;

import java.util.Scanner;

 

public class Hello {

public static void main(String[] args) throws IOException {

Scanner scan = new Scanner(System.in);

String str = scan.nextLine();

 

System.out.println(str.trim());

System.out.println(str.indexOf("a"));

 

}

}

 

str.indexOf("a") - 문자열 내에서 주어진 문자열의 위치를 리턴, 해당 문자열이 없을 시 -1을 리턴

 

 

 

결과:

15

안녕하세요

10

안녕하세요

15

안녕하세요

 

 

str.replace(문자열1, 문자열2)  - str에서 문자열1을 찾아 문자열2로 교체해주는 함수. String 객체의 문자열은 변경이 불가능한 특성을 갖기 때문에 str.replace(문자열1, 문자열2) 이 리턴하는 문자열은 원래 문자열의 수정본이 아니라 완전히 새로운 문자열

 

package sec06.exam06;

 

public class Hello {

public static void main(String[] args) throws IOException {

 

String str = "자바 프로그래밍";

String nst = str.replace("자바", "JAVA");

System.out.println(nst);

}

}

결과:

JAVA 프로그래밍

 

str.substring() 메소드는 두 가지 방법으로 사용됨. str.substring(int beginIndex, int endIndex)는 주어진 시작과 끝 인덱스 사이의 문자열을 추출하고, str.substring(int beginIndex)는 주어진 인덱스부터 끝까지 문자열을 추출

 

package sec06.exam06;

 

public class Hello {

public static void main(String[] args) throws IOException {

 

String ssn = "980519-1028398";

String firstNo = ssn.substring(0, 6);

System.out.println(firstNo);

}

}

결과:

980519

 

valueOf()메소드는 기본 타입의 값을 문자열로 변환하는 기능을 합니다. 

 

String str1 = String.valueOf(10);

String str2 = String.valueOf(10.5);

String str3 = String.valueOf(true);

 

6. Wrapper 포장 클래스

박싱과 언박싱 - 기본 타입의 값을 포장 객체(포장 객체는 외부에서 변경 불가)로 만드는 과정을 박싱이라 하고, 반대로 포장 객체에서 기본 타입의 값을 얻어내는 과정은 언박싱이라 한다. 

 

박싱: Short obj = new Short(100); 

자동 박싱: Integer obj = 100;

 

언박싱: short num = obj.shortValue()

자동 언박싱: int value1 = obj;