배타브 2023. 2. 28. 16:45
728x90
반응형

1교시

package ch6;

public class Variables {
	//선언 위치에 따른 변수의 종류
	//생성 시기
	//클래스 변수 : 클래스가 메모리에 올라갔을 때 생성이 된다
	//인스턴스 변수 : 인스턴스가 생성되었을 때
	//지역변수 : 변수 선언문이 수행되었을 때
	int num; // 멤버 변수 (인스턴스 변수)
	static int cv; // 클래스 변수 (static 변수 , 공유 변수)
	
	void method(String name) {
		int lv = 0; // 지역변수
	}
	
}
package ch6;

public class DataEx {

	public static void main(String[] args) {
		Data data = new Data();
		
		//초기화
		data.x = 10;
		System.out.println("main() :  x = "+data.x);
		
		change(data.x);
		System.out.println(data.x); // 10 .. ?
		
	}
	static void change(int x) {
		x= 1000;
		System.out.println("change() : x = " + x);
	}
	
}

change (data.x) 가 1000 으로 바뀔줄 알았는데 아니어따!

data.x 를 1000으로 변경하여 값을 보내려면

	//값이 넘어감
		change(data.x);
		System.out.println(data.x); // 10 .. ?
		
		//주소가 넘어감
		change2(data);
		System.out.println(data.x); // 1000
    }
    //기본형 매개변수 : 값만 받게 됨
	//int x : x가 가지고 있는 값만 받음 / 수정 불가능
	static void change(int x) {
		x= 1000;
		System.out.println("change() : x = " + x);
	}
	//참조형 매개변수 : 값을 읽고 수정 가능
	static void change2(Data d) {
		d.x= 1000;
		System.out.println("change() : x = " + d.x);
	}

change2 참조


2교시

기본형 - >  값만복사  // 참조형 -> 값변경후 주소로 보내줌

package ch6;

public class DateEx2 {

	public static void main(String[] args) {
		// 인스턴스 생성
		Data d = new Data();
		d.x = 10;
		Data d2= copy(d);
		System.out.println("d.x = " + d.x);
		System.out.println("d2.x = " + d2.x);
		
		
		
	}

		static Data copy(Data d) {
			Data temp = new Data();
			temp.x = d.x + 1;
			return temp;
			
		}
}

3교시

static 키워드 설명

// 클래스 변수 (static 변수 , 공유 변수)

static 메서드 안에서는 인스턴스를 바로 사용할 수 없음

package ch6;
/*
 * 인스턴스 메소드 : 인스턴스(객체)를 생성하고 사용해야 함
 * 클래스(static) 메서드 : 인스턴스(객체)를 생성하지 않고도 바로 사용이 가능함
 * 						클래스명.메서드명();
 */
public class MyMath {
	long a, b;
	
	long add() {
		return a+b;
	}
	long subtract() {
		return a -b;
		
	}
	long multiply() {
		return a*b;
	}
	double divide() {
		return a/b;
		
	}
	//기본형 매개변수를(지역변수) 이용한 사칙연산
	//static 메서드 안에서는 인스턴스를 바로 사용할 수 없음
	static long add(long a,long b) {
		return a+b;
		
	}
	static long subtract(long a,long b) {
		return a-b;
		
	}
	static long multiply(long a,long b) {
		return a*b;
		
	}
	static double divide(long a,long b) {
		return a/b;
		
	}

}
package ch6;

public class MyMathEx {

	public static void main(String[] args) {
		//static 메서드 바로 호출 가능
		System.out.println(MyMath.add(1, 2));
		
		//인스턴스 메소드 호출
		MyMath math = new MyMath();
		math.a = 200L;
		math.b = 100L;
		System.out.println(math.add());
		System.out.println(math.subtract());
		System.out.println(math.multiply());
		System.out.println(math.divide());
		

	}

}

4교시

변수와 메서드에 static 이 붙으면 같은 static 끼리는 호출시 문제가 없음

static 이 붙지 않은 변수나 메서드를 호출하려면 인스턴스 생성 후 가능


5교시

연습문제

package ch6;

public class Student {
	//학생이름 name 
	//반 ban 
	//번호 no
	//국어점수 kor
	//영어점수 eng
	//수학점수 math
	String name;
	int ban;
	int no;
	int kor;
	int eng;
	int math;
	
	
	public Student(String name, int ban, int no, int kor,int eng, int math) {
		super();
		this.name = name;
		this.ban = ban;
		this.no = no;
		this.kor = kor;
		this.eng = eng;
		this.math = math;
	}
	public String info() {
		
		int total = kor + eng + math;
		double	average = total/3.0;
		String result = name + "," + ban + "," + no + "," + kor + "," + eng + "," + math+"\n총합 : "+total+"\n평균 : "+average;
		return result ;
	}
		
}
package ch6;

public class StudentEx {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student stu = new Student("홍길동",1,1,100,60,76);
		
		String msg = stu.info();
		System.out.println(msg);
		//msg 출력시
		//"홍길동",1,1,100,60,76 / 점수합계 , 평균
	
	}

}

이후부터 잠이 와 도저히 수업에 집중이 안되어서 듣는둥 마는둥했다...... 어제 오랜만에 소주를 한잔 마셔서 일까..?ㅠㅠ

피로좀 풀고 영상으로 복습해야겠다..ㅠ

728x90
반응형