코딩/2-JAVA

C1201메서드_개념

tree0505 2025. 7. 3. 12:09
반응형
    • C1201메서드_개념

  • C1201개념01메서드
package C1201메서드_개념;

/*
	# 메서드 기본구조
	(1) 정의
		1) void			: 키워드
		2) testPrint()	: 이름
		3) { 기능 }		: 실행되는 영역
	(2) 사용법
		1) t1.testPrint();
		2) t1				: 클래스 변수명
		3) .testPrint()		: .메서드명();
*/

//메서드는 클래스 안에 만들 수 있다. 

class Test01 {
	// 클래스
	// (1) 변수				: 속성
	int x;
	
	// (2) 메서드(method)		: 기능
	void testPrint() {
		System.out.println("나 불렀니?");
		// 메서드 종료 : return
		// 반복문 종료 : break
		return;
	}
}


/*
	stack	: 메서드 호출
	heap	: new
	static
 */

public class C1201개념01메서드 {
	// main() 메서드는 가장 먼저 호출된다.
	public static void main(String[] args) {
		
		Test01 t = new Test01();
		t.x = 10;
		// 메서드의 호출
		t.testPrint();
		
		System.out.println("프로그램 종료");
		// return;
	}
}

// 메서드1_개념01_기본이론1.main(null);

  • C1201개념02메서드
package C1201메서드_개념;

class Test02 {
	
	void printSum() {
		int total = 0;
		for(int i = 1; i <= 5; i++) {
			total += i;
		}
		System.out.println(total);
	}
	
}

public class C1201개념02메서드 {
	public static void main(String[] args) {
		
		Test02 t2 = new Test02();
		
		// 1~5의 합을 출력하는 메서드
		t2.printSum();
		
	}
}

  • C1201개념03메서드
package C1201메서드_개념;

/*
	# 메서드 기본구조
	(1) 정의
		1) void					: 키워드
		2) setNums				: 이름
		3) (int a , int b )		: 전달된 값을 저장하는 변수(매개변수, parameter)
		3) { 기능 }				: 실행되는 영역
	(2) 사용법
		1) test1.setNums(10, 20);
		2) test1				: 클래스 변수명
		3) .setNums				: .메서드명
		4) (10, 20);			: (전달할 값); (인자, argument)
*/
 
class Test03 {
	int num1;
	int num2;
	
	void setNums(int a , int b) {
		num1 = a;
		num2 = b;
	}
	void printNums() {
		System.out.println(num1 + " " + num2);
		//메서드 안에서는 클래스 밖에 있는 변수를 자유롭게 사용할 수 있다. 
	}
}

public class C1201개념03메서드 {
	public static void main(String[] args) {
		
		// 아래와같이 같을 저장해서 출력 할수도있지만.
		// 메서드를 만들어서 사용할수도있다.
		Test03 test1 = new Test03();
		test1.num1 = 10;
		test1.num2 = 20;
		System.out.println(test1.num1 + " " + test1.num2);
			
		Test03 test2 = new Test03();
		test2.setNums(10, 20);
		test2.printNums();
	}
}

  • C1201개념04디스
package C1201메서드_개념;

class Calculation{
	//이것들이 this이다
	//이스턴스 변수 
	double num1; 
	double num2;
	double result;	
	
	// 매서드는 모두 독립공간이라서 갈색으로 표시된 변수들은 중복이되어도 전부 다른 변수이다.
	// double a, double b  은 4번이나 사용하지만 각각다른변수이다. 
	
	//		  매개변수 = parameter
	void plus() {
		System.out.println("this = " + this);
		
		// this는 생략가능하다.
		// this.result = this.num1 + this.num2;
		result = num1 + num2;
	}
	
	// 매개변수(parameter)
	void minus(double a , double b) {
		//a와 b는 지역변수 
		this.result = a - b;
	}
	void multiply(double a , double b) {
		result = a * b;
	}
	void division(double a , double b) {
		result = a / b;
	}
	void printResult() {
		System.out.println(/* this. */result);
	}
}


public class C1201개념04디스 {
	public static void main(String[] args) {
		
		Calculation cal = new Calculation();
		System.out.println("cal = " + cal);
		
		double a = 10;
		double b = 3;
		
		// 메서드의 호출
		// cal.plus(a, b);		// 인자,인수 = arguments
		cal.num1 = a;
		cal.num2 = b;
		cal.plus();
		cal.printResult();
		
		cal.minus(a, b);	// 인자,인수(argument)
		cal.printResult();
		
		cal.multiply(a, b);
		cal.printResult();
		
		cal.division(a, b);
		cal.printResult();
		
	}
}

  • C1201개념05변수명
    • 변수는 값이 변하지 않는다. 
package C1201메서드_개념;

