2021. 03. 31(カウント)TIL



Java


package day3;

public class Sample {
	
	// 기본자료형 타입 매개변수 - 값을 전달받는다.
	void test1(int x, int y) {
		System.out.println("x의 값 : " + x);
		System.out.println("y의 값 : " + y);
		
		System.out.println("전달받은 값 변경하기");
		
	}
	
	// 참조자료형 타입 매개변수 -  주소값을 전달받는다.
	// 매개변수의 타입이 참조자료형 타입인 경우 반드시 해당 타입의 클래스로 생성된 객체의 주소값이
	// 매개변수로 전달되어야 한다. (null값을 전달하는 것도 가능하다)
	void test2(MyNumber number) {
		System.out.println("전달받은 객체의 x값 : " + number.x);
		System.out.println("전달받은 객체의 y값 : " + number.y);
		
		// 참조하는 객체의 x값, y값 변경하기
		System.out.println("전달받은 객체의 x값, y값을 변경하기");
		number.x = 500;
		number.y = 1000;
	}
}
package day3;

public class SampleApp {
	public static void main(String[] args) {
		Sample sample = new Sample();
		
		// 기본자료형 타입의 매개변수를 가지는 메소드 호출하기
		// voiud test1(int, int)
		int x = 10;
		int y = 50;
		
		System.out.println("### test1() 메소드 실행 시작");
		sample.test1(x, y);
		System.out.println("### test1() 메소드 실행 완료");
		System.out.println("x의 값 : " + x);
		System.out.println("x의 값 : " + y);
		
		System.out.println("----------------------------------------------");
		
		
		// 참조자료형 타입의 매개변수를 가지는 메소드 호출하기
		// void test2(MyNumber)
		MyNumber mn = new MyNumber();
		sample.test2(mn);
		mn.x = 100;
		mn.y = 200;
		System.out.println("### test2() 메소드 실행 전 객체의 x값, y값 출력하기");
		System.out.println("MyNumber객체의 x값 : " + mn.x);		// 100
		System.out.println("MyNumber객체의 y값 : " + mn.y);		// 200
		
		System.out.println("### test2() 메소드 실행 시작");
		sample.test2(mn); // mn 참조변수가 참조하는 MyNumber객체의 주소값을 test2 메소드에게 전달
		System.out.println("### test2() 메소드 실행 완료");
		
		System.out.println("### test2() 메소드 실행 후 객체의 x값, y값 출력하기");
		System.out.println("MyNumber객체의 x값 : " + mn.x);		// 500
		System.out.println("MyNumber객체의 y값 : " + mn.y);		// 1000
		
	}
}

せいてきへんすう
  • を静的に貼り付けます.
  • オブジェクトを作成する必要はありません.クラス名、変数名
  • すべてのオブジェクトで共通に使用する値は、静的変数
  • として定義される.
  • 州、プログラムの実行時に変わらない定数値は静的変数
  • として格納される.
    スタティツクメソッド
  • を静的に貼り付けます.
  • オブジェクトを作成する必要はありません.「クラス名.メソッド名(値)」
  • オブジェクトのメンバー変数と相互作用しないユーティリティ機能を定義すると、静的メソッドとして作成されます.
  • 設計モードでも特別な目的で使用されています.
  • 静的方法の実施形態では、メンバー変数およびメンバー方法の使用は許可されない.
  • 静的方法の実施部は、静的変数および静的方法のみを使用することができる.
  • 生成者

    package day3;
    
    public class User {
    	
    	int no;
    	String name;
    	String id;
    	String password;
    	String email;
    	String tel;
    	int age;
    	String address;
    	boolean isMarried;
    	
    	/*
    	 * 생성자 (Constructor)
    	 * 		- 객체 생성 직후에 바로 실행되는 메소드다.
    	 * 		  * 객체를 생성하는 메소드가 절대 아님
    	 * 		- 객체 생성 직후에 수행할 작업을 생성자 메소드에 정의할 수 있다.
    	 * 		  * 객체의 초기화 작업 - 객체의 멤버변수의 값을 초기화하는 작업이다.
    	 * 							   - 객체의 멤버변수에 값을 대입하는 작업이다.
    	 * 		  * 멤버메소드의 실행 전에 반드시 수행해야 하는 전처리 작업
    	 * 		- new 생성자()와 같이 객체 생성할 때만 사용할 수 있는 메소드다.
    	 * 		  * new 키워드와만 사용할 수 있다
    	 * 		- 생성자 메소드의 조건(객체 생성 직후에 바로 실행될 메소드의 조건)
    	 * 		  * 생성자 메소드의 이름은 반드시 클래스의 이름과 동일해야한다.
    	 * 		  * 생성자 메소드는 반환타입이 없다 
    	 */
    	
    	// 기본 생성자(Default Constructor)
    	//	- 매게변수가 하나도 없는 생성자
    	//  - 컴파일러가 자동으로 추가하는 생성자
    	//		User.java를 User.class로 변환할 때
    	//		user.java에 정의된 생성자가 없으면 public User() {}를 자동으로 추가한다.
    
    	public User() {
    		System.out.println("기본 생성자 실행됨");
    		// 객체의 초기화 작업
    		// 객체가 생성되면 번호, 이름, 아이디, 비밀번호, 주소, 결혼여부 등의 값을 아래의 값으로 초기화한다.
    		no = 9999;
    		name = "홍길동";
    		id = "hong";
    		password = "zxcv1234";
    		email = "";
    		tel = "";
    		age = 0;
    		address = "서울";
    		isMarried = false;
    	}
    	
    	void displayUserInfo() {
    		System.out.println("번호 : " + no);
    		System.out.println("이름 : " + name);
    		System.out.println("아이디 : " + id);
    		System.out.println("비밀번호 : " + password);
    		System.out.println("이메일 : " + email);
    		System.out.println("전화번호 : " + tel);
    		System.out.println("나이 : " + age);
    		System.out.println("주소 : " + address);
    		System.out.println("결혼여부 : " + isMarried);
    	}
    }
    
    package day3;
    
    public class UserApp {
    	
    	public static void main(String[] args) {
    		// new 생성자메소드();
    		//		1. 생성자메소드명은 클래스 이름과 같다.
    		//				--> 객체 생성에 사용할 설계도 이름을 알 수 있음
    		//				--> 설계도 이름에 해당하는 클래스를 로딩해서 객체를 생성함
    		//		2. 생성자메소드(); <----- 메소드를 실행하는 코드임
    		//				--> 객체 생성된 직후에 생성자메소드의 수행무닝 실행됨
    		//				--> 객체 생성 직후에 필요한 작업을 수행할 수 있게 됨
    		//	* new 생성자메소드()
    		User user1 = new User();
    		user1.displayUserInfo();
    		
    		System.out.println("-----------------------------------");
    		User user2 = new User();		// 9999, 홍길동, hong, zxcv1234, 서울로 값이 초기화됨
    		user2.no = 10;
    		user2.name = "김유신";
    		user2.id = "kim";
    		user2.password = "kim1234";
    		user2.displayUserInfo();
    	}
    }