대입연산자는 좌항 우항의 타입이 같아야한다.

/* =(대입연산자)는 오른쪽에 있는 값을 왼쪽에 저장하는데, 타입이 같거나 변환이 가능해야한다. 
		 * 예1) 	String str = "1"; 
		 * 		int num = str; (은 문자열 1을 int에 저장하려고 해서 오류)
		 * 
		 * 예2) double dnum = 1; (은 정수 1이 자동타입변환이 되어서 실수double dnum에 저장될 수 있음)
		 * 예3) int num = (int) 1.0; (은 실수 1.0이 강제타입변환(앞에다가 타입을 강제로 씀)이 되어서 가능) */

initializeTest 초기화 (객체변수 초기화, 클래스변수 초기화 순서&종류)

public class initializeTest {	//초기화순서
	public static void main(String []args) {
		TestA ta = new TestA();
		System.out.println(ta.getNum());
		System.out.println(TestA.getRes());
	}
}
/* 객체 변수 초기화 순서 //생성자 초기화로 초기화하는게 코드다루기 편함
 * 1. 변수 선언시 기본값으로 초기화
 * 	- num는 0으로 초기화
 * 2. 명시적 초기화
 * 	- num는 1로 초기화
 * 3. 초기화 블록
 * 	- num= 3
 * 4. 생성자 초기화
 * 	- num는 2로 초기화 
 * 
 * -> 기본값이 아닌 값들은 생성자에서 초기화 하자, 그러면 항상 마지막이 생성자이기때문에 다른 초기화를 신경쓰지 않아도 돼(객체 변수에 한해서)
 * 
 * 클래스 변수	//생성자초기화는 객체없이 쓸수가 없자넝 그래서 클래스 변수는 그게 없어서 3개, 명시적 초기화가 코드다루기 편함
 * 1. 변수 선언시 기본값으로 초기화
 * 	-res를 0으로 초기화
 * 2. 명시적 초기화
 * 	-res를 10으로 초기화
 * 3. 초기화 블록
 * */
class TestA{
	private int num=1;	//변수선언 및 초기화, 명시적 초기화
	private static int res= 10;
	{					// {} 중괄호를 열고 닫는 사이에 써주면 그게 초기화 블록임, 초기화 블록: 객체변수
		num=3;			
	}	
	//초기화 블록 : 클래스 변수(static이 붙은거)
	static {
		res = 20;
	}
	
	public TestA() {	//생성자를 통해 초기화
		num=2;
	} 
	public int getNum() {
		return num;
	}
	public static int getRes() {	//static -> class
		return res;
	}
}

조건문과 반목분의 실행문이 한 줄일 경우, {}중괄호를 생략해도 된다.

public class ForTest {	//307p클래스까지 나간 진도임.

