JAVA - java.lang 패키지

TopOfTheHead·2025년 7월 26일

자바 ( JAVA )

목록 보기
4/23

java.lang
JavaCore Package로서 가장 기본적이고 자주 사용되는 ClassInterface를 포함하는 패키지

。 다른 Package와 달리 자동으로 Javaimport되므로 import java.lang.*를 명시적으로 기입할 필요가 없다.
Java에서 외부 PackageClass를 사용하기위해서는 import package.class를 해야한다.

  • 패키지 구성요소 종류
    。주로 언어 , 문자열 , 기본 자료형 , 스레드 , 예외 , 런타임 관련 클래스 & 인터페이스를 포함

    Object, String, StringBuilder, StringBuffer, Math, Integer, Double, Boolean , System, Thread, Runnable, Exception, Error 등의 Class를 포함

Object
Java Class의 최상위 부모 Class
Java의 모든 ClassObject 클래스에서 파생됨

。모든 클래스클래스명 extends Object이 함축됨.

。일반 Class에서 Object Class의 Method를 정의하는건 이는 해당 Method를 Override하여 상위 클래스에서 상속받은 Method를 재정의하는 것을 의미.

Java에서 Override 시 접근제한을 강화하는건 불가능하므로, 접근제한자를 항상 public으로 정의해야함.

  • 객체.toString()
    Object Class 내 정의된 Method로서 Class instance의 상태를 간결하게 표현하는 문자열을 생성하여 반환하는 method

    。일반 Class 내에 toString()을 재정의하지않고 객체.toString() 호출 시 패키지경로.클래스이름@해시값 형태로 문자열 반환
public class Object{
	public String toString(){
		return getClass().getName() + "@" + Integer.toHexString(hashCode());
	}
}

Java의 일반 Class에서 해당 toString() method를 재정의하는것은 Object ClasstoString()Override 하는것.
▶ 보통 @Override의 Annotation이 정의됨

  • 객체.clone()
    클래스 객체의 보겢를 위한 메소드객체를 복제하여 새로운 객체를 생성 후 참조값을 반환

    clone()Object 클래스에서 protected로 보호되어있으므로 자식클래스에서 clone()을 사용하기위해 public으로 메소드 오버라이딩을 수행하며 해당 ClassCloneable 인터페이스를 구현해야한다.
class SomeClass implements Cloneable {
	private final int id1 ; // 불변변수
	private final int id2 ;
	public SomeClass(int id1 , int id2) {
		this.id1 = id1;
		this.id2 = id2;
	}
	@Override
    public SomeClass clone() {
        try {
            return (SomeClass) super.clone(); 
        } catch (CloneNotSupportedException e) {
            throw new AssertionError();
        }
    }
}
public class testcase1  {
	public static void main(String[] args) {
		SomeClass s = new SomeClass(1,2);
		SomeClass copied_s = s.clone();
	}
}

Class 클래스 : java.lang.Class<T>
Java Reflection API 중 일부로서 특정 클래스인터페이스메타데이터에 접근할 수 있도록하는 기능을 제공 Java Reflection
특정 클래스에 대한 정보를 캡슐화하여 메서드로 요청 시 정보를 제공

어플리케이션런타임에서 특정 클래스의 구조를 조회하거나 조작

  • 클래스 리터럴 ( Class literal )

    특정클래스.class
    특정 클래스Class 객체( java.lang.Class<특정클래스> )를 획득하기에 가장 간단한 방법
    클래스 리터럴을 참조하는 구문
    ex ) String.class의 경우 java.lang.Class<String> 객체를 생성

    ClassStatic Method

    • Class객체.getName() :
      패키지명을 포함한 클래스의 완전한 이름을 반환

    • Class객체.Superclass() :
      java.lang.Class<부모클래스> 객체를 반환

    • Class객체.getMethods() :
      클래스의 모든 public 메서드를 반환

    • Class객체.getDeclaredMethods() :
      클래스의 모든 접근제한자메서드를 반환

    • Class객체.getConstructors()
      클래스public 생성자를 반환

