인프런에서 제공하는 [김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음]을 수강하며, 새로 배운 내용을 정리합니다.
→ 본문의 내용은 강의 내용에 대한 직/간접적 인용임을 밝힙니다!
하일 김영한..!
→ 자바는 표준 스펙과 구현으로 구분된다!
[ 자바 프로그램의 실행 단계 ]
1. 자바 소스 코드를 개발자가 작성
2. 자바 컴파일러를 사용해서, 소스 코드를 컴파일
javac
프로그램을 사용한다..java
→ .class
파일로!java
프로그램을 사용Q. 만약 변수를 초기화하지 않고 사용하면 어떻게 될까?
java : variable a might not have been initialized
[ 실무에서 자주 사용하는 타입 ]
int
를 사용! 만약 20억을 넘을 것 같으면 long
을 쓴다.double
!String
을 사용하는 것이 편리![ 새로운 switch 문 예시 ]
package cond;
public class Switch3 {
public static void main(String[] args) {
int grade = 2;
int coupon = switch (grade) {
case 1 -> 1000;
case 2 -> 2000;
case 3 -> 3000;
default -> 500;
}
}
}
→ 변수를 선언한 시점부터, 제약 없이 변수를 계속 사용할 수 있다면?
int
-> long
-> double
[ 형변환과 오버플로우 ]
→ 형변환을 할 때 만약 작은 숫자가 표현할 수 있는 범위를 넘어선다면?
maxIntOver = 2147483648L;
intValue = (int) maxIntOver;
// intValue = 2147483648;
Scanner scanner = new Scanner(System.in);
→ System.in을 사용해서 사용자의 입력을 편리하게 받도록 도와준다.
scanner.nextLine()
: 엔터(\n)를 입력할 때까지 문자를 가져온다.scanner.nextInt()
: 입력을 int
형으로 가져온다. 정수 입력에 사용!scanner.nextDouble()
: 입력을 double
형으로 가져온다. 실수 입력에 사용!int[] students
→ 배열 변수 선언students = new int[5]
→ 배열 생성new
는 새로 생성한다는 뜻, int[5]
는 int
형 변수 5개라는 뜻new int[5]
와 같이 배열을 생성하면, 배열의 크기만큼 메모리를 확보한다.int[] students
에 생성된 배열의 참조값을 보관한다.System.out.println(students) //[I@4617c264
→ 앞의 I는 int형 배열을 뜻하고, @뒤에 16진수는 참조값을 뜻함!
int
, long
, double
, boolean
과 같이 변수에 사용할 값을 직접 넣을 수 있는 데이터 타입을 기본형이라 한다.int[] students
와 같이 데이터에 접근하기 위한 참조(주소)를 저장하는 데이터 타입을 참조형이라 한다. int[] students = {90,80,70,60,50};
for (변수 : 배열 또는 컬렉션) {
// 배열 또는 컬렉션의 요소를 순회하면서 수행할 작업
}
→ 증가하는 인덱스 값을 직접 사용해야 하는 경우에는, 사용할 수 없음!
[ void와 return 생략 ]
return
을 호출해야 한다.void
의 경우에는 예외로 이를 생략해도 된다.return
을 마지막에 넣어 준다![ 자바에서 아주 중요한 대원칙!! ]
자바는 항상 변수의 값을 복사해서 대입한다.
public class MethodValue2 {
public static void main(String[] args) {
int number = 5;
System.out.println("1. changeNumber 호출 전, num1: " + number);
changeNumber(number);
System.out.println("4. changeNumber 호출 후, num1: " + number);
}
public static void changeNumber(int number) {
System.out.println("2. changeNumber 변경 전, num2: " + number);
number = number * 2;
System.out.println("3. changeNumber 변경 후, num2: " + number);
}
}
[ 실행 결과 ]
1. changeNumber 호출 전, number: 5
2. changeNumber 변경 전, number: 5
3. changeNumber 변경 후, number: 10
4. changeNumber 호출 후, number: 5
이름이 같고 매개변수가 다른 메서드를 여러 개 정의하는 것을 말한다.
add(int a, int b) add(int a, int b, int c) add(double a, double b)
[ cf. 메서드 시그니처(method signature) ]
→ 메서드 이름 + 매개변수 타입(순서)