지구정복
[JAVA] 11/13 | 기본API, Object클래스, String클래스 본문
ㅇ복습
패키지
사용자 정의 클래스
캡슐화
상속
추상
다형
내장 패키지(API) -https://docs.oracle.com/javase/8/docs/api/index.html에 내장패키지들이 나와있다
내장클래스
ㅁ기본 API
ㅇjava.lang - Object 클래스
java.lang 패키지는 자바프로그램의 기본적인 클래스를 담고 있는 패키지이다. 따라서 import없이 사용할 수 있다.
java.lang 패키지 내 클래스
클래스 |
용도 |
|
Object |
- 자바 클래스의 최상위 클래스로 사용 |
|
System |
- 표준 입력 장치(키보드)로부터 데이터를 입력받을 때 사용 - 표준 출력 장치(모니터)로 출력하기위해 사용 - 자바 가상 기계를 종료시킬 때 사용 - 쓰레기 수집기를 실행 요청할 때 사용 |
|
Class |
- 클래스를 메모리로 로딩할 때 사용 |
|
String |
- 문자열을 저장하고 여러가지 정보를 얻을 때 사용 |
|
StringBuffer, StringBuilder |
- 문자열을 저장하고 내부 문자열을 조작할 때 사용 |
|
Math |
- 수학 함수를 이용할 때 사용 |
|
Wrapper |
Byte, Short, Character Integer, Float, Double Boolean, Long |
- 기본 타입의 데이터를 갖는 객체를 만들 때 사용 - 문자열을 기본 타입으로 변환할 때 사용 - 입력값 검사에 사용 |
java.util 패키지 클래스
클래스 |
용도 |
Arrays |
- 배열을 조작(비교, 복사, 정렬, 찾기)할 때 사용 |
Calendar |
- 운영체제의 날짜와 시간을 얻을 때 사용 |
Date |
- 날짜와 시간 정보를 저장하는 클래스 |
Objects |
- 객체 비교, 널(null) 여부 등을 조사할 때 사용 |
StringTokenizer |
- 특정 문자로 구분된 문자열을 뽑아낼 때 사용 |
Random |
- 난수를 얻을 때 사용 |
-객체 비교 equals()
주소를 비교할 때는 비교 연산자
내용을 비교할 때는 equals() 메소드를 사용한다.
Object obj1 = new Object();
Object obj2 = new Object();
boolean result = obj1.equals(obj2);
-문자열 변환 toString()
객체의 문자 정보를 리턴한다. 객체의 문자 정보란 객체를 문자열로 표현한 값을 말한다.
Object 객체를 바로 만들어서 toString() 메소드를 출력하면 단순히 객체참조값이 출력되지만
String 객체를 만들어서 toString() 메소드를 사용하면 해당 문자열이 출력된다.
이 뜻은 String 클래스에서 Object의 toString() 메소드를 재정의했기 때문이다.
이때 출력결과에서
java.lang.Object는 클래스명이고
15db9742는 16진법 참조값이다.
public class Ex111301 {
public static void main(String[] args) {
Object o= new Object();
//객체 참조값
System.out.println(o);
//객체 참조값을 문자열로 출력
System.out.println(o.toString());
//String 객체를 만들고 toString()을 사용하면
//String 클래스에서 메소드재정의하고 사용해서 다른 결과가 나온다.
String s = new String("Hello");
System.out.println(s.toString());
}
}
아래와 같이 클래스만 이름만 그리고 hashCode()를 이용해서 10진법으로 나타낼 수 있다.
public class Ex111302 {
public static void main(String[] args) {
Object o= new Object();
System.out.println(o);
//클래스 이름을 알고 싶을 떄
System.out.println(o.getClass().getName());
//hashCode() 참조값을 10진법으로 출력하기
System.out.println(o.hashCode());
}
}
이제 특정 문자열에 대한 클래스와 주소값을 출력해보자.
이때 주소값은 16진법으로 변환해서 출력했다.
public class Ex111302 {
public static void main(String[] args) {
Object o= new Object();
System.out.println(o);
//클래스 이름을 알고 싶을 떄
System.out.println(o.getClass().getName());
//hashCode() 참조값을 10진법으로 출력하기
System.out.println(o.hashCode());
//문자에 대한 클래스와 주소값 출력하기
String s = new String("hello");
System.out.println(s.getClass().getName());
System.out.println(s.hashCode());
}
}
ㅇjava.lang - Object 클래스 - String 클래스
String 의 다양한 생성자를 이용해서 직접 String객체를 생성할 수 있다.
public class Ex111303 {
public static void main(String[] args) {
String str1 = "hello";
String str2 = new String("hello");
System.out.println(str1);
System.out.println(str2);
}
}
또한 객체를 이용해서 String 객체를 만들 수 있다. 아래는 바이트 배열을 문자열로 변환하는 예제이다.
public class Ex111303 {
public static void main(String[] args) {
//String 객체를 배열을 이용해서 만들기
byte[] bytes = {72, 101, 108, 108, 111, 32, 74, 97, 118, 97};
//Hello Java 출력
String s1 = new String(bytes);
System.out.println(s1);
//6번째 자리부터 4개 출력 : Java 출력
String s2 = new String(bytes, 6, 4);
System.out.println(s2);
}
}
-String의 메소드
public class Ex111304 {
public static void main(String[] args) {
String str1 = "Hello World ";
//문자열 길이 확인
System.out.println(str1.length());
System.out.println("");
//문자열에서 문자열 추출하기 : substring(시작인덱스, 끝인덱스)
String pstr1 = str1.substring(2);
System.out.println(pstr1);
String pstr2 = str1.substring(4, 7);
System.out.println(pstr2);
System.out.println("");
////문자열 검색하기
//indexOf(문자열) : 해당 문자열이 있는 곳이 시작하는 인덱스값 출력
//lastIndexOf() :
int pos = str1.indexOf("ll");
System.out.println(pos);
System.out.println("");
//존재검색 : 해당 문자열이 있으면 true, 없으면 false
//문자열.startWith(해당문자열);
//문자열.endsWith(해당문자열)
//문자열.contains(해당문자열)
boolean b1 = str1.startsWith("He");
System.out.println(b1);
System.out.println("");
////문자열 치환
String rstr1 = str1.replaceAll("World", "세상 ");
System.out.println(rstr1);
System.out.println("");
////문자열 합치기 : connat()
String jstr1 = str1.concat("bye");
System.out.println(jstr1);
System.out.println("");
////대소문자 변환
System.out.println(str1.toUpperCase());
System.out.println(str1.toLowerCase());
System.out.println("");
////문자열 좌우 공백제거, 중간공백 아님
String ostr1 = " hello ";
System.out.println(ostr1+"::");
System.out.println(ostr1.trim()+"::");
System.out.println("");
//문자열 분리
String sstr1 = "사과, 딸기, 참외, 수박";
String[] strarr = sstr1.split(",");
for( String str : strarr) {
System.out.println(str);
}
System.out.println("");
//분리된 문자열 결합
String fstr1 = String.join(",", strarr);
System.out.println(fstr1);
System.out.println("");
//형식화된 문자열 결합
String fstr2 = String.format("%s:%s:%s", strarr[0], strarr[1], strarr[2]);
System.out.println(fstr2);
}
}