String
java에서 문자열은 java.lang.String 클래스의 instance로서 표현됨.
▶ 문자열은 기본형 ( int , double , char 등 )이 아님

String객체로서 참조형 변수이 아닌 주소가 저장되므로 일반적인 동등연산 ( == 등 )으로 문자열 변수 비교는 불가능.
문자열1.equals(문자열2)로 비교를 수행

String의 경우 문자열 객체를 수정하기 위해 새로운 객체를 생성한다면 , StringBuffer는 기존 객체내에서 문자열을 수정가능하여 메모리 사용이 효율적.

String 클래스의 Instance는 문자열을 저장하기위한 문자배열을 비공개 field로서 가진다.
private final char[]

String s = "ABC"
"ABC" : private final char[]로서의 문자열 리터럴
문자열리터럴( String Literal ) :
큰따옴표( "" )로 둘러싼 문자들의 연속된 값

  • String Static Method
    • String.format("포맷문자열",변수,...)
      Java에서 문자열을 특정 format에 맞춰서 formatting 시 사용하는 method.
      ▶ 문자열 내 변수를 삽입하거나 format을 조정 시 유용.

      。Console에 출력하는 System.out.printf()와 달리, 포맷된 문자열을 return.

    • String.valueOf(특정자료형변수)
      。특정 자료형( int , long 등 )의 객체를 문자열로 변환
      메소드 오버로딩을 통해 구현되어 여러 자료형String으로 변환가능


  • String instance Method
    • String객체.charAt(인덱스)
      String객체의 특정 index에 해당하는 문자열char로 변환

    • String객체.repeat(n)
      。문자열을 n번 반복한 문자열을 생성하여 반환

      ex ) "*".repeat(5);*****

    • String객체.toCharArray()
      String 객체를 char[] 객체로 변환

    • String객체.charAt(인덱스) :
      。문자열에서 특정 index의 단일문자변수 ( char )을 return.

    • String객체.substring(시작인덱스, 종료인덱스)
      String객체시작인덱스~종료인덱스에 해당하는 String instance를 생성하여 return.

      String객체.substring(시작인덱스) 는 인덱스 시작시점부터 끝까지의 String 객체를 return.

    • String객체.equals(String객체)
      。다른 문자열과 내용이 일치하는지 확인하는 method

      String객체로서 참조형 변수이 아닌 주소가 저장되므로 일반적인 동등연산 ( == 등 )으로 문자열 변수 비교는 불가능.
      문자열1.equals(문자열2)로 비교를 수행

    • String객체.getBytes() :
      String객체Byte 배열로 return.

    • String객체.compareTo(String 객체) :
      。다른 String 객체와 대소관계를 판단하는 Method.

      s1.compareTo(s2)에서
      s1 < s2 일 경우 음의정숫값을 반환
      s1 = s2 일 경우 0을 반환
      s1 > s2 일 경우 양의정숫값을 반환

      Comparable<T> , Comparator<T>에서 주로 활용

    • String객체(text).indexOf(String객체(pattern) , 시작 index) :
      。문자열( text ) 내 문자열( pattern )을 text 내 시작 index를 기준으로 검색하는 method.
      String객체.indexOf(String객체)의 경우 전체 text에 대해서 맨앞부터 검색

      。검색에 성공한 경우 textpattern의 시작index를 반환하고 실패한 경우 -1를 반환

    • String객체(text).lastIndexOf(String객체(pattern) , 시작 index) :
      。문자열( text ) 내 문자열( pattern )을 text 내 시작 index를 기준으로 뒤부터 검색하는 method.
      String객체.lastIndexOf(String객체)의 경우 전체 text에 대해서 맨뒤부터 검색
  • StringBuilder

  • StringBuffer
    。가변적인 변경가능한 문자열을 처리하기위한 Class
    String s += "A";를 100개 반복하면 100개객체메모리에 생성됨
    StringBuffer sbsb.append("B"); 하면 몇번 반복해도 1개의 객체에서 수행됨

    동기화를 보장하여 멀티스레드 환경에서도 안전하게 활용이 가능.

    String의 경우 문자열 객체를 수정하기 위해 새로운 객체를 생성한다면 , StringBuffer는 기존 객체내에서 문자열을 수정가능하여 메모리 사용이 효율적

    StringBuffer sb = new StringBuffer()
    • SB객체.append(문자열)
      SB객체의 문자열에 추가문자열을 맨뒤로 추가

    • SB객체.delete(시작인덱스, 끝인덱스)
      SB객체의 문자열에서 해당하는 인덱스범위를 삭제

    • SB객체.insert(인덱스, "문자열")
      SB객체의 문자열에서 해당하는 인덱스에 문자열을 삽입

    • SB객체.replace(시작인덱스, 끝인덱스,"문자열")
      SB객체의 문자열에서 해당하는 인덱스범위를 삭제 후 추가된 문자열로 교체

    • SB객체.reverse()
      SB객체의 문자열을 역순배치

    • SB객체.toString()
      SB객체String객체로 변환
  • Math
    。수학연산을 위한 Method를 포함하는 Class

    Static Method

    • Math.abs(객체)
      。객체를 절댓값 적용

