Programming/Java

[ JAVA ] 예제 연습 중 궁금중 모음

감귤밭호지차 2022. 10. 26. 22:08

1. public 삽입 여부 - Java 200제 62p

package part_01;

public class Geo {  // <- public을 넣으면 에러 public을 빼면 성공 : 왜?
	public double latitude = 0.0;
	public double longitude =0.0;
}

public class FirsrtStep {

	public static void main(String[] args) {
		Geo geol = new Geo();
		geol.latitude = 36.523;
		geol.longitude = 127.845;
		System.out.printf("위도:%f, 경도 %f%n", geol.latitude, geol.longitude);
		
	}

}

A : 

 

 

 


2. this 참조변수를 사용하는 이유 ??- Java 200제 64p

class Geo{
	private double latitude = 0.0;
	private double longitude =0.0;
	public Geo(double latitude, double longitude) {
		this.latitude = latitude;  //<- 도데체 왜 사용하는가
		this.longitude = longitude;  //<- 도데체 왜 사용하는가
		
	}

도데체 왜 this.참조변수 = 인자 를 사용하는가?? 어디에 쓰려고?? 

 

아래는 인자가 2개있어서 기본 생성자 Geo geol = new Geo();를 삭제하고 만든 코딩. 

그런데 이전처럼 기본 생성자로 객체를 생성할 수 있게 하려면 기본 생성자를 개발자가 만들어야 한다. : 오버로딩

package part_01;

class Geo{
	private double latitude = 0.0;
	private double longitude =0.0;
	public Geo(double latitude, double longitude) {
		this.latitude = latitude;
		this.longitude = longitude;
		
	}

	
	public double getLatitude() {
		return latitude;
	}
	public void setLatitude(double latitude) {
		this.latitude = latitude;
	}
	public double getLongitude() {
		return longitude;
	}
	public void setLongitude(double longitude) {
		this.longitude = longitude;
	}

}

public class FirstStep {

	public static void main(String[] args) { 
		Geo geol = new Geo(36.523, 127.845);
		System.out.printf("위도:%f, 경도 %f%n", geol.getLatitude(), geol.getLongitude());
		Geo geo2 = geol;
		System.out.printf("위도:%f, 경도 %f%n", geo2.getLatitude(), geo2.getLongitude());
		
	}

}

class에서 기본 생성자 선언해주고 

아래 main에서 다시 호출?? 을 해주면 위에서 이미 기본 생성자 선언하면서 기본 값으로 초기화 ㄱ되었기 떄문에 초기화 값인 0.0000 만 나오는 건가??? 

 

그리고 기본 생성자호출 했을 때 특정 값을 나오게 하고 싶으면 위에 기본 생성자 호출한 {} 안에 this()메서드를 사용하라고 한다. ( 제대로 이해한 것이 맞는가??  = 무사히 입력한 값이 나왔다. 

 


3. 유동성 인자??- Java 200제 69p

설명은 이해했는데 코드가 이해가 안감.

 

 

 


4. 출력 시 왜 이름 다르게 했는데 알맞게 나오는 건가?- Java 200제 69p

public class FirstStep {

	public static void main(String[] args) {
		Geo[] geo = new Geo[] {
		new Geo(37.5670, 126.9807), new Geo(47.01, 10.2), new Geo(40.714086, -74.228697)};
		
		Geo[] geo1 = new Geo[3];
		geo1[0] = new Geo(37.5670, 126.9807);
		geo1[1] = new Geo(47.01, 10.2);
		geo1[2] = new Geo(40.714086, -74.228697);
		
		System.out.printf("위도 : %f, 경도 : %f%n", geo1[0].getLatitude(),geo1[0].getLogitude());
		System.out.printf("위도 : %f, 경도 : %f%n", geo[1].getLatitude(),geo[1].getLogitude());
	}

}

출력은 알맞게 geo1[0]과 geo1[1]에 맞게 출력되었는데 왜 geo1과 geo사이에 차이가 없는걸까??

어차피 위에서 배열 선언할 때 new Geo (~ ~)로 해줘서 알맞게 geo배열을 인식한건가? 아래에서 새롭게 정의하느라고 geo1로 선언해서 geo1도 되고 geo도 되는 건가??