java.lang
。Java의Core Package로서 가장 기본적이고 자주 사용되는Class와Interface를 포함하는 패키지
。 다른Package와 달리 자동으로Java에import되므로import java.lang.*를 명시적으로 기입할 필요가 없다.
▶Java에서 외부Package의Class를 사용하기위해서는import package.class를 해야한다.
- 패키지 구성요소 종류
。주로언어,문자열,기본 자료형,스레드,예외,런타임관련클래스&인터페이스를 포함
Object,String,StringBuilder,StringBuffer,Math,Integer,Double,Boolean,System,Thread,Runnable,Exception,Error등의Class를 포함
Object
。Java Class의 최상위 부모 Class
▶Java의 모든Class는Object클래스에서 파생됨
。모든클래스는클래스명 extends Object이 함축됨.
。일반Class에서ObjectClass의Method를 정의하는건 이는 해당 Method를Override하여 상위 클래스에서 상속받은 Method를 재정의하는 것을 의미.
。Java에서Override시 접근제한을 강화하는건 불가능하므로, 접근제한자를 항상public으로 정의해야함.
객체.toString()
。ObjectClass 내 정의된 Method로서 Class instance의 상태를 간결하게 표현하는 문자열을 생성하여 반환하는 method
。일반 Class 내에toString()을 재정의하지않고객체.toString()호출 시패키지경로.클래스이름@해시값형태로 문자열 반환public class Object{ public String toString(){ return getClass().getName() + "@" + Integer.toHexString(hashCode()); } }。
Java의 일반 Class에서 해당toString()method를 재정의하는것은Object Class의toString()을Override하는것.
▶ 보통@Override의 Annotation이 정의됨
객체.clone()
。클래스 객체의 보겢를 위한메소드로객체를 복제하여 새로운객체를 생성 후참조값을 반환
。clone()은Object 클래스에서protected로 보호되어있으므로자식클래스에서clone()을 사용하기위해public으로메소드 오버라이딩을 수행하며 해당Class에Cloneable 인터페이스를 구현해야한다.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> 객체를 생성
Class의Static 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 StaticMethod
String.format("포맷문자열",변수,...)
。Java에서 문자열을 특정 format에 맞춰서 formatting 시 사용하는 method.
▶ 문자열 내 변수를 삽입하거나 format을 조정 시 유용.
。Console에 출력하는System.out.printf()와 달리, 포맷된 문자열을 return.
String.valueOf(특정자료형변수)
。특정 자료형(int,long등 )의 객체를 문자열로 변환
▶메소드 오버로딩을 통해 구현되어 여러자료형을String으로 변환가능
String instanceMethod
String객체.charAt(인덱스)
。String객체의 특정index에 해당하는문자열을char로 변환
String객체.repeat(n)
。문자열을n번 반복한 문자열을 생성하여 반환
ex )"*".repeat(5);▶*****
String객체.toCharArray()
。String객체를char[] 객체로 변환
String객체.charAt(인덱스):
。문자열에서 특정index의 단일문자변수 (char)을 return.
String객체.substring(시작인덱스, 종료인덱스)
。String객체의시작인덱스~종료인덱스에 해당하는Stringinstance를 생성하여 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에 대해서 맨앞부터 검색
。검색에 성공한 경우text내pattern의 시작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 sb의sb.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를 포함하는 ClassStatic Method
Math.abs(객체)
。객체를 절댓값 적용
Wrapper Class
。기본형(primitive type)을 객체로 감싸는Wrapper Class
▶Number라는abstract class를 확장
。컴파일러에서 자동으로형변환을 수행하므로primitive type처럼 활용 가능
。primitive type에서는null을 사용할 수 없으므로Wrapper Class를 활용
ex )int는null을 가질 수 없으나Integer은null을 가질 수 있다.
。공통적으로parse또는valueOfmethod를 제공하여 형변환을 수행가능
。Short/Long/Byte/Integer/Double/Float
문자열에서 숫자형으로 변환
。Wrapper Class에서 기본적으로 정의된parse또는valueOf메서드를 통해 변환이 가능
String▶int// 문자열에서 정수형 String sNum = "1234"; int i1 = Integer.parseInt(sNum); int i2 = Integer.valueOf(sNum);
String▶double// 문자열에서 실수형 String sNum = "1234"; double d = Double.valueOf(sNum);
String▶float// 문자열에서 실수형 String sNum = "1234"; float f = Float.valueOf(sNum);
String▶long// 문자열에서 실수형 String sNum = "1234"; long l = Long.parseLong(sNum);
String▶short// 문자열에서 실수형 String sNum = "1234"; short s = Short.parseShort(sNum);
문자열에서 숫자형으로 변환
int▶String// 정수형에서 문자열 int i = 1234; String s1 = String.valueOf(i); String s2 = Integer.toString(i);
double▶String// 실수형에서 문자열 double d = 1.23; String s1 = String.valueOf(d); String s2 = Double.toString(d);
Integer
。java.lang.IntegerClass 객체
▶Primitive type인int를 객체로 감싼Wrapper Class객체
。new 키워드로 선언하여 객체 생성.
▶ 단 예외적으로 변수 선언 시 생략해서 선언 가능.
。null값을 저장 가능.
▶DB Entity의primary key로 활용된다.
▶ DB에서 pk가 없거나 아직 할당되지 않은 상태를 지시하기 위해NULL을 사용할 수 있게 설정.
Integer의 property
Integer.MIN_VALUE/Integer.MAX_VALUE:
。Java의 정수형inttype이 가질 수 있는 가장 작은값을 지시하는 상수.
▶integer.MIN_VALUE,Integer.MAX_VALUE의 실제값은 ,
。최솟값을 초기값으로 설정 시 사용됨.
▶ 특정값과 비교 후 갱신하는 기능 구현 시 초기값을Integer.MIN_VALUE설정 시 무조건 갱신할 수 있다.
。Integer.MAX_VALUE의 경우다익스트라알고리즘 등 거리배열 초기화 시 사용