클래스 | 용도 |
---|---|
Object | - 자바 클래스의 최상위 클래스로 사용 |
System | - 표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용 - 표준 출력 장치(모니터)로 출력하기 위해 사용 - 자바 가상 기계를 종료할 때 사용 - 쓰레기 수집기를 실행 요청할 때 사용 |
Class | - 클래스를 메모리로 로딩할 때 사용 |
String | - 문자열을 저장하고 여러 가지 정보를 얻을 때 사용 |
Wrapper (Byte, Short, Character, Integer, Float, Double, Boolean, Long) | - 기본 타입의 데이터를 갖는객체를 만들 때 사용 - 문자열을 기본 타입으로 변환할 때 사용 - 입력값 검사에 사용 |
Math | - 수학 함수를 이용할 때 사용 |
System.exit(0)
long time = System.currentTimeMillis();
long time = System.nanoTime();
Class clazz = 클래스이름.class
Class clazz = Class.forName("패키지...클래스이름")
Class clazz = 참조변수.getClass();
리턴 타입 | 메소드 이름(매개 변수) | 설명 |
---|---|---|
char | charAt(int index) | 특정 위치의 문자를 리턴 |
boolean | equals(Object anObject) | 두 문자열을 비교 |
byte[] | getBytes | byte[]로 리턴 |
byte[] | getBytes(Charset charset) | 주어진 문자셋으로 인코딩한 byte[]로 리턴 |
int | indexOf(String str) | 문자열 내에서 주어진 문자열의 위치를 리턴 |
int | length() | 총 문자의 수를 리턴 |
String | replace(CharSequence target, CharSequence replacement) | target부분을 replacement로 대치한 새로운 문자열을 리턴 |
String | substring(int beginIndex) | beginIndex 위치에서 끝까지 잘라낸 새로운 문자열을 리턴 |
String | substring(int beginIndex, int endIndex) | beginIndex 위치에서 endIndex 전까지 잘라낸 새로운 문자열을 리턴 |
String | toLowerCase() | 알파벳 소문자로 변환한 새로운 문자열을 리턴 |
String | toUpperCase() | 알파벳 대문자로 변환한 새로운 문자열을 리턴 |
String | trim() | 앞뒤 공백을 제거한 새로운 문자열을 리턴 |
String | valueOf(int i) valueOf(double d) | 기본 타입 값을 문자열로 리턴 |
기본타입 변수의 값을 비교할 때에는 ==연산자를 사용하고, 문자열을 비교할 때는 .equals()를 사용한다.
자바는 문자열 리터럴이 동일하다면 동일한 String 객체를 참조하도록 되어 있다. 그래서 strVar2와 strVar3는 같은 객체를 참조한다.
(new String()은 아예 새로운 객체를 생성하는 것이고 ""로 지정한 것은 미리 만들어진 것을 가져와 쓰므로 ""을 사용하는 것이 메모리에 무리가 덜 간다.)
원래 equals()는 Object클래스의 번지 비교 메소드이지만, String 클래스가 재정의해서 문자열을 비교하도록 변경했다.
byte[] bytes = "문자열".getBytes();
byte[] bytes = "문자열".getBytes(Charset charset);
String subject = "자바 프로그래밍";
int index = subject.indexOf("프로그래밍"); // index값은 3
String subject = "자바 프로그래밍";
int length = subject.length(); // length는 8이다. 공백을 포함함
String oldStr = "자바 프로그래밍";
String newStr = oldStr.replace("자바", "Java"); // newStr은 Java 프로그래밍이 된다.
String ssn = "880815-1234567";
String firstNum = ssn.substring(0,6); // 0부터 6까지 추출 880815
String secondNum = ssn.substring(7); // 7부터 끝까지 추출 1234567
String original = "Java Programming";
String lowerCase = original.toLowerCase() // lowerCase는 java programming
String upperCase = original.toUpperCase() // upperCase는 JAVA PROGRAMMING
String oldStr = " 자바 프로그래밍 "
String newStr = oldStr.trim(); // 자바 프로그래밍
String str1 = String.valuesOf(10) // 10
String str2 = String.valuesOf(10.5) // 10.5
String str3 = String.valuesOf(true) // true
자바는 기본 타입의 값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장객체라고 하는데, 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문이다.
포장 객체의 특징은 포장하고 있는 기본 타입 값은 외부에서 변경할 수 없다는 점이다.
만약 내부의 값을 변경하고 싶다면 새로운 포장 객체를 만들어야 한다.
기본 타입 | 포장 클래스 |
---|---|
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
Boolean | boolean |
기본 타입의 값을 포장 객체로 만드는 과정을 박싱(Boxing)이라고 하고, 반대로 포장 객체에서 기본 타입의 값을 얻어내는 과정을 언박싱(Unboxing)이라고 한다.
아래의 표는 기본타입의 값을 박싱하는 방법이다. 간단하게 포장 클래스의 생성자 매개값으로 기본 타입의 값 또는 문자열을 넘겨주면 된다.
기본 타입의 값을 줄 경우 | 문자열을 줄 경우 |
---|---|
Byte obj = new Byte(10); | Byte obj = new Byte("10"); |
Character obj = new character('가'); | 없음 |
Short obj = new Short(100); | Short obj = new Short("100"); |
Integer obj = new Integer(1000); | Integer obj = new Integer("1000"); |
Long obj = new Long(10000); | Long obj = new Long("10000"); |
Float obj = new Float(2.5F); | Float obj = new Float("2.5F"); |
Double obj = new Double(3.5); | Double obj = new Double("3.5"); |
Boolean obj = new Boolean(true); | Boolean obj = new Boolean("true"); |
생성자를 이용하지 않아도 다음과 같이 각 포장 클래스마다 가지고 있는 정적 valueOf() 메소드를 사용할 수도 있다.
Integer obj = Integer.valueOf(1000);
Integer obj = Integer.valueOf("1000");
이렇게 박싱된 포장 객체에서 다시 기본 타입의 값을 얻어내기 위해서는(언박싱) 각 포장 클래스마다 가지고 있는 '기본타입이름 + Value()'메소드를 호출하면 된다.
Integer obj = 100;
Integer obj = new Integer(200);
int value1 = obj; // 자동 언박싱
int value2 = obj + 100; // 자동 언박싱
parse + 기본 타입 이름
으로 되어 있는 정적(static) 메소드가 있다. 정적 메소드는 문자열을 매개값으로 받아 기본 타입 값으로 변환한다.포장 객체는 내부의 값을 비교하기 위해 ==와 != 연산자를 사용하지 않는 것이 좋다. 이 연산자는 내부의 값을 비교하는 것이 아니라 포장 객체의 참조를 비교하기 때문이다.
Integer obj1 = 300;
Integer obg2 = 300;
System.out.println(obj1 == obj2); // false가 나온다.
박싱된 값이 아래의 표에 나와있는 범위의 값이라면 ==와 != 연산자로 내부의 값을 바로 비교할 수 있지만, 그 이외의 경우에는 언박싱한 값을 얻어 비교해야한다.
java.lang.Math 클래스는 수학 계산에 사용할 수 있는 메소드를 제공한다. Math 클래스가 제공하는 메소드는 모두 정적(static)메소드 이므로 Math 클래스로 바로 사용이 가능하다.
Math.random() 메소드는 0.0과 1.0 사이의 범위에 속하는 하나의 double 타입의 값을 리턴한다. 0.0은 범위에 포함되고 1은 포함되지 않는다.
0.0 <= Math.random() < 1.0