Wrapper Class
。기본형( primitive type )을 객체로 감싸는 Wrapper Class
Number라는 abstract class를 확장

컴파일러에서 자동으로 형변환을 수행하므로 primitive type처럼 활용 가능

primitive type에서는 null을 사용할 수 없으므로 Wrapper Class를 활용
ex ) intnull을 가질 수 없으나 Integernull을 가질 수 있다.

。공통적으로 parse 또는 valueOf method를 제공하여 형변환을 수행가능

Short / Long / Byte / Integer / Double / Float

문자열에서 숫자형으로 변환
Wrapper Class에서 기본적으로 정의된 parse 또는 valueOf 메서드를 통해 변환이 가능

  • Stringint
// 문자열에서 정수형
String sNum = "1234";
int i1 = Integer.parseInt(sNum);
int i2 = Integer.valueOf(sNum);
  • Stringdouble
// 문자열에서 실수형
String sNum = "1234";
double d = Double.valueOf(sNum);
  • Stringfloat
// 문자열에서 실수형
String sNum = "1234";
float f = Float.valueOf(sNum);
  • Stringlong
// 문자열에서 실수형
String sNum = "1234";
long l = Long.parseLong(sNum);
  • Stringshort
// 문자열에서 실수형
String sNum = "1234";
short s = Short.parseShort(sNum);

문자열에서 숫자형으로 변환

  • intString
// 정수형에서 문자열
int i = 1234;
String s1 = String.valueOf(i);
String s2 = Integer.toString(i);
  • doubleString
// 실수형에서 문자열
double d = 1.23;
String s1 = String.valueOf(d);
String s2 = Double.toString(d);

Integer
java.lang.Integer Class 객체
Primitive typeint를 객체로 감싼 Wrapper Class 객체

new 키워드로 선언하여 객체 생성.
▶ 단 예외적으로 변수 선언 시 생략해서 선언 가능.

null값을 저장 가능.
DB Entityprimary key로 활용된다.
▶ DB에서 pk가 없거나 아직 할당되지 않은 상태를 지시하기 위해 NULL을 사용할 수 있게 설정.


Integer의 property

  • Integer.MIN_VALUE / Integer.MAX_VALUE :
    Java의 정수형 int type이 가질 수 있는 가장 작은값을 지시하는 상수.
    integer.MIN_VALUE , Integer.MAX_VALUE의 실제값은 231=2147483648-2^{31}=-2147483648 , 231=+21474836482^{31}=+2147483648

    。최솟값을 초기값으로 설정 시 사용됨.
    ▶ 특정값과 비교 후 갱신하는 기능 구현 시 초기값을 Integer.MIN_VALUE 설정 시 무조건 갱신할 수 있다.

    Integer.MAX_VALUE의 경우 다익스트라 알고리즘 등 거리배열 초기화 시 사용
profile
공부기록 블로그

0개의 댓글