Java 입문 Summary (w. 인프런 김영한)

차재현·2024년 12월 12일
0

[ Backend Study - Java ]

목록 보기
1/11
post-thumbnail

인프런 웹 사이트의 김영한 강사님 강의를 들으며 학습한 Java 입문편 내용을 요약해 보도록 하겠습니다!

컴파일과 실행

  1. Hello.java : 개발자가 작성한 자바 코드
  2. 컴파일 : “javac” 라는 컴파일러가 Hello.java → Hello.class로(바이트 코드) 변환
    💡 class 파일로 변환하는 이유 : 자바가상머신(JVM)에서 더 빠르게 실행될 수 있도록 최적화 및 문법 오류 검사
  3. 실행 : “java” 라는 실행 프로그램이 JVM을 사용하여 Hello.class 를 읽고 실행시켜 프로그램이 작동한다.

Java 변수 명명법 정리

  • 모두 Camel Case 적용
  • 클래스는 대문자 / 변수는 소문자로 시작
  • 예외 딱 2개
    • 상수는 Only 대문자 & 언더바
    • 패키지는 Only 소문자

새로운 switch문

package cond;

public class Switch3 {
	public static void main(String[] args) {
		//grade 1:1000, 2:2000, 3:3000, 나머지: 500
		int grade = 2;
		
		int coupon = switch (grade) {
			case 1 -> 1000;
			case 2 -> 2000;
			case 3 -> 3000;
			default -> 500;
		};
		
		System.out.println("발급받은 쿠폰 " + coupon);
	}
}

for문 vs while문

  • 정해진 횟수만큼 반복을 수행해야 한다면 for문을, 그렇지 않다면 while문을 사용하자
  • 복잡한 조건을 가지는 반복문 작성의 경우 while문을 사용해보도록 하자

🔥 for문 Tip
for문에서 카운터 변수( i 같은)는 가능하다면 말 그대로 카운터를 위해서만 사용하도록 하고, 이후에 계산에 필요한 변수는 따로 선언하여 사용하는게 좀 더 보기 쉽다.

Java에서의 데이터 입력받기 - Scanner

package scanner;

import java.util.Scanner; // ***

public class Scanner1 {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in); // ***
		
		System.out.print("문자열을 입력하세요:");
		String str = scanner.nextLine(); // *** 입력을 String으로 가져옵니다.
		System.out.println("입력한 문자열: " + str);
		
		System.out.print("정수를 입력하세요:");
		int intValue = scanner.nextInt(); // *** 입력을 int로 가져옵니다. 
		System.out.println("입력한 정수: " + intValue);
		
		System.out.print("실수를 입력하세요:");
		double doubleValue = scanner.nextDouble(); // *** 입력을 double로 가져옵니다.
		System.out.println("입력한 실수: " + doubleValue);
	}
}
  • import java.util.Scanner;
  • Scanner scanner = new Scanner(System.in);
  • scanner.nextLine() : 엔터(\n)를 입력하기 전 까지의 문자를 가져온다. 그리고 엔터(\n)는 버린다.
  • scanner.nextInt() : 엔터(\n)를 입력하기 전 까지의 int형의 입력값을 가져온다.
  • scanner.nextDouble() : 엔터(\n)를 입력하기 전 까지의 double형으로 가져온다. [ nextInt와 nextDouble 사용 시 주의사항 ]
    • 보통 숫자를 입력하고 마지막에 “엔터(\n)”를 눌러 입력하는데,
      nextInt와 nextDouble은 int형과 double형만 읽기 때문에 마지막의 엔터(\n)라는 문자열은 읽지 않는다.
    • 그리고 nextInt와 nexDouble을 사용한 직후에 바로 문자열을 읽어오는 nextLine을 사용한다면 이전에 읽혀지지않고 남겨진 엔터(\n)를 읽으며 자동으로 임무를 완료해버린다. ➡️ 즉, String 값을 입력할 수 없게 된다!
    • 따라서 이를 방지하기 위해, nextInt와 netxDouble 사용 후, scanner.nextLine; 을 한줄 사용하여 읽혀지지 않고 남아있던 엔터(\n)을 읽어버리면 된다.
  • 주의! 입력 타입이 다르면 오류가 발생한다!

향상된 for문

  • for문을 사용하는 방법 중에, 배열의 인덱스 1씩 증가시키며 사용하는 방법을 많이 사용한다.
    이때 향상된 for문을 사용할 수 있으며, 실무에서도 가장 많이 사용되는 for문이다!
  • Snippet : iter
  • 향상된 for문 예시 코드
    package array;
    	public class EnhancedFor1 {
    		public static void main(String[] args) {
    			int[] numArr= {1, 2, 3, 4, 5};
    			
    			// 1. 일반 for문
    			for(int i = 0; i < numArr.length; ++i) {
    				int number = numArr[i];
    				System.out.println(number);
    			}
    			
    			// 2. 향상된 for문, for-each문
    			for (int number : numArr) {
    				System.out.println(number);
    			}
    			
    			// 3. for-each문을 사용할 수 없는 경우 (증가하는 index 값을 사용해야하는 경우)
    			for(int i = 0; i < numArr.length; ++i) {
    				System.out.println("number" + i + "번의 결과는: " + numArr[i]);
    		}
    	}
    }
    • 콜론( : )을 중심으로 오른쪽엔 읽을 배열을, 왼쪽엔 배열에서 읽어온 값을 저장하는 변수를 입력한다.
    • 하지만 향상된 for문에서는 카운터 변수를 사용하지 않는다.
      → 즉, 3번 예제코드처럼 for문 내부에서 카운터 변수가 필요한 경우에는 일반 for문을 사용하는게 좋다.

Method

Method 사용 시, 장점

  • 코드 재사용성 증가
  • 코드 가독성 증가
  • 모듈성
    • 큰 프로그램을 작은, 관리 가능한 부분으로 나눌 수 있다. 이는 코드의 가독성을 향상시키고 디버깅을 쉽게 만든다.
  • 코드 유지 관리 용이
  • 재사용성과 확장성
  • 추상화
    • 메서드를 사용하는 곳에서는 메서드의 구현을 몰라도 된다.
      프로그램의 다른 부분에서는 복잡한 내부 작업에 대해 알 필요 없이 메서드를 사용할 수 있다.
  • 테스트와 디버깅 용이성

오버로딩

  • 오버로딩 : 이름이 같고 매개변수만 다른 메서드를 여러개 정의하는 것.
    • 매개변수의 타입이 다르거나, 입력받는 변수의 타입 순서가 달라도 오버로딩이다.
    • 예제 코드
      package overloading;
      	public class Overloading2 {
      		public static void main(String[] args) {
      			myMethod(1, 1.2);
      			myMethod(1.2, 2);
      		}
      		
      		public static void myMethod(int a, double b) {
      			System.out.println("int a, double b");
      		}
      		public static void myMethod(double a, int b) {
      			System.out.println("double a, int b");
      	}
      }
profile
Develop what? and why?

0개의 댓글