june__Park 2021. 3. 23. 10:57
package week4;

/*
 * 클래스
 -- 여러개의 자료 타입을 저장하기 위해서 만든
사용자 정의 자료 타입이다
메서드 -- 함수
하나의 기능구현하는 코드블록을
여러번 재사용 할 수있게 만든것 --> 메서드
코드의 간결성 , 생산적 --> 가독성 좋아진다
메서드 : 무조건 클래스를 인스턴스화 : 객체로
만들어서 접근이 가능하다 : --> new 클래스이름();  --> 클래스 인스턴스화 : 클래스 객체 (heap)
그 힙에서 만든 메모리의 주소를 호출 한곳 , main 안에 사용하는 이름으로 주소 변수만든다
  Random rand = new Random();
  -----------   ------------
  메인(stack)에서  heap 만들어지고
    rand            주소를
  객체로 heap     rand 줌
  주소 가진
  값 한개
 heap ==> new 모든것들이 들어가고
 int arr[] = {10,20,30,40,50}   // new int[5] , arr[0] =10...
 지역변수 -> 메서드영역 안 / 갈색 / stack 있는 메서드 영역에서 메모리공간 차지
          -> 메서드가 끝나면 stack 메모리가 사리질때 같이 사라지는 애
         -> 초기값을 가져야만 변수 생성이 가능
 전역변수 -> 클래스영역 안, 메서드 영역 밖 : 파란색 / new 할때 heap 메모리 안에 생성이 된다
          -> 클래스 객체 변수(주소값) .(점) 접근이 가능하다
           -> 초기값이 없으면 자동으로 초기값을 생성 ,, 숫자 -> 0 숫자가 아니면 -> null 
 */

//클래스를 만들려면 class 클래스 키워드 + 클래스이름(대문자로 시작 ) {} // {}는 클래스 영역 
class MyClass {
	int dnum;
	double fnum;
	char a;
	String name;
}

public class Class1 {
	public static void main(String[] args) {
		// 변수 --> 값을 한개 저장하는 애
		// 기본형 변수 - 실질적으로 값이 들어가 있음
		// int double float short byte char boolean long
		// 나머지는 모두 참조형 변수 -- > 주소값 1개를 저장하는 애다
		int num = 10;
		// 배열은 변수는 한개 저장 못하니깐 여러개 저장하기 위해서 등장
		int numarr[] = new int[10];
		numarr[0] = 10;
		numarr[1] = 20;
		// numarr[2]="30";
		// 배열의 한계는 같은 자료형 타입만 저장할 수 있다
		// 한번 배열의 크기를 저장하면 그 크기를 변경할 수 없다
		// 배열의 크기를 자동으로 변경하게 만들어주는 애 ---> Vector , Arraylist
		// 나는 여러개의 자료형을 배열로 넣고싶어 --> 클래스가 등장 -> 사용자 지정 자료형 타입
		// int String double char
		// 변수를 만든다 (변수 생성 )
		// 자료형타입 + 변수사용할 이름 = 변수에 넣을 값
		MyClass mc = new MyClass();
		// 사용자 클래스 이름 사용할 변수이름 = new 사용할 클래스이름();
		mc.dnum = 10;
		mc.fnum = 3.14;
		mc.a = 't';
		mc.name = "홍길동";
	}
	
	/*
	 public static void main(String[] args) {
		MyClass mc2 = new MyClass();
		// 클래스는 같은 패키지 안에 다른 클래스 사용이 가능하다 
		System.out.println(mc2.a);
		System.out.println(mc2.dnum);
		System.out.println(mc2.fnum);
		System.out.println(mc2.name);
		Scanner sc = new Scanner(System.in);
	}
	 */
}

 

package week4;

class Ex04{
	//색깔이 파란색이다 
	int x;
	int y; 
}
public class Class2 {
	public static void main(String[] args) {
		//객체지향                                vs 절차지향 
		// 자바                                 c언어  : 코드에서 무조건 위에서부터 아래로 순서대로 작동한다 
		//꼭 위에서 부터 시작하는것이 아니라 
		//객체를 만들어서 사용한다 --> 인스턴스화 new : 객체를 만든다 
		// 지역변수  -- 메스드영역안 그래서 stack 안에서 만들어지고 , 반드시 초기값을 가져야한다 
		// 전역변수 : 멤버변수 ==> class 곧 멤버  --> 클래스영역 안 메스드 영역밖 
		// 인스턴스(객체) 변수 --> 객체를 만들때 같이 만들어지는 애 --> 자동 초기값을 가진다 : 파란색 
		// 숫자 --> 0 
		//숫자 아니면 --> null로 자동 초기값을 가진다 
		//클래스변수 (static) 파란색 + 이탈릭체 -> 기울러진 글꼴 
		//지역변수는 색갈이 갈색이다 
		int x = 0;
		int y = 0;
	}
}