◎ JAVA

Class에 장점

  1. 데이터가 묶인다.
  2. 자주 사용하는 코드를 묶을 수 있다.
  3. 효율성이 높아지지만 2개 클래스에서 나눠서 처리하기 때문에 속도는 느려진다.

2차원 배열

  • 표의 형태를 가진 데이터 저장소

  • 1차원 배열이 모인 형태

    	public class Test02 {
    		public static void main(String[] args) {
    
    			int[] a = new int[] {10, 20, 30};
    			int[] b = new int[] {40, 50, 60};
    	
    			for(int i = 0; i < a.length; i++) {
    				System.out.print(a[i]);
    				System.out.print("\t");
    			}
    			System.out.println();
    	
    			for(int i = 0; i < b.length; i++) {
    				System.out.print(b[i]);
    				System.out.print("\t");
    			}
    			System.out.println();		
    		}
    	}

참조변수 this

  • 코드가 실행 될 당시의 주인공(=객체 자신을 의미한다.)
  • this 참조 변수는 인스턴스가 자기 자신을 참조하는데 사용하는 변수이다.
  • 객체 내부에 있는 인스턴스 멤버에 접근하기 위해서 this를 사용한다.

생성자 this()

  • 같은 클래스의 다른 생성자를 호출할 때 사용하며, 생성자 내부에서만 사용 가능하다.
  • this() 메서드에 인수를 전달하면, 다른 생성자 중에서 메서드가 일치하는 다른 생성자를 찾아서 호출한다.
  • 생성자가 아닌 일반 메소드에서 this()를 사용할 수 없다.
  • this()의 호출문은 반드시 생성자 코드의 첫 번째 문장이 되어야 한다.

메서드(method)

  • 커피숍 메뉴 정보 문제

    	public class CoffeeShop {	
    		//member field (=멤버 필드,멤버 변수,인스턴스 변수) - 데이터 저장
    		String name; //이름
    		String sort; //분류
    		int price; //가격
    		boolean event; //행사여부
    		int eventPercent = 20; //할인 퍼센트
    
    		//같은 이름으로 형태만 다르게 메소드를 구현 - 메소드 오버로딩(method overloading)
    		//void setting(String name, String sort, int price) {
    		//this.name = name;
    		//this.sort = sort;
    		//this.price = price;
    		//this.event = false; 
    		//}
    
    		//위와 같이 메소드 오버로딩 할 경우에 중복코드가 생기므로 아래와 같이 코드를 간소화해서 메소드 오버로딩 한다.
    		void setting(String name, String sort, int price) {
    			this.setting(name, sort, price, false);
    	}
    		//member method (멤버 메소드) - 기능 구현(코드 저장)
    		void setting(String name, String sort, int price, boolean event) {
    			this.name = name;
    			this.sort = sort;
    			this.price = price;
    			this.event = event;
    		}
    
    		//member method (멤버 메소드) - 기능 구현(코드 저장)
    		void output() {
    			System.out.print(this.sort);
    			System.out.print(" ");
    
    			if(this.event) { //(this.event == true) true일 경우에는 생략함.
    				System.out.print(this.name + "(행사중)");
    				System.out.print(" ");
    				//eventPrice는 외부에서 가져다와서 쓰는 멤버 변수가 아니므로 this를 사용하지 않음.
    				int eventPrice = price * (100 - eventPercent) / 100;
    				System.out.print(eventPrice + "(" + this.price + "원)");
    				System.out.print(" ");
    				System.out.print("행사중");
    				System.out.print(" ");
    			}
    			else {
    				System.out.print(this.name);
    				System.out.print(" ");
    				System.out.print(this.price + "원");
    				System.out.print(" ");
    				System.out.print("-");
    			}
    			System.out.println();	
    		}
    	}
    
    	public class Test01 {
    		public static void main(String[] args) {
    	
    			//객체 생성 (c1, c2, c3는 참조변수)
    			CoffeeShop c1 = new CoffeeShop();
    			CoffeeShop c2 = new CoffeeShop();
    			CoffeeShop c3 = new CoffeeShop();
    			CoffeeShop c4 = new CoffeeShop();
    	
    			//데이터 초기화
    			//오버로딩으로 인하여 값이 없는 경우에는 값을 입력하지 않아도됨.
    			c1.setting("아메리카노", "음료", 2500, true);
    			c2.setting("모카라떼", "음료", 3500);
    			c3.setting("치즈케이크", "디저트", 5000);
    			c4.setting("마카롱", "디저트", 3000, false);
    	
    			//데이터 출력
    			System.out.println("분류   이름          가격        행사여부");
    			c1.output();
    			c2.output();
    			c3.output();
    			c4.output();
    		}
    	}

Java(JVM)에게 메세지란 이렇게 생겼다고 알려주기 위해 만든 영역

- 메세지 = 작성자(String) + 내용(String) + 전송시각(String) + 안읽은사람수(int) 

package oop.test1;
	public class Message {

	//멤버 필드 : 클래스를 구성하는 세부 데이터를 저장하는 변수
	String writer; //메세지에는 작성자가 있어야 해요
	String content; //메세지에는 내용이 있어야 해요
	String time; //메세지에는 전송시각이 있어야 해요
	int remain; //메세지에는 안읽은사람수가 있어야 해요
	}


public class Test01 {
	public static void main(String[] args) {
		//카톡 메세지 2개
		//- 낱개 데이터가 아니라 미리 만들어둔 Message 클래스의 객체를 생성
		Message m1 = new Message(); // m1 변수 한 개를 생성
		//m1 -------> {writer:null, content:null, time:null, remain:0}

		m1.writer = "초롱초롱 라이언";
		m1.content = "언제와?";
		m1.time = "15시 02분";
		m1.remain = 1;
	
		//System.out.println(m1); //리모컨 정보 (리모컨형태@일련번호(주소 아님))
		System.out.println(m1.writer); //m1 대상에 있는 writer 접근 후 출력
		System.out.println(m1.content); //m1 대상에 있는 content 접근 후 출력
		System.out.println(m1.time); //m1 대상에 있는 time 접근 후 출력
		System.out.println(m1.remain); //m1 대상에 있는 remain 접근 후 출력
	
		Message m2 = new Message();
			
		System.out.println(m2.writer);
		System.out.println(m2.content);
		System.out.println(m2.time);
		System.out.println(m2.remain);	
	}
}
profile
Backend Developer

0개의 댓글