출력
System.out.println("안녕하세요!");
\n: 줄바꿈
입력
Scanner scanner = new Scanner(System.in);
import java.util.Scanner; // Scanner를 사용하려면 import 필요 public class ScannerPractice { public static void main(String[] args) { // Scanner 객체 생성 & 변수에 담기 Scanner scanner = new Scanner(System.in); } }
문자열 입력받기
import java.util.Scanner; public class ScannerPractice { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("좋아하는 문장을 입력하세요: "); String sentence = scanner.nextLine(); // 데이터 전달 System.out.println("좋아하는 문장: " + sentence); } }
숫자 입력받기
import java.util.Scanner; public class ScannerPractice { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("정수를 입력하세요: "); int num1 = scanner.nextInt(); System.out.print("실수를 입력하세요: "); double num2 = scanner.nextDouble(); System.out.print("큰 정수를 입력하세요: "); long num3 = scanner.nextLong(); System.out.println("입력한 정수: " + num1); System.out.println("입력한 실수: " + num2); System.out.println("입력한 큰 정수: " + num3); } }
System.out.println(10 / 2 + 3 * 2 > 10 || false); // 실행 순서: ((10 / 2) + (3 * 2)) > 10 || false // → (5 + 6) > 10 || false // → 11 > 10 || false // → true || false // → true
System.out.println(5 + 3 > 2 * 4 && 10 % 3 == 1); // 실행 순서: (5 + 3) > (2 * 4) && (10 % 3) == 1 // → 8 > 8 && 1 == 1 // → false && true // → false
.equals() 를 활용(동등성/동일성 문제)String text1 = "Hello"; String text2 = "Hello"; boolean isEqual = text1.equals(text2); System.out.println("text1과 text2가 같은가? " + isEqual); //출력결과: text1과 text2가 같은가? true
if: 조건 수식이 참일때 실행
if (조건수식) { 명령문; }
if-else: 조건 수식이 거짓일때 실행
if (조건수식) { 명령문; } else { 명령문; }
if (조건수식) { 명령문; } else if (조건수식) { 명령문; } else { 명령문; }
switch (단일값) { case 값1: // 값1일 때 실행할 코드 break; case 값2: // 값2일 때 실행할 코드 break; default: // 위의 값들과 일치하지 않을 때 실행할 코드 }
for
종결 조건이 true일 경우 반복, false일 경우 종료
for (시작조건; 종결조건; 조건변화수식) { ... }
break: 반복을 벗어나기 위해 함께 사용
public class Robot { public static void main(String[] args) { int customers = 5; for (int i = 1; i <= customers; i++) { if (i == 4) { break; // 4번째 손님이 들어올 경우 반복을 벗어납니다. } System.out.println(i + "번째 손님, 안녕하세요!"); } System.out.println("반복문이 종료되었습니다."); } }
continue: 특정 회차의 반복을 건너뛸 때 사용
public class Robot { public static void main(String[] args) { int customers = 5; for (int i = 1; i <= customers; i++) { if (i == 2) { continue; // 2번 손님은 건너 뜁니다. } System.out.println(i + "번째 손님, 안녕하세요!"); } System.out.println("반복문이 종료되었습니다."); } }
while
while (종결조건) { 반복할 명령문; }
String[] adventurerList = {"gygim", "Steve", "Grace", ...};
int[] arr = new int[5]; //// 선언과 동시에 길이를 설정합니다. ////자료형[] 변수이름 = new 자료형[배열의길이]; int arrLength = arr.length; ////배열이름.length System.out.println("arrLength = " + arrLength); // arrLength = 5
// 길이가 5인 문자열 배열 arrA 를 선언 String[] arrA = new String[5];
// 길이가 3인 논리형 배열 arrB 를 선언 boolean[] arrB = new boolean[3];
int[] arr = {10, 20, 30, 40, 50}; 배열의 모든 요소를 하나씩 꺼내서 활용할 때 편리한 반복문
index 직접 활용하지 못함
for (int a : arr) → 배열 arr에서 하나씩 꺼내서 a에 저장
IndexOutOfBoundsException 에러가 발생하지 않음
for(배열의요소 : 배열) { 명령문; }
예시
int[] arr = {100, 200, 300, 400, 500}; for (int a : arr) { System.out.println("배열의 각 요소 = " + a); }
boolean[][] board = new boolean[2][2];
2x2 2차원 배열 선언boolean[][] board = { {true, false}, // 0행의 0열, 0행의 1열, {false, true} // 1행의 0열, 1행의 1열 };
public class 클래스이름 { [반환자료형] [메서드이름](매개변수..) { 작업 명령문들... } }
선언부: 메서드가 정의되어 있는 곳
public class Calculator { int sum(int value1, value2) { int result = value1 + value2; return result; } }
호출부: 메서드를 사용하는 곳
public class Main { public static void main(String[] args { Calculator calculator = new Calculator(); // Calculator 객체 소환 int result = calculator.sum(1, 2); // 호출부 System.out.println("결과: " + result); } }
클래스의 구조
- 속성(property, field) - 객체의 속성, 변수로 표현. 사람을 예로 들면 나이나 이름, 주소 등이 해당
- 생성자(constructor) - 객체 만들때 사용, 어떻게 만들지 정의해 놓는 것(조립설명서), 없으면 객체화 불가능
- 기능(method) - 기능
- 게터(getter): 클래스의 속성을 가져올때 사용되는 기능
- 세터(setter): 객체의 속성을 외부에서 설정할 수 있게 해주는 기능
new라는 키워드를 사용
toString()이 오버라이딩되어 있기 때문래퍼클래스 ↔ 기본형으로 형변환은 굉장히 자주 일어납니다.
Java에서는 이 형변환 과정을 자동으로 지원해 줍니다.
오토박싱(Auto-boxing)