티스토리 뷰
✏️ Object 클래스
Object는 java.lang 패키지에 속한 클래스이며, 모든 클래스에 강제로 상속된다. Object 만이 아무 클래스도 상속받지 않는 유일한 클래스로 계층 구조 상 최상위 클래스이다. Object의 주요 메소드는 아래 표와 같다.
메소드 | 설명 |
boolean equals(Object obj) | obj가 가리키는 객체와 현재 객체를 비교하여 같으면 true를 리턴 |
Class getClass() | 현 객체의 런타임 클래스를 리턴 |
int hashCode() | 현 객체에 대한 해시 코드값 리턴 |
string toString() | 현 객체에 대한 문자열 표현 리턴 |
void notify() | 현 객체에 대해 대기하고 있는 하나의 스레드를 깨운다. |
void notifyAll() | 현 객체에 대해 대기하고 있는 모든 스레드를 깨운다. |
void wait() | 다른 스레드가 깨울 때까지 현재 스레드를 대기하게 한다. |
객체 레퍼런스로 객채의 클래스명, 해시코드 값, 객체의 문자열을 출력하는 예제이다.
package ex;
class Point{
private int x,y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
}
public class ObjectEx {
public static void print(Object obj){
System.out.println(obj.getClass().getName());
System.out.println(obj.hashCode());
System.out.println(obj.toString());
System.out.println(obj);
}
public static void main(String[] args) {
Point p = new Point(2,3);
print(p);
}
}
Object의 toString()을 오버라이딩한 예제이다. 단 toString() 메소드는 public으로 선언해야 한다.
package ex;
class Point{
private int x,y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
public String toString(){
return "Pont("+x+","+y+")";
}
}
public class ToStringEx {
public static void main(String[] args) {
Point p = new Point(2,3);
System.out.println(p.toString());
System.out.println(p);
System.out.println(p+"입니다.");
}
}
equals(Object) 메소드를 오버라이딩한 예제이다.
package ex;
class Point{
private int x,y;
public Point(int x,int y){
this.x=x;
this.y=y;
}
public boolean equals(Object obj){
Point p = (Point)obj;
if(x==p.x&&y==p.y)
return true;
else
return false;
}
}
public class EqualsEx {
public static void main(String[] args) {
Point a = new Point(2,3);
Point b = new Point(2,3);
Point c = new Point(3,4);
if(a==b)
System.out.println("a==b");
if(a.equals(b))
System.out.println("a is equals to b");
if(a.equals(c))
System.out.println("a is equals to c");
}
}
✏️ Wrapper 클래스
이름이 Wrapper인 클래스는 존재하지 않는다. 다만 int, char, double 등 8개의 기본 타입을 객체로 다루기 위해 JDK에 만들어진 8개 클래스를 Wrapper 클래스라 칭한다. JDK의 어떤 클래스는 객체만을 다루기 때문에 3,'a' 등 기본 타입의 데이터는 사용할 수 없다. 이런 문제점을 해결하기 위해 기본 타입의 값을 객체로 만들어 사용할 수 있도록 Wrapper 클래스를 제공하고 java.lang 패키지에서 사용할 수 있다.
기본 타입 | byte | short | int | long | char | float | double | boolean |
Wrapper 클래스 | Byte | Short | Integer | Long | Character | Float | Double | Boolean |
✏️ Wrapper 클래스의 메소드
메소드 | 설명 |
static int bitCount(int i) | 정수 I의 이진수 표현에서 1의 개수 리턴 |
float floatValue() | float 타입으로 값 리턴 |
int intValue() | int 타입으로 값 리턴 |
long longValue() | long 타입으로 값 리턴 |
short shortValue() | short 타입으로 값 리턴 |
static int parseInt(String s) | 문자열 s를 10진 정수로 변환한 값 리턴 |
static int parseInt(String s, int radix) | 문자열 s를 지정된 진법의 정수로 변환한 값 리턴 |
static string toBinaryString(int i) | 정수 I를 이진수 표현으로 변환한 문자열 리턴 |
static string toHexString(int i) | 정수 I를 16진수 표현으로 변환한 문자열 리턴 |
static string toOctalString(int i) | 정수 I를 8진수 표현으로 변환한 문자열 리턴 |
static string toString(int i) | 정수 I를 문자열로 변환하여 리턴 |
static Integer valueOf(int i) | 정수 I를 담은 Integer 객체 리턴 |
static Integer valueOf(String s) | 문자열 s를 정수로 변환하여 담고 있는 Integer 객체 리턴 |
Wrapper 클래스를 활용하는 예제이다.
package ex;
public class WrapperEx {
public static void main(String[] args) {
System.out.println(Character.toLowerCase('A'));
char c1='4', c2='F';
if(Character.isDigit(c1))
System.out.println(c1+"= 숫자");
if(Character.isAlphabetic(c2))
System.out.println(c2+"= 영문자");
System.out.println(Integer.parseInt("-123"));
System.out.println(Integer.toHexString(28));
System.out.println(Integer.toBinaryString(28));
System.out.println(Integer.bitCount(28));
Double d = Double.valueOf(3.14);
System.out.println(d.toString());
System.out.println(Double.parseDouble("3.14"));
boolean b = true;
System.out.println(Boolean.toString(b));
System.out.println(Boolean.parseBoolean("false"));
}
}
// 실행결과
a
4= 숫자
F= 영문자
-123
1c
11100
3
3.14
3.14
true
false
✏️ 박싱과 언박싱
기본 타입의 값을 Wrapper 객체로 변환하는 것을 박싱(boxing)이라 하고, 반대의 경우를 언박싱(unboxing)이라 한다. 박싱과 언박싱은 JDK 1.5부터 자동으로 이루어지며 이를 자동 박싱(auto boxing), 자동 언박싱(auto unboxing)이라 한다.
Integer ten = 10; // 자동 박싱, Integer ten = Integer.valueOf(10)으로 자동 처리
int n = ten; // 자동 언박싱, int n = ten.intValue()로 자동 처리
✏️ String 클래스
문자열에서 중요한 부분이 있는데 바로 new String()과 스트링 리터럴이다. 언뜻 보면 같을 수도 있지만 스트링 리터럴은 자바 내부에서 리터럴 테이블로 관리하여 동일한 리터럴을 공유하고, new String()으로 만들어진 스트링 객체는 다른 객체들과 같이 힙 메모리에 생성된다. 아래 표는 String의 생성자와 메소드에 관한 설명이다.
생성자 | 설명 |
String() | 빈 스트링 객체 생성 |
String(char[] value) | char 배열에 있는 문자들을 스트링 객체로 생성 |
String(String original) | 매개변수로 주어진 문자열과 동일한 스트링 객체 생성 |
String(StringBuffer buffer) | 매개변수로 주어진 스트링 버퍼의 문자열을 스트링 객체로 생성 |
메소드 | 설명 |
char CharAt(int index) | index 인덱스에 있는 문자 값 리턴 |
int codePointAt(int index) | index 인덱스에 있는 유니코드 값 리턴 |
int compareTo(String anotherString) | 두 스트링을 사전 순으로 비교하여 두 스트링이 같으면 0, 현 스트링이 anotherString보다 먼저 나오면 음수, 아니면 양수 리턴 |
String concat(String str) | 현재 스트링 뒤에 str 스트링을 덧붙인 새로운 스트링 리턴 |
boolean contains(CharSequence s) | s에 지정된 문자들을 포함하고 있으면 true 리턴 |
int length() | 스트링의 길이(문자 개수) 리턴 |
String replace(Charsequence target, Charsequence replacement) |
target이 지정하는 일련의 문자들을 replacement가 지정하는 문자들로 변경한 스트링 리턴 |
String[] split(String regex) | 정규식 regex에 일치하는 부분을 중심으로 스트링을 분리하고, 분리된 스트링들을 배열로 저장하여 리턴 |
String subString(int beginIndex) | beginIndex부터 시작하는 서브 스트링 리턴 |
String toLowerCase() | 소문자로 변경한 스트링 리턴 |
String toUpperCase() | 대문자로 변경한 스트링 리턴 |
String trim() | 스트링 앞뒤의 공백 문자들을 제거한 스트링 리턴 |
아래 코드는 String 클래스의 다양한 메소드를 활용한 예제이다.
package ex;
public class StringEx {
public static void main(String[] args) {
String a = new String(" C#");
String b = new String(" ,C++");
System.out.println(a+"의 길이는 "+a.length());
System.out.println(a.contains("#"));
a=a.concat(b);
System.out.println(a);
a=a.trim();
System.out.println(a);
a=a.replace("C#","JAVA");
System.out.println(a);
String s[] = a.split(",");
for(int i=0;i<s.length;i++)
System.out.println(s[i]+" ");
a=a.substring(5);
System.out.println(a);
char c = a.charAt(2);
System.out.println("c = " + c);
}
}
/*
C#의 길이는 3
true
C# ,C++
C# ,C++
JAVA ,C++
JAVA
C++
,C++
c = +
*/
✏️ StringBuffer 클래스
StringBuffer 클래스는 java.lang 패키지에 포함되어 있으며 String 클래스와 같이 문자열을 다룬다. String 객체의 경우 내부의 문자열을 수정할 수 없지만, StringBuffer 객체는 문자열을 저장하는 가변 버퍼를 가지고 있기 때문에 저장된 문자열의 수정이 가능하다. 문자열의 크기가 늘어나면 내부 버퍼 크기를 자동 조절한다. 아래 표는 StringBuffer의 생성자와 메소드이다.
생성자 | 설명 |
StringBuffer() | 초기 버퍼의 크기가 16인 스트링 버퍼 객체 생성 |
StringBuffer(charSequence seq) | seq가 지정하는 일련의 문자들을 포함하는 스트링 버퍼 생성 |
StringBuffer(int capacity) | 지정된 초기 크기를 갖는 스트링 버퍼 생성 |
StringBuffer(String str) | 지정된 스트링으로 초기화된 스트링 버퍼 객체 생성 |
메소드 | 설명 |
StringBuffer append(String str) | str스트링을 스트링 버퍼에 덧붙인다. |
StringBuffe append(StringBuffer sb) | sb 스트링 버퍼를 현재 스트링 버퍼에 덧붙인다. 이 결과 현재 스트링 버퍼의 내용이 변한다. |
int capacity() | 스트링 버퍼의 현재 크기 리턴 |
StringBuffer delete(int start, int end) | start 위치부터 end 위치 앞까지 부분 문자열 삭제 |
StringBuffer insert(int offset, String str) | str 스트링을 스트링 버퍼의 offset 위치에 삽입 |
StringBuffer replace(int start, int end, String str) | 스트링 버퍼 내의 start 위치의 문자부터 end가 지정하는 문자 앞의 서브 스트링을 str로 대체 |
StringBuffer reverse() | 스트링 버퍼 내의 문자들을 반대 순서로 변경 |
void setLength(int newLength()) | 스트링 버퍼 내 문자열 길이를 newLength로 재설정하고 현재 길이보다 큰 경우 널 문자(‘’)로 채우며 작은 경우는 기존 문자열이 잘린다. |
아래 코드는 StringBuffer의 메소드를 활용한 예쩨이다.
public class StringBufferEx {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer("This");
sb.append(" is pencil");
System.out.println(sb);
sb.insert(7, "my");
System.out.println(sb);
sb.replace(8,10,"your");
System.out.println(sb);
sb.delete(8,13);
System.out.println(sb);
sb.setLength(4);
System.out.println(sb);
}
}
/*
This is pencil
This ismy pencil
This ismyourpencil
This ismencil
This
*/
✏️ StringTokenizer 클래스
StringTokenizer 클래스는 java.util 패키지에 포함되어 있으며, 하나의 문자열을 여러 개의 문자열로 분리하기 위해 사용된다. 문자열을 분리할 때 사용되는 기준 문자를 구분 문자(delimiter)라고 하며, 구분 문자로 분리된 문자열을(token)이라 한다. 아래 표는 StringTokenizer의 생성자와 메소드를 나타낸다.
생성자 | 설명 |
StringTokenizer(String str) | str 스트링의 각 문자를 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성 |
StringTokenizer(String str, String delim) | str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성 |
StringTokenizer(String str, String delim, boolean returnDelims) | str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성, returnDelims가 true이면 delim이 포함된 문자도 토큰에 포함 |
메소드 | 설명 |
int countToken() | 스트링 토크나이저가 분리한 토큰의 개수 리턴 |
boolean hasMoreToekns() | 스트링 토크나이저에 다음 토큰이 있으면 true 리턴 |
String nextToken() | 스트링 토크나이저에 들어 있는 다음 토큰 리턴 |
아래 코드는 StringTokenizer의 생성자와 메소드를 활용한 예제이다.
package ex;
import java.sql.SQLOutput;
import java.util.*;
public class StringBufferEx {
public static void main(String[] args) {
StringTokenizer ST = new StringTokenizer("홍길동/자바/홍련/콩쥐/팥쥐","/");
StringTokenizer st = new StringTokenizer("홍길동/자바/정푸름/룰루나난","/",true);
int count = st.countTokens();
System.out.println("count = " + count);
while(ST.hasMoreTokens()){
System.out.println(ST.nextToken());
}
}
}
/*
count = 7
홍길동
자바
홍련
콩쥐
팥쥐
*/
✏️ Math 클래스
Math 클래스는 java.lang 패키지에 포함되어 있으며 기본적인 산술 연산을 제공한다. 모든 멤버들은 static 타입이므로 클래스 이름으로 바로 사용할 수 있다. 아래 표는 Math 클래스의 주요 메소드이다.
메소드 | 설명 |
static double abs(double a) | 실수 a의 절댓값 리턴 |
static double cos(double a) | 실수 a의 cosine 값 리턴 |
static double sin(double a) | 실수 a의 sin 값 리턴 |
static double tan(double a) | 실수 a의 tangent 값 리턴 |
static double exp(double a) | e^a값 리턴 |
static double celi(double a) | 올림. 실수 a보다 크거나 같은 수 중에서 가장 작은 정수를 실수 타입으로 리턴 |
static double floor(double a) | 내림. 실수 a보다 크거나 같은 수 중에서 가장 큰 정수를 실수 타입으로 리턴 |
static double max(double a, double b) | 두 수 a, b중에서 큰 수 리턴 |
static double min(double a, double b) | 두 수 a, b중에서 작은 수 리턴 |
static double random() | 0.0보다 크거나 같고 1.0보다 작은 임의의 실수 리턴 |
static long round(double a) | 반올림. 실수 a를 소수 첫째 자리에서 반올림한 정수를 long 타입으로 반환 |
static double sqrt(double a) | 실수 a의 제곱근 반환 |
아래 코드는 Math 클래스의 다양한 메소드를 활용한 예제이다.
package ex;
import java.sql.SQLOutput;
public class MathEx {
public static void main(String[] args) {
System.out.println(Math.PI);
double a= 3.3;
System.out.println(Math.ceil(a));
System.out.println(Math.floor(a));
System.out.println(Math.sqrt(9));
System.out.println(Math.exp(2));
System.out.println(Math.round(3.14));
for(int i=0;i<5;i++){
System.out.println((int)(Math.random()*45+1));
}
}
}
/*
3.141592653589793
4.0
3.0
3.0
7.38905609893065
3
38
6
21
3
9
*/
✏️ Calender 클래스
Calender 클래스는 java.util 패키지에 있는 추상 클래스로서 년, 월, 일, 요일, 시간, 분, 총, 밀리초 등의 정보를 저장한다. 아래 표는 Calender에서 사용하는 필드이다.
필드 | 설명 |
YEAR | 년도 |
MONTH | 달(0~11) |
HOUR | 시간(0~23) |
HOUR_OF_DAY | 24시간을 기준으로 한 시간 |
SECOND | 초 |
DAY_OF_MONTH | 한 달의 날짜 |
DAY_OF_WEEK | 한 주의 요일 |
AM_PM | 오전인지 오후인지 구분 |
MINUTE | 분 |
MILISECOND | 밀리초 |
아래 코드는 Calender 클래스를 이용한 예제이다.
package ex;
import java.util.*;
public class CalenderEx {
public static void printCalender(String msg, Calendar cal){
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
int dayOfWeek= cal.get(Calendar.DAY_OF_WEEK);
int hour = cal.get(Calendar.HOUR);
int hourOfDay = cal.get(Calendar.HOUR_OF_DAY);
int ampm = cal.get(Calendar.AM_PM);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int milisecond = cal.get(Calendar.MILLISECOND);
System.out.println(msg+year+ "/" + month +"/"+day+"/");
switch (dayOfWeek){
case Calendar.SUNDAY :
System.out.println("일요일");
break;
case Calendar.MONDAY:
System.out.println("얼요일");
break;
case Calendar.TUESDAY:
System.out.println("화요일");
break;
case Calendar.WEDNESDAY:
System.out.println("수요일");
break;
case Calendar.THURSDAY:
System.out.println("목요일");
break;
case Calendar.FRIDAY:
System.out.println("금요일");
break;
case Calendar.SATURDAY:
System.out.println("토요일");
break;
}
}
public static void main(String[] args) {
Calendar now = Calendar.getInstance(); // getInstance를 통해 객체 생성
printCalender("현재 ",now);
Calendar firstDate = Calendar.getInstance();
firstDate.clear(); // 현재 날짜와 시간 정보를 모두 지움
firstDate.set(2016,11,25); // 새롭에 연/월/일 설정
firstDate.set(Calendar.HOUR_OF_DAY,20);
firstDate.set(Calendar.MINUTE,30);
printCalender("처음 만난 날은 ",firstDate);
}
}
/*
현재 2024/4/28/
화요일
처음 만난 날은 2016/11/25/
일요일
*/
'PL > JAVA' 카테고리의 다른 글
[JAVA] 자바 - 입출력 스트림과 파일 입출력 (0) | 2024.06.10 |
---|---|
[JAVA] 자바 - 제네릭과 컬렉션 (2) | 2024.06.07 |
[JAVA] 자바 - 모듈과 패키지 (0) | 2024.05.27 |
[JAVA] 자바 - 상속 2 (0) | 2024.05.26 |
[JAVA] 자바 - 상속 (0) | 2024.05.25 |
- Total
- Today
- Yesterday
- BFS
- 자바
- html
- 투 포인터
- C++
- 알고리즘 공부
- DFS
- 백준
- 백준 풀이
- 자바스크립트
- 카운팅 정렬
- java
- 알고리즘
- Do it!
- 유니온 파인드
- 세그먼트 트리
- 이분 매칭
- CSS
- 스프링 부트 crud 게시판 구현
- HTML5
- c++ string
- DP
- 유클리드 호제법
- 자료구조
- C++ Stack
- js
- 반복문
- 우선순위 큐
- 에라토스테네스의 체
- 스택
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |