2023. 3. 28. 10:08ㆍ개발/Java
Java 강의를 들으면서
알지 못했던 내용들을 따로 정리한다.
1. Method overloading
package Chapter_06;
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);
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));
System.out.println(getPower("4"));
System.out.println(getPower(3,3));
}
}
아두이노 혹은 typescript 에서는
같은 이름의 메소드를 사용하면
중복오류가 발생하는데
Java는 신기하게
중복된 이름의 메소드가 있어도
전달값의 형태가 다르면 사용할 수 있다.
public static int getPower(int number){
int result = number * number;
return result;
}
public static int getPower(String strNumber){
int number=Integer.parseInt(strNumber);
return number*number;
}
위와 같이 같은 getPower() 메소드여도
괄호 안에서 각각 int 형과 String 형을 전달하므로
중복 호출할 수 있다.
불가능한 경우
public static int getPower(int number){
int result = number * number;
return result;
}
public static int getPower(int number){
int result = number * number;
return result;
}
위와 같이 중복된 이름의 Method를 선언해도
같은 자료형 전달값이 사용되면
오류가 발생한다.
이미 int형 전달값 getPower 메소드는
정의되어 있다는 오류 문구가 발생한다.
2. main method 전달값 활용
package Chapter_06;
public class _08_MainMethod {
public static void main(String[] args) {
for (String s : args) {
System.out.println(s);
}
//1. 도서 조회
//2. 도서 대출
//3. 도서 반납
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 메뉴 중 하나를 입력하세요.");
}
}
}
위와 같이 main() 메소드에서
기본 전달값( 위 main에서는 String [] args )을 다루는 방법
1. 우측 상단의 Edit Configurations 클릭
2. (1)에서 프로젝트 파일을 선택해준 뒤
(2) 에서 전달할 String 값을 선언
3. 프로젝트를 실행하면
설정해둔 1 값이 자동으로 main()에 전달됨
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("잘못 입력하셨습니다.");
}
}
위 구문에서 args의 크기가 1일 때
"1" 값이 전달됐으므로
case 1 이 정상적으로 동작하는 모습
main 메소드에서
다양한 전달값을 활용해서
함수를 테스트하고 싶을 때
유용하게 쓰일 것 같다.
아두이노 혹은 vsCode 에서 typescript를 다루는 경우
이런 테스트를 하기 위해서는
직접 업로드한 뒤 전체 프로그램을 돌리고
눈으로 확인했어야 하는데
간단하게 전달값을 테스트할 수 있어서
좋아보인다.
3. method 활용 퀴즈
위와 같이 실행결과가 나오도록
Method 활용해서 코드 작성
package Chapter_06;
public class _Quiz_06 {
public static String getHiddenData(String data,int number){
String addData = "";
String editData = data.substring(0,number);
for (int i = 0; i < data.length()-editData.length(); i++) {
addData +="*";
}
editData += addData;
return editData;
}
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));
}
}
난이도 낮은 퀴즈라서
막힘 없이 진행했다.
원하는 데이터 크기만큼 자른 뒤
자르고 남은 index크기만큼을
* 로 대체하면 되는 퀴즈였다.
6강 완강 후
사실 chatGPT가 나와서
이런 기본 문법 강의는
가치가 떨어졌다고 생각한다.
중후반 커리큘럼까지 빨리 수강해서
나에게 필요한 강의가 무엇인지 찾고
새로운 강의를 또 구매하고싶다.
Java를 활용해서
직접 나만의 서버를 구현하는 강의라던가
Java를 활용해서 Android에서 앱을 제작한다던가
그런 실무적인 강의를 구매하고싶다.
일단 이 20시간 강의부터 완강하고 나서 생각