강의/KOSTA
[Java] Basic API (Day7)
덩이
2022. 3. 14. 23:01
위 글은 해당 카테고리의 수업 강의 자료를 정리한 것입니다.
개요
- 자바 프로그램에서 가장 많이 사용되는 패키지
- import를 사용하지 않아도 자동으로 포함
- Object Class
- 모든 클래스의 최상위 클래스
- 명시적 extends java.lang.Object 없이도 자동으로 상속받게 됨
public class PointApp{
public static void main(String[] args){
Point a = new Point(2,3);
System.out.println(a.hashCode());
System.out.println(a.getClass());
System.out.println(a.getClass().getName());
System.out.println(a.toString());
System.out.println(a);
}
}
public class Point{
private int x;
private int y;
public Point(int x, int y){
this.x=x;
this.y=y;
}
}
1.1 toString()
Object의 toString: getClass().getName() + "@" + Integer.toHexString(hashCode())
1.2 equals()
- 두 객체의 비교시 == 와 Object 클래스의 equals() 메소드를 사용함
- == 와 equals()의 상당한 차이점이 있음
- == 참조 변수 값 비교
- equals() 정의한 값 비교 ➡️ 재정의해서 사용
- 참조 변수 값을 먼저 비교
- 참조 변수 값이 같으면 두 객체는 같은 것
- 참조 변수 값이 다르면 두 객체의 속성 값을 비교함
public class Point {
private int x;
private int y;
public Point() {
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
// equals로 들어온 객체는 다운캐스팅
public boolean equals(Object obj) {
Point p = ((Point)obj);
if(this.hashCode() == p.hashCode()) {
return true;
}else if(this.x == p.x && this.y == p.y) {
return true;
}else {
return false;
}
}
}
public class PointApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
Point a = new Point(2,3);
Point b = new Point(10,5);
Point c = new Point(2,3);
Point d = a;
System.out.println(a.hashCode());
System.out.println(a.getClass());
System.out.println(a.getClass().getName());
System.out.println(a.toString());
// System.out.println(a);
System.out.println(a.equals(b));
System.out.println(a.equals(c));
System.out.println(a.equals(d));
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
}
}
public class Rectangle{
private double width;
private double height;
public Rectangle(int width, int height) {
// TODO Auto-generated constructor stub
this.width = width;
this.height = height;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height = height;
}
public double area() {
// TODO Auto-generated method stub
return this.width * this.height;
}
public boolean equals(Object obj) {
Rectangle r = ((Rectangle)obj);
if(this.area() == r.area()) {
return true;
}else {
return false;
}
}
}
public class RactangleApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
Rectangle a = new Rectangle(6,4);
Rectangle b = new Rectangle(2,12);
Rectangle c = new Rectangle(3,3);
Rectangle d = c;
System.out.println(a.equals(b));
System.out.println(a.equals(c));
System.out.println(a.equals(d));
System.out.println(d.equals(c));
}
}
2. String Class
- 문자(Character)
- 단순 자료형(char)
- 문자 선언: char letter;
- 문자열 할당: letter = 'A';
- 문자열 사용: System.out.println(letter);
- 문자열(String) 클래스
- 연속된 문자(character)들을 저장하고 다루기 위한 클래스
- 문자열 상수: ""로 둘러싸인 문자열 ➡️ 한번 만들어진 String 객체는 변경 불가 (immutable)
- 문자열 선언: String greeting;
- 문자열 할당: greeting = "Hello JAVA!";
- 문자열 사용: System.out.println(greeting);
- 특수 문자의 표현(Escape characters)
- System.out.print("Hello "JAVA!"");
- System.out.print("Hello \"JAVA!\"");
- System.out.print("Hello \"JAVA!\"\n");
- 문자열(String) 클래스 메모리
String str1;
String str2, str3;
str1 = "abc";
str2 = "cde";
str3 = str2;
str2 = str1.toUpperCase();
String str4 = str2.concat("??");
String str5 = "!".concat(str2).concat("@");
System.out.println("str1: " + str1);
System.out.println("str2: " + str2);
System.out.println("str4: " + str4);
System.out.println("str5: " + str5);
- 문자열(String) 클래스 연산
- + 연산
- String greet = "Hello";
- String name = "JAVA";
- System.out.println(greet+name+"!");
- System.out.println(greet+""+name+"!");
- index
- String 객체 내의 문자 인덱싱은 배열과 같이 0부터 시작됨
- charAt(position): 해당 위치의 문자를 반환
- substring(start, end): start부터 end까지의 문자들을 새로운 문자열로 반환
- + 연산
String greeting = "Hello JAVA";
greeting.charAt(0);
greeting.charAt(10);
greeting.substring(1,3);
public class StringTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String greet = "Hello";
String name = "JAVA";
System.out.println(greet+name+"!");
System.out.println(greet+" "+name+"!");
String greeting = "Hello JAVA!";
System.out.println(greeting.charAt(0));
System.out.println(greeting.charAt(10));
System.out.println(greeting.substring(0,5));
for(int i=0; i<greeting.length(); i++) {
System.out.println(greeting.charAt(i));
}
}
}
public class StringPratice {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = "JAVA Programming";
for(int i=0; i<str.length(); i++) {
System.out.print(str.charAt(i));
}
System.out.println("");
System.out.println(str.length());
// for(int i=0; i<20; i++) {
// System.out.print(str.charAt(i));
// }
// System.out.println("");
//
// System.out.println("배열의 길이 변경");5
String s="";
String str2 = "apple mango banana";
s=str2.replace(" ", ",");
System.out.println(s);
}
}
3. Wrapper Class
- 특정 클래스를 가리키는 이름이 아님
- 8개의 기본 데이터형을 객체 형식으로 다루기 위한 클래스들의 통칭
- 사용하는 이유
- 자바 세상에는 객체만 있기 때문에 객체를 대상으로 처리하는 경우가 많음
- 어떤 클래스는 객체만을 다루기 때문에 기본 데이터형을 쓸 수 없음
3.1 Wrapper 클래스 박싱(boxing)과 언박싱(unboxing)
- 기본 데이터 타입을 Wrapper 클래스로 변환하는 것: boxing
- Wrapper 클래스를 기본 데이터 타입으로 변환하는 것: unboxing