- 메소드
- 메소드는 어떤 특정 작업을 수행하기 위한 명령문의 집합 { }의 안에 것 구현부=메서드라고 할 수 있음
- 작성한 메소드를 호출 할 때에는
- 클래스명 , 사용할 이름 = new 클래스명(); ▶ 객체 생성
- 사용할이름.메소드명(); ▶ 메소드 호출
Application1 app1 = new Application1();
app1.methodA();
System.out.println("main 종료");
}
- methodA()를 호출 할 때는
public void methodA() {
System.out.println("A 호출");
methodB();
System.out.println("A 종료");
}
- methodB()를 호출 할 때는
public void methodB() {
System.out.println("methodB 호출함...");
}
- 객체는
- 1. 지역변수
- 2.매개변수
- 3.전역변수(필드)
- 4.클래스(static)변수로 나뉜다.
지역변수는 그 지역에서만 선언한 메소드 블럭 내부에서만 사용이 가능함. 이것을 지역 변수 스코프라고 함
서로 다른 메소드간 공유해야 하는 값이 있으면 호출 시 사용하는 {}을 이용하여 값을 전달 할 수 있음
전달하는 값 = 전달인자, 메소드 선언 부 괄호 안에 전달 인자를 받기 위해 선언하는 변수 = 매개변수
그런데 강제 형변환을 이용하여 값을 전달 할 수 있음
그러나 형변환을 할 때 데이터 손실이 있음
long longAge = 30;
app3.testMethod((int)longAge);
연산 결과를 이용해서 값을 전달 할 수 있으며
app3.testMethod(age * 3);
테스트 메서드를 객체로 불러와 콘솔로그로 찍기도 가능
매개변수도 일종의 지역변수고 final 키워드를 사용 가능
final 매개변수는 상수 네이밍 규칙을 선택적으로 따른다. (대문자로 작성해도 되고 소문자로 작성해도 된다)
gender = 'M';
public void testMethod(int age) {
System.out.println("당신의 나이는 " + age + "세 입니다.");
}
public void testMethod(String name, int age, final char gender) {
System.out.println("당신의 이름은 " + name + "이고, 나이는 " + age + "세 이며, 성별은 " + gender + "입니다.");
}
값의 개수를 맞지만 순서가 다르게 전달되면 호출이 안됨 (name, gender, age)
String name = "정";
int age = 25;
char gender = 'F';
Application4 app4 = new Application4();
app4.testMethod(name, age, gender);
- retrun
모든 메소드의 내부에는 return;이 존재
void 메소드의 경우 return;를 작성 안해도 마지막줄에 알아서 컴파일러가 자동으로 추가를 해 줌
return 현재 메소드 종료하고 호출한 구문으로 다시 돌아라가는 명령어 - 컴파일러에 의해 자동으로 추가되는 구문 가장마지막에 작성해야 함 ▶ 가장마지막에 작성하지 않으면? 컴파일 에러 발생!!
public static void main(String[] args) {
}
public void testMethod() {
return;
//System.out.println("무언가 출력해주세요");
}
- 반환 값이 있는 메소드만 호출하면 아무런 내용이 출력되지 않음
- 반환 값이 있는 메소드를 호출 할 때는 반환 값을 변수에 담거나, 동작하고자 하는 메소드 안에서 호출하게 함
- public 뒤에 바로 reture으로 가지고 갈 타입을 명시한다.
- 아무 값도 리턴하지 않을 경우 void, 값을 반환하는 경우 반환 값의 자료형을 작성해야 함
public String testMethod() {
return "Hello World";
}
- 객체 메소드로 계산기를 만들 경우
public class Application7 {
public static void main(String[] args) {
Application7 app7 = new Application7();
int first = 100; // first 변수 초기화
int second = 10; // second 변수 초기화
System.out.println("두 수를 더한 결과 : " + app7.plusTwoNumbers(first, second));
System.out.println("두 수를 뺀 결과 : " + app7.minusTwoNumbers(first, second));
System.out.println("두 수를 곱한 결과 : " + app7.multipleTwoNumbers(first, second));
System.out.println("두 수를 나눈 결과 : " + app7.divideTwoNumbers(first, second));
//위의 메소드를 실행 할 때 내가 생성한 객체와(변수,변수) 적기
}
public int plusTwoNumbers(int first, int second) {
return first + second;
}
... 이 아래로 쭉 쓰기
- static 메소드를 호출 함
- 클래스명.메소드명(); 으로 선언 ▶ 그러나 동일한 클래스 내에 작성된 static 메소드는 클래스명이 생략이 가능
- 삼항연산도 가능함 그런데 같은 값을 가지는 조건에 대해서는 처리하지 않음
public int minNumberOf(int first, int second) {
return first > second ? second : first;
}
- 패키지는 서로 관련 있는 클래스 또는 인터페이스 등을 모아 하나의 그룹으로 단위를 구성하는 것임
- 같은 패키지 내에서는 동일한 이름의 클래스를 만들 수 없음
- 패키지가 다르면 동일한 이름의 클래스명을 만들 수 있는데 풀 클래스명은 패키지를 포함하기 때문
- import
- 매번 다른 클래스의 패키지명까지 기술하는 것 번거로움 하여 패키지 선언문과 클래스 선언문 사이에 작성하여
- 어떤 패키지 내에 클래스를 사용할 것인지 미리 선언하는 효과를 받음
Calculator calc = new Calculator();
SMALL
'java' 카테고리의 다른 글
java if,switch (0) | 2022.12.26 |
---|---|
java API,SCANNER (0) | 2022.12.26 |
java 연산자2 (0) | 2022.12.26 |
java 연산자 1 (0) | 2022.12.25 |
JAVA 변수, 다양한 자료형,참조형 (0) | 2022.12.20 |