	public static void main(String[] args) {
		// 조건문과 반복문의 실행문이 1줄이면 생략 가능
		for(int i=1; i<=5; i+=1) //{	반복문의 중괄호하나를 지웠음에도 실행 잘 됨.
			System.out.print(i+ " ");
		//}	//중괄호지우기위해 주석처리
		
		
		
		
		int num=2;
		if (num%2==0) //{
			System.out.println("짝수");		//if문에 실행문이 한 줄이라서 중괄호 주석처리했는데도 실행 잘됨.
		/*}*/else //{
			System.out.println("홀수");		//else에 실행문이 한 줄이라서 중괄호 주석처리했는데도 실행 잘됨.
		/*}*/

}

InheritanceTest1

public class InheritanceTest1 {
	public static void main(String[] args) {
		Parent p = new Parent();	//부모클래스의 객체 p를 만들었음
		p.print();
		
		Child c = new Child();	//자식클래스의 객체 c를 만듦
		c.print();				//부모클래스의 내용을 물려받았기때문에 print가능함
	}
}
class Parent{
	public int num;
	private int num2;
	protected int num3;
	int num4;
	public void print() {
		System.out.println("num : " + num);
		
	}
}
class Child extends Parent{
	public void print2() {
		//System.out.println("num2 : " + num2);	//num2는 private로 되어있어서 에러남
		System.out.println("num3 : " + num3);
		System.out.println("num4 : " + num4);

	}
}

InheritanceTest2

public static void main(String[]args) {
		SmartPhone sp = new SmartPhone("010-1234-5678", "퍼시픽블루", "아이폰12pro");
		sp.print();
	}
}
//폰 클래스
class Phone{
	private String num;			//같은 패키지에서 사용할 수 있도록 private말고 default로 하겠음
	private String color;
	private String model;
	public Phone(String num, String color, String model) {	//생성자를 만들엉씀
		System.out.println("폰 생성자입니다.");
		this.num = num;
		this.color = color;
		this.model = model;
	}
	public Phone() {
		System.out.println("폰 기본 생성자입니다.");
	}
	public void print() {
		System.out.println("번호 : " + num);
		System.out.println("색상 : " + color);
		System.out.println("모델 : " + model);
	}
	public String getNum() {
		return num;
	}
	public void setNum(String num) {
		this.num = num;
	}
	public String getColor() {
		return color;
	}
	public void setColor(String color) {
		this.color = color;
	}
	public String getModel() {
		return model;
	}
	public void setModel(String model) {
		this.model = model;
	}
	
}
//스마트 폰 클래스
class SmartPhone extends Phone{
	int camera; 	//카메라 화소(단위 만)
	public SmartPhone(String num, String color, String model) {
		//부모 클래스의 생성자가 없으면 super();가 생략되어 있음
		super(num, color, model);	//부모클래스 생성자 얘를 호출하고 밑에 this.set 3개를 모두 지웠음. 그럼num, color, model은 부모클래스서 바꾸는거임
		//this();	//에러발생: 부모클래스의 생성자를 2번 호출하는 경우이기 때문 => SmartPhone(){}기본생성자에 super();가 생략되어있어서 결국 2번 초기화하라는 뜻이라서
							//super를 쓰던지, this를 쓰던지 그래서 둘 중 하나를 써야 함.
		System.out.println("스마트폰 생성자입니다.");
		//this.setColor(color);		//getter satter 쓴거임, Phone에서 private로 멤버변수 선언해서 =>주석처리(super쓰려고 일단 지워놨음)
		//this.setModel(model);;
		//this.setNum(num);;
	}
	public SmartPhone() {}	//기본생성자 
		//super(); 가 생략되어있는것
}

변수 구별하기, Variable Test

import day11.Board;

public class VariableTest {

	public static void main(String[] args) {
		int num5=0;		//일반변수, 지역변수
		String str3 = "Hello";	//참조변수, 객체(클래스 String을 통해 만들어짐), 지역변수
		
		int []arr = new int[5]; //참조변수, 배열, 지역변수
		Board[] board = new Board[5]; //참조변수, 배열, 지역변수
		
	}
}
class A{
	int num1;	//일반변수, 객체멤버변수
	static int num2;	//일반변수, 클래스멤버변수
	String str1;		//참조변수, 객체, 객체멤버변수
	static String str2;	//참조변수, 객체, 클래스멤버변수
	public A(int num3, int num4) {	// 일반변수, 매개변수 
		num1 = num3;
		num2 = num4;
	}
}
//모든 변수는 일반과 참조변수로 나뉜다. 값을 저장하면 일반, 주소를 저장하면 참조
//클래스 내에서 전체를 다 쓸 수 있으면 멤버변수, 일부 지역에서만 쓸 수 있으면 지역변수
//메소드에 전달하는 정보는 매개변수
//멤버변수는 1.클래스멤버변수 static 2.객체멤버변수 static(X)
//객체? 클래스를 통해만들어지는 것은 모두 객체, 배열은 그냥 배열

사각형, 원형 그리기

도형그리기 관련 코드들