Part19 - api

uglyduck.dev·2020년 9월 27일
0

예제로 알아보기 👀

목록 보기
19/22
post-thumbnail
post-custom-banner

Ex01_Object

package com.mywork.ex;
/*
java.lang.Object 클래스
    1. 모든 클래스의 슈퍼클래스(super)이다.
    2. 모든 클래스는 자동으로 Object 클래스를 상속받는다.
    3. 따라서, 모든 클래스는 Object 클래스의 메소드를 사용할 수 있다.
    4. 모든 클래스 및 데이터는 Object 클래스에 저장할 수 있다.
    5. 주요 메소드
        1) clone() : 인스턴스 복제
            - 실제 복제 기능은 Object 클래스의 clone() 에 정의되어 있다.
            - 반드시 Cloneable 인터페이스를 구현(implements)해야 한다.
            - CloneNotSupportedException 예외 처리를 해야 한다.	(try ~ catch문 사용)
            - 본래 clone() 메소드의 접근 지시자(protected)를 public으로 변경한다.
        2) equals() : 인스턴스 동등 비교
        3) getClass() : 클래스 알아내기
        4) hashCode() : 해시코드 값 알아내기
        5) toString() : 인스턴스 출력 준자열 반환  output() 메소드 안만들어도 객체(인스턴스)를 출력할수있다.
*/
class Sample {
	@Override
	public String toString() {
		return "Sample";
	}
}

public class Ex01_Object {

	public static void main(String[] args) {
		
		Object object = new Object();
		
		object = 10;
		System.out.println(object);
		
		object = "HELLO";
		System.out.println(object);
		
		object = new Sample();
		System.out.println(object.toString());
		System.out.println(object);
		
		
	}

}

Ex02_Object

package com.mywork.ex;

class Computer{
	
	// Field
	private String model;
	private int price;
	
	// Constructor
	public Computer(String model, int price) {
		this.model = model;
		this.price = price;
	}
	
	// Method
	@Override
	public String toString() {
		String info = "모델 : " + model + ", 가격 : " + price + "만원";
		return info;
	}
	@Override
	public boolean equals(Object obj) {
		if(obj != null && obj instanceof Computer) {
			return model.equals(((Computer)obj).model) && price == ((Computer)obj).price;
		}else{
			return false;
		}
	}
	
}
public class Ex02_Object {

	public static void main(String[] args) {
		Computer myComputer1 = new Computer("삼성센스", 100);
		Computer myComputer2 = new Computer("삼성센스", 100);
		
		System.out.println(myComputer1);
		System.out.println(myComputer2);
		
		// 1. == : 주소 비교
		if(myComputer1 == myComputer2) {
			System.out.println("같은 종류의 컴퓨터이다.");
		}else {
			System.out.println("다른 종류의 컴퓨터이다.");
		}
		
		// 2. equals
		// 	1) Object 의 equals 메소드 : 객체 비교 불가!
		//	2) Computer 클래스에 equals 메소드 오버라이드 하면 : 객체 비교 가능!
		if(myComputer1.equals(myComputer2)) {
			System.out.println("같은 종류의 컴퓨터이다.");
		}else {
			System.out.println("다른 종류의 컴퓨터이다.");
		}
	}

}

Ex03_Object

package com.mywork.ex;

class Person implements Cloneable{
	
	// Field
	private String name;
	private int age;
	
	// Constructor
	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	// Method
	@Override
	public String toString() {
		return "이름 : " + name + ", 나이 : " + age + "살";
	}
	
	@Override
	public Object clone() {
		Object obj = null;			// 초기화
		try {						// try ~ catch 문 이용
			obj = super.clone();	// 복제한 Object를 obj에 복제
		} catch (CloneNotSupportedException e) {
			e.printStackTrace();
		} 
		return obj;					// 리턴 obj
	}
	
}

public class Ex04_Object {

	public static void main(String[] args) {
		
		Person woman = new Person("alice", 20);
		System.out.println(woman);
		
		Person cloneWoman = (Person)woman.clone();	// Object를 리턴해주기때문에 Person으로 캐스팅 작업을 해야한다.
		System.out.println(cloneWoman);
				
	}

}

Ex04_String

package com.mywork.ex;

public class Ex05_String {

