반응형
- 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();
}
}
반응형
'코딩 > 2-JAVA' 카테고리의 다른 글
C1203메서드클래스배열_개념 ~ C1208메서드클래스배열_암기5 (0) | 2025.07.04 |
---|---|
C1202메서드리턴_개념 (1) | 2025.07.03 |
C1103클래스배열_문자열 , C1104클래스배열_심화 (1) | 2025.07.03 |
C1102클래스배열 , C1102클래스배열_개념연습(1~4) (0) | 2025.07.01 |
C1101클래스 (0) | 2025.06.30 |