본문 바로가기

Programming/Java

3월 16일 생성자

반응형

D@101 주소 참조한 뒤 인덱스 번호만큼 메모리 연산하는 것.

 

 

JVM 메모리 구조

returnType nameOfMethod (Parameter List) {

      // method body

}

 

 

 

package day0316;

public class ArrayTest13 {
	public static void main(String[] args) {
		int n; // stact
		double a;
		double[] num;//스택메모리 4바이트 할당,:heap메모리 참조하는 변수
		
		num = new double[10]; //힙메모리에 할당 8*10
		
		int[] num2;
		num2=new int[5];
		
		System.out.println(num.length);
		System.out.println(num);
		System.out.println(num.toString());
		System.out.println(num2);
		
		for(int i=0;i< num.length;i++) {
			System.out.print(num[i]+" ");
		}
		System.out.println();
		double ar[][] = new double[][] {{3.141592, 3.14, 3.0},{1.1111112312, 2.12124, 3.11241235}};
		// 1차원배열의 집합구조
		System.out.println(ar.length);
		for(int i=0;i<ar.length;i++)  {
			System.out.println(ar[i]);
			for(int j=0;j<ar[i].length;j++) {
				System.out.printf("%e ", ar[i][j]);
				System.out.printf("%g ", ar[i][j]); // 자리수가 짧은 것을 선택하는 부동소수점 표현형식
			}
			System.out.println();
		}
	}

	
}
package day0316;

public class ClassTest01 {
	public static void main(String[] args) {
		int a;
		String str;
		// 클래스 파일로 데이터 타입을 만들었다.
		Exam exam01 = new Exam(); // 메모리 확보 (객체)
		Exam exam02 = new Exam();
		Exam exam03;
		
		Point p1 = new Point();
		Point p2 = new Point();
	}

}
package day0316;

public class ClassTest02 {
	public static void main(String[] args) {
		// Point p; // 메인 메소드 안의 로컬 변수 스택 메모리 주소 할당
		Point p = new Point(); // 메인 메소드 안의 로컬 변수 스택 메모리 주소 할당
	
		
		
		// 객체 object 만드는 것
//		Point p1 = new Point();
		
		System.out.println(p.x); // .은 멤버접근연산자
		System.out.println(p.y); // .은 멤버접근연산자
		
	}
}
package day0316;

public class ClassTest03 {
	public static void main(String[] args) {
		
		Exam e1 = new Exam();
		

		
		
		
		
		Exam e2 = new Exam();
		e2.name = "test";
		e2.kor = 100;
		e2.eng = 100;
		e2.mat = 100;
		
		e2.display();
		
		e1.calcToAndAvg();

	}

	
//	e2.name = "test";
//	e2.kor = 100;
//	e2.name = "test";
//	e2.name = "test";
//	e2.name = "test";
//	e2.name = "test";
//	e2.name = "test";
//	e2.name = "test";

}
package day0316;

public class Exam {
	
	// Exam이라고 하는 새로운 데이터 타입 묶음
	
	String name; // 클래스 멤버 변수
	int kor;
	int eng;
	int mat;
	int tot;
	double avg;
	int rank;
	
	
	
	void calcToAndAvg() { // 대문자로 쓰면 생성자로 오해 가능 
		tot =kor+eng+mat;
		avg = tot/3.0;
		rank =1;
	}
	// 클래스를 만들면 생성자가 존재한다. : 명시하지 않으면 default생성자가 생략
	// public Exam() { } // 이거는 안해도 된다. 있어도 없어도 동일. 기본생성자가 이미 있다는 뜻
	// default 생성자는 멤버 필드를 초기화하는 역할을 함.
	
	void display() {
		System.out.println("이름 : "+name);
		System.out.println(", 국어 : "+kor);
		System.out.println(", 영어 : "+eng);
		System.out.println(", 수학 : "+mat);
		System.out.println(", 총점 : "+tot);
		System.out.println(", 평균 : "+avg);
		System.out.println(", 순위 : "+rank);
	}
	
}
package day0316;

public class MethodTest01 {
	public static void main(String[] args) {
		//객체생성
		Calc cal = new Calc();
		
//		cal.num1 = 10; // 접근 불가능한 private로 됐기 때문에 안됨.
//		cal.num2 = 20;

		cal.setNum1(100);
		cal.setNum2(200);
		
		System.out.println(result);
		
		cal.print();
		
	}

}
package day0316;

public class MethodTest02 {
	public static void main(String[] args) {
		Calculator cal = new Calculator();
		cal.powerOn();
		
		long result = cal.plus(2100000000, 100000000);
		System.out.println(result);
		System.out.println(cal.minus(1000, 200));
		System.out.println(cal.multiple(2100000000, 2));
		System.out.println(cal.divide(1, 30));
		
		
		cal.powerOff();
	}
}
package day0316;

public class Point {
	int x;
	int y;
	public Point() {
		x=10;
		y=20;
	}
}
package day0316;

public class Calc {
	// 멤버 필드
	// 데이터를 함부로 읽을 수 없게 하는 것 private
	// 인캡슐래이션, 캡슐화 데이터를 안전하게 처리하기 위해서
	private int num1;
	private int num2;
	
	
	
	
	
	public int getNum1() {
		return num1;
	}

	


public int getNum1(int _num1) {
	return num1;
}

public void setNum1(int _num1) {
	this.num1 = _num1;
}

public int getNum2(int _num2) {
	return num2;
}
public void setNum2(int _num2) {
	this.num2 = _num2;
}

	public int add(int n, int m) {
		int result = n+m;
		return result;
	}
	
	// 멤버 메서드
	void print() 
	{
		System.out.print("num1 : "+ num1);
		System.out.print(" , ");
		System.out.println("num1 : "+num2);
		
		

}
	
}
package day0316;

public class Calculator {
	// 메서드
	public void powerOn() {// 선언부
		System.out.println("계산기를 켭니다.");
	}
	public void powerOff() {// 선언부
		System.out.println("계산기를 끕니다.");
	}
	public long plus(int n, int m) {
		return (long)n+m;
	} // 리턴 타입을 명시한 경우 반드시 리턴 뒤에 적합한 벨류
	public int minus(int n, int m) {
		return n-m;
	} // 리턴 타입을 명시한 경우 반드시 리턴 뒤에 적합한 벨류
	public long multiple(int n, int m) {
		return (long)n*m;
	} // 리턴 타입을 명시한 경우 반드시 리턴 뒤에 적합한 벨류
	public double divide(int n, int m) {
		return (double)n/m;
	} // 리턴 타입을 명시한 경우 반드시 리턴 뒤에 적합한 벨류
	
}
반응형

'Programming > Java' 카테고리의 다른 글

자바 상속 개념 extends  (0) 2022.03.22
Enum and Classs difference in Java  (0) 2022.03.22
2022년 3월 14일 배열  (0) 2022.03.14
3월 12일 배운 것  (0) 2022.03.14
Java Strings Tutorial  (0) 2022.02.21