public class Ex05{
	public static void main(String[] args){
    	String s1, s2;
        int a, b;
        
        s1="123";
        s2="456";
        System.out.println(s1+s2); // 문자열 결합
        
        // 문자열을 정수로 변환
        a = Integer.parseInt(s1);
        b = Integer.parseInt(s2);
        System.out.println(a+b);
        
        // a = Integer.parseInt("1,234"); // 런타임오류 (NumberFormatException)
		// a = Integer.parseInt("123.4"); // 런타임오류 (NumberFormatException)
		
        a = Integer.parseInt("b1", 16); // b1이 16진수 일 때.
        // a = Integer.parseInt("b1") 이렇게만 쓰면 런타임 오류!
        System.out.println(a); // 177
        
        a = Integer.parseInt("1011", 2);
        System.out.println(a); // 11
        
        a = 123;
        s1 = Integer.toString(a); // 정수를 String으로 바꿈.
        System.out.println(s1);
        
        s1 = Integer.toBinaryString(a); // 2진수로 표현한 문자열로 반환
        System.out.println(s1);
        
        s1 = Integer.toHexString(a); // 16진수로 표현한 문자열로 반환
        System.out.println(s1);
        
        System.out.println("정수 최댓값:"+Integer.MAX_VALUE);
        System.out.println("정수 최솟값:"+Integer.MIN_VALUE);
        
    }
}

public class Ex04 {
	public static void main(String[] args) {
    	// null : 객체가 참조하는 영역이 없는 것을 나타낸다.
        
        // int a = null; 기본 자료형은 null을 가질 수 없다.
        
        // int 에 대응하는 Wrapper 클래스
        Integer ii = null;
        int a = 10, b;
        
        ii = a; // 기본 자료형(int)이 Integer 형으로 자동 변환
        		// 실제로는 ii = new Integer(a); -> 컴파일 할 때 Autoboxing
        b = ii; // Integer를 기본 자료형(int)으로 자동 변환
        		// 실제로는 b = ii.intValue(); -> 컴파일 할 때 Auto-unboxing
        
        System.out.println(ii+","+a+","+b);
    
    }
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0719_Ex06_Java API : Double.parseDouble(String)  (0) 2021.07.19
0719_Ex05_Java API : Integer  (0) 2021.07.19
0719_Ex03 Java API : Object clone  (0) 2021.07.19
0719_Ex02_Java API : Object  (0) 2021.07.19
0719_Ex01_Java API : Math  (0) 2021.07.19
punlic class Ex03{
	public static void main(String[] args){
    	Test3 t1 = new Test3();
        t1.setName("홍길동");
        t1.setAge(20);
        
        Test3 t2 = t1; // t1, t2 : 동일한 영역을 참조.
        System.out.println(t1 == t2);
        
        t1.print();
        t2.print();
        
        Test3 tt = new Test3();
        tt.setName("홍길동");
        tt.setAge(20);
        System.out.println(t1 == tt);
        
        // Object clone() : 새로운 객체를 생성하여 필드 값을 복사(객체 복제)
        Test3 t3 = (Test3) t1.clone();
        System.out.println(t1 == t3);
        t3.print();
    }
}
class Test3 implements Cloneable { // Cloneable 인터페이스 구현
	private String name;
    private int age;
    
    public String getName() {
    	return name;
    }
    public void setName(String name) {
    	this.name = name;
    }
    public int getAge() {
    	return age;
    }
    public void setAge(int age) {
    	this.age = age;
    }
    public void print() {
    	System.out.println(name+":"+age);
    }
    public Object clone() { // clone() 메솓, 재정의(override)
    	Object obj = null;
        
        try {
        	obj = super.clone();
        } catch (Exception e) {
        }
        return obj;
    }
    
}

 

t1, t2  는 동일한 영역을 참조하기 때문에 t1 == t2 는 true

tt는 new로 객체를 새롭게 생성했기 때문에 t1 == tt 는 false

 

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0719_Ex05_Java API : Integer  (0) 2021.07.19
0719_Ex04_Java API : Integer  (0) 2021.07.19
0719_Ex02_Java API : Object  (0) 2021.07.19
0719_Ex01_Java API : Math  (0) 2021.07.19
0716_Ex04_Calendar  (0) 2021.07.19
public class Ex02 {
	public static void main(String[] args) {
    	// Test2의 상위 클래스 : Object
        Test2 t1 = new Test2();
        Test2 t2 = new Test2();
        Test2 t3 = t1;
        
        // toString() 메소드는 Object 메소드로 "클래스명@해쉬코드"를 반환한다.
        // 해쉬코드 : JVM이 해당 객체를 빠르게 검색할 수 있도록 만들어진 값.
        // 동일한 객체는 해쉬코드가 같지만, 해쉬코드가 같다고 동일한 객체는 아니다.
        // Object 클래스 : 모든 클래스의 최상위 클래스
        // 상위 클래스의 public, protected 접근제어자의 메소드나 필드는 모든 하위 클래스에서 사용 가능하다.
        System.out.println(t1.toString());
        System.out.println(t1);
        
        System.out.println( t1 == t2 );
        System.out.println(t1.equals(t2));
        
        System.out.println(t1.equals(t2));
        
        System.out.println(t1.equals(t3));
        
        System.out.println(t1.hashCode()); // 10 진수로 출력
        System.out.println("%h\n", t1.hashCode()); // 16진수로 출력        
    }
}
class Test2 {
}

동일한 객체는 해쉬코드가 같지만, 해쉬코드가 같다고 동일한 객체는 아니다.

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0719_Ex04_Java API : Integer  (0) 2021.07.19
0719_Ex03 Java API : Object clone  (0) 2021.07.19
0719_Ex01_Java API : Math  (0) 2021.07.19
0716_Ex04_Calendar  (0) 2021.07.19
0716_Ex03_singleton 패턴  (0) 2021.07.19
// *은 그 안에 있는 모든 것을 import 하겠다는 의미!

import java.util.Scanner;
import static java.lang.Math.*;
// ctrl+shift+o : 자동 import
public class Ex01 {
	public satic void main(String[] args){
    	// java.util.Scanner sc = new java.util.Scanner(System.in); 
        // Scanner 는 현재 폴더 안에 없기 때문에 사용할 때 package 명을 넣어 불러온다.
        Scanner sc = new Scanner(System.in);
        // String name; // String은 import를 안해도 Java가 알아서 해준다.
        
        int r;
        double a;
        
        System.out.print("반지름 ? ");
        r = sc.nextInt();
        
        // a = r * r * Math.PI;
        a = r * r * PI; // Math package안에 있는 PI (클래스 변수) 
        System.out.println(a);
        
        sc.close;
    }
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0719_Ex03 Java API : Object clone  (0) 2021.07.19
0719_Ex02_Java API : Object  (0) 2021.07.19
0716_Ex04_Calendar  (0) 2021.07.19
0716_Ex03_singleton 패턴  (0) 2021.07.19
0716_Ex02_ final  (0) 2021.07.19
import java.util.Calendar;

public class Ex04{
	public static void main(String[] args) {
    	Calendar cal = Calendar.getInstance();
        System.out.printf("%tF %rA %tT\n", cal, cal, cal);
        
        MyCalendar mc = new MyCalendar();
        System.out.println(mc.getDate());
    }
}
class MyCalendar {
	private int year;
    private int month;
    private int date;
    
