2021. 03. 31(수) TIL

Dylan·2021년 3월 31일
0

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
		
	}
}

정적변수

  • static을 붙여라.
  • 객체 생성없이 사용할 수 있다. "클래스명.변수명"으로 사용가능
  • 모든 객체가 공통으로 사용하는 값은 정적변수로 정의한다
  • 주로, 프로그램이 실행되는 동안 변하지 않는 상수값은 정적변수로 저장한다

정적메소드

  • static을 붙여라.
  • 객체 생성없이 사용할 수 있다. "클래스명.메소드명(값)"으로 사용가능
  • 객체의 멤버변수와 상호작용이 없는 유틸리티 기능을 정의할 때 정적메소드로 만든다.
  • 디자인패턴에서 특수목적으로 사용하기도 한다.
  • 정적메소드의 구현부에서는 멤버변수, 멤버메소드를 사용할 수 없다.
  • 정적메소드의 구현부에서는 정적변수, 정적메소드만 사용할 수 있다.

생성자

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();
	}
}

0개의 댓글