	public static void main(String[] args) {
		
		String a = "apple";
		String b = "apple"; //"apple" 하나만 만들어 진다!
		
		System.out.println(a == b ? "apple 1개" : "apple 2개");
		
		String c = new String("banana");
		String d = new String("banana");
		
		System.out.println(c == d ? "banana 1개" : "banana 2개"); //"banana" 두 개가 만들어 진다!! (강제성)
		
		// split
		String sn = "951212-1234567";
		String[] snArr = sn.split("-"); //하이픈(-) 기준으로 하이픈은 제외하고 분리하여 각각 배열에 저장
		
		for(String s : snArr) {
			System.out.println(s);
		}
		
		String today = "2019.10.27";
		String[] todayArr = today.split("\\.");  // 점(.) 기준으로 점을 제외하고 분리하여 각각 배열에 저장 
		for(String t : todayArr) {
			System.out.println(t);
		}
		
		// join -> 분리된 배열을 하이픈(-) 기준으로 합쳐주는 메소드.
		String today2 = String.join("-", todayArr);	
		System.out.println(today2);
		
		// valueOf
		// 정수 -> 문자열 : String.valueOf(10) == "10"
		// 실수 -> 문자열 : String.valueOf(1.5) == "1.5"
		
		// substring
		// substring(시작인덱스) : 시작인덱스부터 끝까지 추출
		// substring(시작인덱스, 종료인덱스) : 시작은 포함, 중료는 *불포함(종료 전*)
		String phone = "010-1234-5678";
		String phone1 = phone.substring(0, 3); // 종료인덱스-시작인덱스 == 추출할 글자 수
		String phone2 = phone.substring(4, 8); 
		String phone3 = phone.substring(9); 
		
		System.out.println(phone1);
		System.out.println(phone2);
		System.out.println(phone3);
		
	}

}

Ex05_StringBuffer

package com.mywork.ex;

public class Ex06_StringBuffer {

	public static void main(String[] args) {
		
		StringBuffer sb1 = new StringBuffer("apple");
		StringBuffer sb2 = new StringBuffer("apple");
		
		System.out.println("sb1 해시코드 값(주소값)=" + sb1.hashCode());
		System.out.println("sb2 해시코드 값(주소값)=" + sb2.hashCode());
		
		// 검색 : 해시코드 비교 -> 동등 비교
		
		// StringBuffer는 문자열을 만들어내는 경우에 사용한다.
		StringBuffer sb = new StringBuffer();
		
		System.out.println("기본 버퍼크기 : " + sb.capacity());
		
		// sb에 문자열 추가
		// append(추가할 값)
		sb.append("hello");
		sb.append(" java").append(" world");	// chaining 기법
		System.out.println(sb);
		
		// 삭제
		StringBuffer phone = new StringBuffer();
		phone.append("010-1234-5678");
		phone.deleteCharAt(3);
		phone.deleteCharAt(7);
		System.out.println(phone);
		
	}

}

Ex07_Wrapper

package com.mywork.ex;

/*
 * Wrapper Class
 * 1. primitiveType -> referenceType 변경해 주는 클래스
 * 2. 종류
 *    1) int     -> Integer
 *    2) double  -> Double
 *    3) boolean -> Boolean
 *    4) char    -> Character
 * 3. 변수를 "객체"로 변환해 주는 클래스
 * 4. 반드시 referenceType 을 사용해야 하는 경우가 있다. 그럴 때 사용한다.
 */
public class Ex07_Wrapper {

	public static void main(String[] args) {
		
		Integer a = new Integer(10);  // 10 을 저장한 객체(인스턴스) a
		Integer b = new Integer(1);
		
		// 동등 비교
		System.out.println("저장된 위치 비교 : " + (a == b));
		System.out.println("저장된 내용 비교 : " + a.equals(b));
		
		// 크기 비교
		// a.compareTo(b)	: 결과는 a - b 를 통해서 계산
		// a.compareTo(b)	: a > b  결과  1
		// a.compareTo(b)	: a < b  결과 -1
		// a.compareTo(b)	: a == b 결과  0
		System.out.println("두 객체에 저장된 값의 크기 비교 : " + a.compareTo(b));
		
		// Auto Boxing, Auto UnBoxing
		// 값 -> 객체 : Boxing
		// 객체 -> 값 : UnBoxing
		
		// Auto Boxing
		Integer c = 100;
		Integer d = 200;
		
		// Auto UnBoxing
		int result = c + d;
		System.out.println(result);
		
	}

}

Ex08_Big_number