class Test05 {
	// 여기 a는 main a와 이름이 같아도 아무 상관없다.
	// 이름이 바뀌어도 상관이 없다. 넘어온 후이이기 때문에. 
	void setValue(int a) {
		System.out.println("sv : " + a);
		a = 100;
		
		System.out.println("sv : " + a);
	}
}

public class C1201개념05변수명 {
	public static void main(String[] args) {
		
		int a = 56;
		Test05 t1 = new Test05();
		
		// 매서드는 값을 복사하는것이기 떄문에 main안의 a에 영향이 없다.
		t1.setValue(a);
		
		System.out.println("--------------");
		System.out.println(a);
		
		System.out.println("--------------");
	
		// 아래 예제와 같은 상황이다.
		int b = 20;
		int c = b;
		c = 100;
		System.out.println(b);
		
	}
}

  • C1201개념06배열
    • 배열은 바뀐다. 주소가 넘어가는 거기 때문에. 
    • 값이 바뀔 수 있다. 
package C1201메서드_개념;

class Test06 {
	void changeValueInArray(int [] arr) {
		arr[1] = 100;
	}
}

public class C1201개념06배열 {
	public static void main(String[] args) {
		
		int arr[] = {10,20,30,40,50};
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
		
		Test06 t6  = new Test06();
		
		// 배열은 주소이기때문에 바뀐다.(아주중요하다.)
		t6.changeValueInArray(arr);		
		for(int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println();
		
		System.out.println("-----------------------");
		// 아래와 같은 상황이다.
		int testArr[] = {10,20,30,40};
		int temp[] = testArr;
		temp[1] = 100;
		for(int i = 0; i < testArr.length; i++) {
			System.out.print(testArr[i] + " ");
		}
		System.out.println();
		
	}
}

  • C1201개념07클래스
    • 메서드는 클래스도 넘길 수 있다. 
package C1201메서드_개념;

class Data{
	int a;
	int b;
	int result;
	String op;
	void print() {
		System.out.println(a + op + b + "=" + result);
	}
}

class Calc{
	void plus(Data data , int a , int b) {
		data.a = a;
		data.b = b;
		data.op  = "+";
		data.result = a + b;
	}
	void minus(Data data , int a , int b) {
		data.a = a;
		data.b = b;
		data.op = "-";
		data.result = a - b;
	}
}

public class C1201개념07클래스 {
	public static void main(String[] args) {
		
		Data data = new Data();		
		Calc calc = new Calc();	
		
		// data 는 new Data() 의 주소가 들어있기때문에 가능하다. 
		calc.plus(data, 10, 3);
		data.print();
		calc.minus(data, 10, 3);
		data.print();
		
	}
}

  • C1201개념08디스
package C1201메서드_개념;

class MyTest{
	//인스턴스 변수이다. 
	//new할때 생긴다. 
	int a; 			// 인스턴스 변수 ==> (heap 에 있는변수)
	String name;
	int score;
	
	void test() {
		// 지역변수 : (stack 에 있는 변수) 
		
		int a = 10; // test()안의 "a"와 함수밖에있는 a는 서로 다른 a이다.
		// 색깔로 구분가능하다. 갈색과 파란색 
		// 서로를 구분짓기 위해서는 this.를 붙여야한다. 	
		// 원래 클래스 함수밖에 있는 변수들(인스턴스변수)들은 this.를 붙이는게 원칙이지만
		// 생략가능하지만 명확성을 위해 붙이는게 좋다.
		this.a = 100;
		a = 100;
		
		System.out.println("------------------");
		System.out.println(a);
		System.out.println(this.a);
		System.out.println("------------------");
		
		this.name = "aaa";
		this.score = 100;
	}
}

public class C1201개념08디스 {
	public static void main(String[] args) {
		
		//         객체(인스턴스, instance)
		MyTest t = new MyTest();
		t.test();
		System.out.println(t.a);
		
	}
}

  • C1201개념09변수
package C1201메서드_개념;

class Test {
	// 클래스 영역 = 메서드 밖 영역
	// 클래스 변수(파란색)
	// 클래스 변수는 값이 자동 초기화
	// int(0), double(0.0), String클래스(null), 배열(null)
	
	//인스턴스 변수들은 자동으로 0으로 초기화가 된다. 
	int x;
	int y;
	
	void print() {
		// 메서드 안 영역
		// 지역 변수(갈색)
		// 지역 변수는 값의 자동 초기화가 X
		// 반드시 선언과 동시에 값을 초기화해줄 것을 권장
		
		//지역변수들은 초기화가 안된다. //직접 값을 넣어주어야 한다. 
		int result = x + y;
		System.out.println(result);
		System.out.println(x);
	}
	
}

public class C1201개념09변수 {
	public static void main(String[] args) {
		
		Test t = new Test();
		t.x = 10;
		t.y = 20;
		t.print();
		
	}
}
반응형