출력(OutPut)
System.out.println("안녕하세요!");
System은 출력은 도와주는 객체입니다.입력(Input) - 사용자 입력 받기
Scanner)를 사용합니다.Sacnner 객체 소환
Scanner를 사용하기 위해서는 객체를 소환해야 하고, 변수 선언을 해야 합니다.
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);
}
}
기본적인 사칙 연산
int a = 10;
int b = 3;
// 기본 사칙연산
int sum = a + b;
System.out.println("sum = " + sum);
int sub = a - b;
System.out.println("sub = " + sub);
int mul = a * b;
System.out.println("mul = " + mul);
나눗셈에서 주의할 점
int a = 10;
int b = 3;
int div = a / b;
System.out.println("div = " + div); // ⚠️ 3 (소수점 버려짐)
double div2 = a / 3.0;
System.out.println("div2 = " + div2); // ✅ 3.333... (소수점 유지)
모듈러 연산자(나머지 연산)
int mod = 10 % 3;
System.out.println("mod = " + mod); // 나머지: 1
int mod2 = 15 % 4;
System.out.println("mod2 = " + mod2); // 나머지: 3
int mod3 = 20 % 7;
System.out.println("mod3 = " + mod3); // 나머지: 6
대입 연산자
=)는 변수에 값을 할당하는데 사용됩니다.int num = 5;
System.out.println("변수 num의 값: " + num); // 5
복합 대입 연산자
int num = 5;
num += 3; // num = num + 3;
System.out.println("+= 결과: " + num); // 8
num -= 2; // num = num - 2;
System.out.println("-= 결과: " + num); // 6
num *= 2; // num = num * 2;
System.out.println("*= 결과: " + num); // 12
num /= 3; // num = num / 3;
System.out.println("/= 결과: " + num); // 4
num %= 3; // num = num % 3;
System.out.println("%= 결과: " + num); // 1
증강 연산자
++) 또는 1 감소(--) 시킬 때 사용되며 실무에서도 자주 활용 됩니다.++i)과 후위 연산(i++)의 차이가 있기 때문에 개념을 정확히 이해하는 것이 중요합니다.int a = 5;
System.out.println("++a: " + (++a)); // 6 (먼저 증가 후 출력)
System.out.println("현재 a 값: " + a); // 6
int b = 5;
System.out.println("b++: " + (b++)); // 5 (출력 후 증가)
System.out.println("현재 b 값: " + b); // 6
비교 연산자
==): 두 값이 같으면 true, 다르면 false를 반환합니다. System.out.println("10 == 10: " + (10 == 10)); // true
!=): 두 값이 다르면 true, 같으면 false를 반환합니다.System.out.println("10 != 5: " + (10 != 5)); // true
>,<,>=,<=) - 값을 비교해 논리에 맞으면 true를 반환합니다.System.out.println("10 < 5: " + (10 < 5)); // false
System.out.println("10 >= 10: " + (10 >= 10)); // true
System.out.println("10 <= 5: " + (10 <= 5)); // false
논리 연산자
&&): 두 조건이 모두 참일 때 true를 반환합니다.System.out.println("true && true: " + (true && true)); // true
System.out.println("true && false: " + (true && false)); // false
System.out.println("false && false: " + (false && false)); // false
int age = 20;
boolean isStudent = true;
System.out.println(age > 18 && isStudent); // true
||): 조건 중 하나라도 참이면 true를 반환합니다.System.out.println("true || false: " + (true || false)); // true
System.out.println("false || false: " + (false || false)); // false
System.out.println("true || true: " + (true || true)); // true
int age = 20;
boolean isStudent = true;
System.out.println(age > 18 || isStudent); // true
!): true일 때 false로, false일 때 true로 변경합니다.System.out.println("!true: " + (!true)); // false
System.out.println("!false: " + (!false)); // true
int age = 20;
boolean isStudent = true;
System.out.println(age > 18 && isStudent); // true
연산자 우선순위
2 + 3 * 4; // 헷갈릴 수 있음
2 + (3 * 4) // 명확함
System.out.println(10 - 3 * 2);
// 실행 순서: 10 - (3 * 2)
// → 10 - 6
// → 4
boolean flag = 10 + 5 > 12 && true;
System.out.println(flag);
// 실행 순서: (10 + 5) > 12 && true : 산술
// → 15 > 12 && true : 비교
// → true && true : 논리
// → flag = true 대입
문자열 비교
==를 사용하는 경우는 거의 없습니다..equlals()를 활용해야 합니다.==는 문자열 값을 비교하는 것이 아닌 메모리 주소를 비교하는 방식이기에 이러한 방식을 사용합니다.컴퓨터는 스스로 어떤 조건이나 상태를 마주했을 때 사람처럼 스스로 판단할 수 없습니다.
컴퓨터가 마주할 조건들을 미리 정의해 놓아야 프로그램을 조건에 맞게 동작시킬 수 있습니다.
if문
public class Main {
public static void main(String[] args) {
String light = "초록불"; // (1)
// (2) 만약 light 가 "초록불" 문자열과 같다면?
if (light.equals("초록불")) {
System.out.println("건너세요!"); // (3) 실행
}
// (4) 무조건 실행
}
}
if-else문
public class Main {
public static void main(String[] args) {
String light = "초록불"; // (1)
// (2) 만약 light 가 "초록불" 문자열과 같다면?
if (light.equals("초록불")) {
System.out.println("건너세요!"); // (3) 실행(초록불일때)
} else {
System.out.println("멈추세요!"); // (4) 실행(초록불이 아닐 때)
}
// (5) 다음 코드 실행(무조건 실행)
}
}
else-if문
public class Main {
public static void main(String[] args) {
String light = "초록불"; // (1)
if (light.equals("초록불")) { // (2)
System.out.println("건너세요!"); // (3)
} else if (light.equals("노란불")) { // (4)
System.out.println("주의하세요!"); // (5)
} else {
System.out.println("멈추세요!"); // (6)
}
// (7) 다음코드 진행
}
}
switch문
값에 따라 여러 동작을 실행합니다.
단일값만 들어갈 수 있습니다.
조건식은 사용할 수 없습니다.
switch (단일값) {
case 값1:
// 값1일 때 실행할 코드
break;
case 값2:
// 값2일 때 실행할 코드
break;
default:
// 위의 값들과 일치하지 않을 때 실행할 코드
}
일정한 형태의 작업을 반복적으로 수행해야 할 때 필요한 것이 반복문입니다.
for문
for 반복문에서는 반복작업을 시작하기 전에 종결 조건을 확인합니다.
break문과 함께 사용
break문은 탈출 버튼이라고 생각하면 됩니다.public class Robot {
public static void main(String[] args) {
int customers = 5;
for (int i = 1; i <= customers; i++) {
if (i == 4) {
break; // (1) 반복을 벗어납니다.
}
System.out.println(i + "번째 손님, 안녕하세요!");
}
System.out.println("반복문이 종료되었습니다.");
}
}
continue문
continue문은 건너뛰기 버튼입니다.public class Robot {
public static void main(String[] args) {
int customers = 5;
for (int i = 1; i <= customers; i++) {
if (i == 2) {
continue; // (1) 반복을 건너 뜁니다.
}
System.out.println(i + "번째 손님, 안녕하세요!");
}
System.out.println("반복문이 종료되었습니다.");
}
}
while문
while 반복문은 종결조건만 가지고 있습니다.int i = 1;
while (i <= 10) { // 1은 10보다 작음으로 반복!
System.out.println("i 가 10 보다 작습니다.");
i++; // ✅ 없을 경우 무한루프 발생
}
do-while문
do-while은 while문과 비슷하지만 종결조건을 반복 전이 아니라 후에 체크합니다.int i = 1;
do {
System.out.println("안녕하세요.");
i++;
} while (i <= 10);
비슷한 주제의 데이터들을 하나의 그룹으로 묶어서 표현하는 방법으로, 관련된 데이터를 편리하게 관리하기 위해 사용됩니다.
String[] adventurerList = {"gygim", "Steve", "Grace", ...}; </br></br>
배열의 길이
// 배열이름.length
int arrLenght = adventurerList.length;
배열 문법
new 키워드를 사용해 배열을 선언할 수 있습니다.자료형[] 변수이름 = new 자료형[배열의길이]; // 배열선언
배열 선언의 방법
// 정수형 배열 arr 선언
int[] arr; // ✅ (1) 배열을 선언합니다.
arr = new int[5]; // ✅ (2) 배열의 길이를 5로 설정합니다.
// 배열 길이 구하기
int arrLength = arr.length;
System.out.println("arrLength = " + arrLength); // arrLength = 5
int[] arr = new int[5]; //// ✅ 선언과 동시에 길이를 설정합니다.
int arrLength = arr.length;
System.out.println("arrLength = " + arrLength); // arrLength = 5
인덱스(index)
index의 시작은 0 입니다.System.out.println("배열의 1번째 요소 = " + arr[0]);
System.out.println("배열의 2번째 요소 = " + arr[1]);
System.out.println("배열의 3번째 요소 = " + arr[2]);
System.out.println("배열의 4번째 요소 = " + arr[3]);
System.out.println("배열의 5번째 요소 = " + arr[4]);
int[] arr = new int[5];
arr[0] = 100; // ✅ 1번째 요소를 100로 설정
arr[1] = 200; // ✅ 2번째 요소를 200로 설정
arr[2] = 300; // ✅ 3번째 요소를 300로 설정
arr[3] = 400; // ✅ 4번째 요소를 400로 설정
arr[4] = 500; // ✅ 5번째 요소를 500로 설정
arr[5] = 600; // ❌ 접근 불가
향상된 for문
index를 직접 활용하지 못합니다.for(int a:arr) → 배열 arr에서 하나씩 꺼내서 a에 저장합니다.int[] arr = {100, 200, 300, 400, 500};
for (int a : arr) {
System.out.println("배열의 각 요소 = " + a);
}
2차원 배열
boolean[][] board = new boolean[2][2]; // ✅ 2 x 2 2차원 배열 선언

여러 개의 작은 명령문을 한 곳에 모아 사용하는 단위를 메서드라고 합니다.
메서드가 필요한 이유
메서드 구조
메서드는 항상 클래스 내부에 존재합니다.
public class 클래스이름 {
[반환자료형] [메서드이름](매개변수..) {
작업 명령문들...
}
}
메서드의 흐름

지역변수의 개념
{}로 표현합니다.선언부(Calculator.java)

메서드이름 설명
sum(), printMessage(), findUserByid()매개변수 설명
,)로 구분합니다.작업내용 설명
{} 중괄호 안에 작성합니다.반환값/반환자료형 설명
return 키워드를 사용합니다.int, String, double)등을 작성합니다.void를 작성합니다.호출부(Main.java)
메서드를 활용하고 있는 곳을 의미합니다.
public class Main {
public static void main(String[] args {
Calculator calculator = new Calculator(); // ✅ Calculator 객체 소환
int result = calculator.sum(1, 2); // ✅ 호출부
System.out.println("결과: " + result);
}
}