package com.mywork.ex;

import java.math.BigDecimal;
import java.math.BigInteger;

public class Ex08_Big_number {
	public static void main(String[] args) {
		
		// int 형 최대값
		System.out.println(Integer.MAX_VALUE);
		
		// long 형 최대값
		System.out.println(Long.MAX_VALUE);
		
		// BigInteger 클래스 활용해서 long 타입 이상/이하 사용가능
		BigInteger a = new BigInteger("12345678901234567890");
		BigInteger b = new BigInteger("123456789012345678901234567890");
		
		// BigInteger 필드 값
		System.out.println(BigInteger.ZERO);
		System.out.println(BigInteger.ONE);
		System.out.println(BigInteger.TEN);
		
		// 사칙연산
		System.out.println(a.add(b));
		System.out.println(a.subtract(b));
		System.out.println(a.multiply(b));
		System.out.println(a.divide(b));
//		System.out.println(a.divideAndRemainder(b));	// 나머지도 같이 구한다. (배열형식)
		
		// BigDecimal 클래스로 실수의 소수 자릿수를 제한 없이(손실 없이) 사용
		double d = 1.123456789123456789;
		System.out.println(d);
		
		BigDecimal e = new BigDecimal("1.123456789123456789");
		System.out.println(e);
	}

}

Ex09_Calendar

package com.mywork.ex;

import java.util.Calendar;

public class Ex09_Calendar {

	public static void main(String[] args) {
		
		Calendar cal = Calendar.getInstance(); // 싱글 톤 패턴 : 오직 하나로만의 인스턴스만 생성
		
		// 2019-10-21
		cal.set(2019, 9, 21, 11, 34, 10);
		
		// 년, 월, 일
		System.out.println("년 : " + cal.get(Calendar.YEAR)) ;
		System.out.println("월 : " + (cal.get(Calendar.MONTH) + 1)) ; // 월 (0 ~ 11) 
		System.out.println("일 : " + cal.get(Calendar.DAY_OF_MONTH)) ;
		
		// 요일번호 : 일(1), 월(2) , , , 토(7) 
		System.out.println("요일번호 : " + cal.get(Calendar.DAY_OF_WEEK));
		
		// 시, 분, 초
		System.out.println("오전/오후 : " + cal.get(Calendar.AM_PM));  // 오전(0), 오후(1)
		System.out.println("시 : " + cal.get(Calendar.HOUR));        // 12시각제 (0 ~ 11)
		System.out.println("시 : " + cal.get(Calendar.HOUR_OF_DAY)); // 24시각제 (0 ~ 23)
		System.out.println("분 : " + cal.get(Calendar.MINUTE));
		System.out.println("초 : " + cal.get(Calendar.SECOND));
		
		System.out.println("밀리 초 : " + cal.get(Calendar.MILLISECOND)); // 1/1000초
		System.out.println("밀리 초->초 : " + (cal.get(Calendar.MILLISECOND) / 1000.0) + "초");
		
		// 현재 날짜를 밀리초로 반환 -> 두 날짜의 시간 차이, 날짜 차이를 구하기 위함
		System.out.println(cal.getTimeInMillis());
	}

}

Ex10_Date_SimpleDateFormat

package com.mywork.ex;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Ex10_Date_SimpleDateFormat {

	public static void main(String[] args) {
		Date now = new Date();
		System.out.println(now);
		
		// SimpleDateFormat
		// 년 : yy, yyyy
		// 월 : M, MM	-> 분과 구분하기 위해서 대문자
		// 일 : d, dd
		// 요일 : E
		// 오전오후 : a
		// 시 : hh(12시각), HH(24시각)
		// 분 : mm
		// 초 : ss
		
		// 2019년 10월 21일 월요일
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 E요일");
		String today = sdf.format(now);
		
		System.out.println(today);
	}

}

Ex11_Calendar_Date_SimpleDataFormat

package com.mywork.ex;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Ex11_Calendar_Date_SimpleDataFormat {

	public static void main(String[] args) {
		
		Calendar cal = Calendar.getInstance();
		
		Date now = cal.getTime();
		
		SimpleDateFormat sdf = new SimpleDateFormat("a hh시 mm분 ss초");
		
		String today = sdf.format(now);
		
		System.out.println(today);
	}

}
profile
시행착오, 문제해결 그 어디 즈음에.
post-custom-banner

0개의 댓글