- 메소드
: 어떤 기능을 하는 코드들의 묶음이라고 한다.
public class _01_Method {
//메소드 정의(주로 동사를 사용한다(동작))
public static void sayHello(){
System.out.println("안녕하세요? 메소드입니다.");
}
public static void main(String[] args) {
//메소드 호출
System.out.println("메소드 호출 전 ");
sayHello();
sayHello();
sayHello();
System.out.println("메소드 호출 후 ");
}
}
단계)
1.메소드 정의 (main 불러오기 전 public static void 메소드명 ( ){}
{ 괄호 안에 메소드 명령 sout 통해서 적기}
2.메소드 호출 (public static void main 불러 온 후 명령 적고, 메소드 명령 불러오기)
** 메소드는 원하는 만큼 호출 할 수 있음.
- 전달값 Parameter
public class _02_Parameter {
//전달값이 있는 메소드
public static void power(int number){ //parameter = 매개변수
int result = number * number;
System.out.println(number + " 의 2 승은 " + result);
}
//메소드 2번째
public static void powerByExp(int number, int exponent){
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
System.out.println(number + " 의 " + exponent + " 승은 " + result);
}
public static void main(String[] args) {
//전달값, parameter
// 2 -> 2*2 =4 출력
// 3-> 3*3 = 9출력
//argument = 인수
power(2 ); // 2*2=4출력
power(3);
powerByExp(2,3);
powerByExp(3,3);
powerByExp(10,0);
}
}
2. Return
public class _03_Return {
// 호텔 전화번호
public static String getPhoneNumber(){
String phoneNumver = "02-1234-5678";
return phoneNumver;
}
// 호텔 주소
public static String getAddress(){
return "서울시 어딘가";
}
// 호텔 액티비티
public static String getAcitivites(){
return "볼링장, 탁구장, 노래방";
}
public static void main(String[] args) {
// 반환값, return
String contactNumber = getPhoneNumber();
System.out.println("호텔 전화번호 : " + contactNumber);
String address = getAddress();
System.out.println("호텔 주소 : " + address);
System.out.println("호텔 액티비티 : " + getAcitivites());//string 안하고 바로 sout통해서 호출해도됨
}
}
3. 전달값과 반환값 Parameater And Return
public class _04_ParameaterAndReturn {
public static int getpower(int number) { //전달값
int result = number * number;
return result;
}
public static int getPowerByExp(int number, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) { //반환값
//전달값과 반환값이 함께있는 메소드 만들기
int retVal = getpower(2); //2*2=4 호출
System.out.println(retVal);
retVal = getpower(3);
System.out.println(retVal);
retVal = getPowerByExp(3, 3);
System.out.println(retVal); //3*3*3 = 27s
System.out.println(getPowerByExp(2,4));
}
}
4. 메소드 오버로딩
: 똑같은 이름의 메소드를 여러번 사용하는 걸 메소드 오버로딩이라고 한다.
메소드오버로딩을 할 때에는 전달값의 타입이 다르거거나 ,갯수가 다를떄 사용가능
- 전달값의 타입이 다르거나
- 전달값의 갯수가 다른 경우 같은 이름의 메소드를 여러번 선언 가능하다.
public class _05_Overloading { //여러개의 메소드를 만드는것
public static int **getpower**(int number) { //전달값
int result = number * number;
return result;
}
public static int **getPower**(String strNumber){
int number = Integer.parseInt(strNumber); //int 형을 문자형으로 변환 Integer.parseInt 사용
return number * number;
}
public static int **getPower**(int number, int exponent) {
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) {
System.out.println(**getpower**(3)); //3*3 = 9출력
System.out.println(**getPower**("4")); //4 * 4 =16
System.out.println(**getPower**(3, 3)); //3*3*3=27
//똑같은 이름의 메소드를 여러번 사용하는 걸 메소드 오버로딩이라고 한다.
// 메소드오버로딩을 할 때에는 전달값의 타입이 다르거거나 ,갯수가 다를떄 사용가능
}
}
5. 메소드가 필요한 이유
코드 예시 2개 (같은 값 출력)
1번
2번
public class _06_WhenToUse {
public static int getPower(int number, int exponent){
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) {
int result = 1;
for (int i = 0; i < 2; i++) {
result *= 2;
}
System.out.println(result); // 2*2=4
result = 1;
for (int i = 0; i < 3; i++) {
result *= 3;
}
System.out.println(result); // 3*3=27
result = 1;
for (int i = 0; i < 2; i++) {
result *= 4;
}
System.out.println(result); //4*4 = 16
}
}
4 27 16 출력
public class _06_WhenToUse {
public static int getpower(int number) { //전달값
return getPower(number, 2);
}
public static int getPower(int number, int exponent){
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) {
System.out.println(getPower(2,2));
System.out.println(getPower(3,3));
System.out.println(getPower(4,2));
System.out.println(result); //4*4 = 16
}
}
4 27 16
- 변수의 범위 Scope
public class _07_VariableScope {
public static void methodA(int number){
//System.out.println(number);
//System.out.println(result);
}
public static void methodB(){
int result = 1; //지역변수 ( 변수가 선언된 영역내에서만 사용가능)
}
public static void main(String[] args) {
int number = 3;
System.out.println(result);
for (int i = 0; i <5 ; i++) {
System.out.println(i);
}
System.out.println(i);
{
int j = 0;
System.out.println(j);
System.out.println(number); //괄호안에서면 사용 가능
}
System.out.println(j);
}
}
** 지역변수 : 변수가 선언된 영역내에서만 사용가능하고 괄호안에서만 사용가능하다.
만약 선언된 변수를 사용하고 싶을 때에는 public static void methodA(int number) ←이렇게 메소드 명 안에 넣어주고 사용하면 된다.
- 메인메서드
public class _08_MainMethod {
public static void main(String[] args) { //메인 메소드
for (String s : args) {
System.out.println(s);
}
if (args.length == 1){
switch (args[0]){
case "1":
System.out.println("도서 조회 메뉴입니다.");
break;
case "2":
System.out.println("도서 대출 메뉴입니다.");
break;
case "3":
System.out.println("도서 반납 메뉴입니다.");
break;
default:
System.out.println("잘못 입력하셨습니다.");
}
} else {
System.out.println("사용법) 1~3 메뉴 중 하나를 선택하세요.");
}
}
}
- Quix
public class _Quiz_06 {
public static String getHiddenData(String data, int index){
String hiddenData = data.substring(0, index); //나코딩 -> 나**
for (int i = 0; i < data.length() - index; i++) {
hiddenData += "*"; //나**
}
return hiddenData;
}
public static void main(String[] args) {
//개인정보 중 일부를 비공개로 전환하는 프로그램을 작성하시오.
String name = "나코딩";
String id = "990130-1234567";
String phone = "010-1234-5678";
System.out.println("이름 : " + getHiddenData(name, 1)); //개인정보, 비공개 시작 위치
System.out.println("주민등록번호 : " + getHiddenData(id, 8));
System.out.println("전화번호 : " + getHiddenData(phone, 9));
}
}
실행 결과
이름 : 나**
주민등록번호 : 990130-1******
전화번호 : 010-1234-****
public static String getHiddenData(String data, int index){
String hiddenData = data.substring(0, index); //나코딩 -> 나**
for (int i = 0; i < data.length() - index; i++) {
hiddenData += "*"; //나**
}
return hiddenData;
}
'Java' 카테고리의 다른 글
[Java] 객체(클래스) (0) | 2023.07.07 |
---|---|
[Java] 연산자 (0) | 2023.07.07 |
[Java] 배열 (0) | 2023.07.07 |
[Java] 제어문 (조건문, 반복문) (0) | 2023.07.07 |
[Java] 문자열 (0) | 2023.07.07 |