    public MyCalendar() {
    	Calendar cal = Calendar.getInstance();
        // 오늘 컴퓨터 시스템 시간 및 날짜로 Calendar 객체 생성
        
        year = cal.get(Calendar.YEAR);
        month = cal.get(Calendar.MONTH)+1;
        // cla.get(Calendar.MONTH) : 0~11
        date = cal.get(Calendar.DATE);
        
        // Calendar 객체에서 가져온 값들을 MyCalendar의 필드에 초기화 시켜줌.
    }
    
    public MyCalendar(int year, int month, int date) {
    	this.year = year;
        this.month = month;
        this.date = date;
    }
    
    public String getDate() {
    	String s = year + "年" + month + "月" + date + "日";
        return s;
    }
    
}

자바자체에서 Calendar를 손쉽게 가져와서 쓸 수 있게 해놓은 기능이 있어서 굳이 MyCalendar로 안해도 되지만, 어떻게 도는지 알기 위해서 !

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0719_Ex02_Java API : Object  (0) 2021.07.19
0719_Ex01_Java API : Math  (0) 2021.07.19
0716_Ex03_singleton 패턴  (0) 2021.07.19
0716_Ex02_ final  (0) 2021.07.19
0716_Ex01 : 초기화 블럭  (0) 2021.07.18
public class Ex03 {
	public static void main(String[] args) {
    	// Test3 tt - new Test3(); 컴파일 오류. 생성자가 private 이므로 외부에서 생성불가
        
        Test3 ob1 = Test3.getInstance();
        Test3 ob2 = Test3.getInstance();
        
        System.out.println(ob1);
        System.out.println(ob2);
        System.out.println(ob1 == ob2); 
    }
}
class Test3 {
	private static Test3 tt = null;
    
    private int a = 10;
    // 생성자가 private이면 외부에서 객체 생성불가
    private Test3(){
    }
    
    public static Test3 getInstance(){
    	if(tt == null) {
        	tt = new Test3();
        }
        return tt;
    }
    
    public void sub() {
    	System.out.println(a+":"+a);
    }
}

 

소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다.

출처 : https://ko.wikipedia.org/wiki/%EC%8B%B1%EA%B8%80%ED%84%B4_%ED%8C%A8%ED%84%B4

 

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0719_Ex01_Java API : Math  (0) 2021.07.19
0716_Ex04_Calendar  (0) 2021.07.19
0716_Ex02_ final  (0) 2021.07.19
0716_Ex01 : 초기화 블럭  (0) 2021.07.18
0715_Ex09_this  (0) 2021.07.18
public class Ex02 {
	public static void main(String[] args){
    	System.out.println(Test2.a);
        
        Test2.a = 20;
        System.out.println(Test2.a);
        
        System.out.println(Test2.PI);
        // Test2.PI = 3.5; 컴오류. 값을 변경할 수 없음.
    }
}
class Test2 {
	public static int a = 10;
    // 한번만 초기화 되며 값을 변경할 수 없음. 파이널 변수는 보통 대문자로 만든다.
    public final stitic double PI = 3.141592;
    public final static int x;
    static { // statix 블럭에서 final static 변수 초기화
    	x = 5;
    }
    
    final int b = 10;
    final int c;
    
    public Test2() {
    	// x= 10; final static 변수는 생성자에서 초기화 불가.
        
        c = 10; // final 인스턴스 변수는 생성자에서 단 한번 초기화 가능.
    }
    
    public void sub() {
    	// c = 5; 컴오류. instance final 변수의 값은 일반 메소드에서 변경 불가
    }
    
}

'쌍용강북교육센터 > 7월' 카테고리의 다른 글

0716_Ex04_Calendar  (0) 2021.07.19
0716_Ex03_singleton 패턴  (0) 2021.07.19
0716_Ex01 : 초기화 블럭  (0) 2021.07.18
0715_Ex09_this  (0) 2021.07.18
0715_Ex08_this  (0) 2021.07.18

+ Recent posts