Jay's Cookbook
Menu
  • Tags
  • Categories
  • Projects
Computer Science
OS
Network
Data Structure
Algorithm
Language
Code Architecture
Python
Javascript
Typescript
Java
Backend
Backend Theory
TypeORM
Node.js
NestJS
FastAPI
Frontend
HTML/CSS
React
Next.js
Data Engineering
DE Theory
MySQL
MongoDB
Elastic
Redis
Kafka
Spark
Airflow
AI
Basic
Pytorch
NLP
Computer Vision
Data Analytics
Statistics
Pandas
Matplotlib
DevOps
Git
Docker
Kubernetes
AWS
Java Series [Part2]: 자바 기초
language
java

Java Series [Part2]: 자바 기초

Jay Kim
Jay Kim 04 Jul 2021
Java Series [Part1]: 자바와 가상머신 Java Series [Part9]: 자바의 객체지향 프로그래밍(1)

Table of Contents

  • Hello World
  • 변수
    • 변수의 선언
    • 변수의 타입
      • 기본형
      • 참조형
        • 배열
  • 연산자
    • 산술 연산자
    • 증감 연산자
    • 비교 연산자
    • 논리 연산자
    • 대입 연산자
    • 삼항 연산자
  • 조건문
    • if-else문
    • switch문
    • 삼항연산자
  • 반복문
    • for문
    • while문
  • 형변환(Type Casting)
    • 자동 형변환
    • 강제 형변환

Hello World

public class HelloWorld {
    /*main: 프로그램을 실행하면 가장 먼저 실행되는 메소드
    void: 리턴값 없음
    String[] args: args라는 이름의 문자열 변수가 메소드에 전달*/
    public static void main(String[] args) {

        // System: 클래스, out: 클래스 변수, println: 메소드
        System.out.println("Hello World");
    }
}

변수

  • 변수는 실제 값을 저장하는 기본형 변수와, 어떤 값이 저장되어 있는 주소를 값으로 갖는 참조형 변수가 있다
  • 변수를 사용하면 값을 저장해 둘 수 있다

변수의 선언

  • 변수를 만들기 위해서는 선언과 초기화가 필요하다
  • 초기화가 필요한 이유는, 선언만 한 변수가 가리키는 메모리에 엉뚱한 값이 저장되어 있음에도, 이 값을 마치 내가 저장한 값으로 읽어올 수 있기 때문에 이런 문제를 미리 방지하고자 초기화하지 않은 변수를 읽어오면 컴파일 에러가 발생한다
public class Variables {
    public static void main(String[] args) {

        // 선언 방법
        // 1) 선언과 초기화를 따로
        int age;
        age = 27;

        // 2) 선언과 동시에 초기화
        double num = 12.5;

        // 초기화하지 않은 변수를 참조하려고 하는 경우
        boolean isTrue;
        System.out.println(isTrue) // 에러) Variable 'a' might not have been initialized
    }
}

변수의 타입

  • 변수는 크게 기본형(primitive)과 참조형(reference)이 있다

기본형

public class Primitive {
    public static void main(String[] args) {
        // 정수형
        int myInt = 123; // 정수형의 기본 타입; 4byte
        long myLong = 2200000000L; // 8byte; 대략 21억이 넘어간다면 long 타입을 사용

        // 실수형
        float myFloat = 3.14f; // 4byte
        double myDouble = 3.14; // 실수형의 기본 타입;  8byte

        // 문자형
        char a = 'a'; // 쌍따옴표로 감싸면 String으로 인식함
        char aPrime = 97; // 아스키 값 97 == 'a'
        char b = '가'; // 2byte

        // 논리형
        boolean myBoolean = true; // 1byte
    }
}

참조형

  • 기본형에 속하지 않는 타입은 모두 참조형(reference) 타입이다
  • 대표적으로 문자열(String), 배열([])이 있다

배열

public class Array {
    public static void main(String[] args) {


        // 배열 생성하는 첫 번째 방법
        int[] intArray = new int[5];

        intArray[0] = 2;
        intArray[1] = 3;
        intArray[2] = 5;
        intArray[3] = 7;
        intArray[4] = 11;

        // 배열 생성하는 두 번째 방법
        int[] arr1 = {1, 2, 3, 4, 5};
        int[] arr2 = arr1;
        int[] arr3 = arr1.clone();

        arr1[0] = 100;
        System.out.println(arr2[0]);
        System.out.println(arr3[0]);

        // 배열을 순회하는 방법
        for (double i : intArray) {
            System.out.println(i);
        }

        // 2차원 배열
        int[][] multiArray = new int[3][4];

        int[][] multiArray2 = { {1 ,2, 3, 4},
                            {5, 6, 7, 8},
                            {9, 10, 11, 12}
                            };
        System.out.println(multiArray2[0][1]);

    }
}

연산자

산술 연산자

  • 기본적인 수학 연산을 수행
public class ArithmeticExample {
    public static void main(String[] args) {
        int a = 10, b = 3;

        System.out.println("a + b = " + (a + b)); // 덧셈
        System.out.println("a - b = " + (a - b)); // 뺄셈
        System.out.println("a * b = " + (a * b)); // 곱셈
        System.out.println("a / b = " + (a / b)); // 나눗셈 (정수 나눗셈)
        System.out.println("a % b = " + (a % b)); // 나머지
    }
}

증감 연산자

  • 변수의 값을 1씩 증가 또는 감소시킨다
  • 전위: 먼저 1 증가/감소 시킨 후 해당 줄을 실행한다
  • 후위: 해당 줄을 먼저 실행 후, 1 증가/감소 시킨다
public class IncrementDecrementExample {
    public static void main(String[] args) {
        int x = 5;

        System.out.println("++x = " + ++x); // 전위 증가 => 6
        System.out.println("x++ = " + x++); // 후위 증가 => 6
        System.out.println("x = " + x); // => 7

        System.out.println("--x = " + --x); // 전위 감소 => 6
        System.out.println("x-- = " + x--); // 후위 감소 => 6
        System.out.println("x = " + x); // => 5
    }
}

비교 연산자

  • 두 값을 비교하여 참(true) 또는 거짓(false)을 반환한다
public class ComparisonExample {
    public static void main(String[] args) {
        int a = 10, b = 20;

        System.out.println("a == b: " + (a == b)); // false
        System.out.println("a != b: " + (a != b)); // true
        System.out.println("a > b: " + (a > b)); // false
        System.out.println("a < b: " + (a < b)); // true
        System.out.println("a >= b: " + (a >= b)); // false
        System.out.println("a <= b: " + (a <= b)); // true
    }
}

논리 연산자

public class LogicalExample {
    public static void main(String[] args) {
        boolean condition1 = true;
        boolean condition2 = false;

        System.out.println("condition1 && condition2: " + (condition1 && condition2)); // false
        System.out.println("condition1 || condition2: " + (condition1 || condition2)); // true
        System.out.println("!condition1: " + (!condition1)); // false
    }
}


대입 연산자

  • 변수에 값을 할당하거나 연산 후 할당
public class AssignmentExample {
    public static void main(String[] args) {
        int a = 10;

        a += 5; // a = a + 5
        System.out.println("a += 5: " + a); // 15

        a -= 3; // a = a - 3
        System.out.println("a -= 3: " + a); // 12

        a *= 2; // a = a * 2
        System.out.println("a *= 2: " + a); // 24

        a /= 4; // a = a / 4
        System.out.println("a /= 4: " + a); // 6

        a %= 3; // a = a % 3
        System.out.println("a %= 3: " + a); // 0
    }
}

삼항 연산자

  • 조건에 따라 두 가지 값 중 하나를 반환한다
public class TernaryExample {
    public static void main(String[] args) {
        int num = -5;
        String result = (num > 0) ? "양수" : "음수";
        System.out.println("num은 " + result); // num은 음수
    }
}

조건문

if-else문

public class IfElse {
    public static void main(String[] args) {
        int temp = 15;

        if (temp < 0) {
            System.out.println("오늘의 날씨는 영하입니다: " + temp +"도");
        } else if (temp < 5){
            System.out.println("오늘의 날씨는 0도 이상 5도 미만입니다: " + temp +"도");
        } else {
            System.out.println("오늘의 날씨는 5도 이상입니다: " + temp +"도");
        }
    }
}

switch문

public class Switch {
    public static void main(String[] args) {
        int score = 80;

        String grade;

        switch (score / 10) {
            case 10:
                grade = "A+";
                break;
            case 9:
                grade = "A";
                break;
            default:
                grade = "F";
                break;
        }
        System.out.println("학점은 " + grade + "입니다.");
    }
}

삼항연산자


반복문

for문

public class For {
    public static void main(String[] args) {
        int sum = 0;
        // i++는 실행 부분이 실행되고 나서 실행된다
        for (int i = 1; i <= 5; i++) {
            sum += i;
            System.out.println(i);
        }
    }
}

while문

public class While {
    public static void main(String[] args ) {
        int i = 1;
        int sum = 0;

        while (i <= 3) {
            sum = sum + i;
            i = i + 1;
        }
        System.out.println(sum);
    }
}

형변환(Type Casting)

  • 자동 형변환, 강제 형변환

자동 형변환

  • 작은 크기의 데이터 타입에서 큰 크기의 데이터 타입으로 변환할 때 자동으로 일어나는 형변환이다
  • 데이터 손실이 없기 때문에 자바가 자동으로 처리해준다
  • 예를 들어, byte → short → int → long → float → double 순서로 변환이 가능하다
int intValue = 100;
long longValue = intValue; // int에서 long으로 자동 형변환
float floatValue = longValue; // long에서 float로 자동 형변환
System.out.println(floatValue); // 출력: 100.0

강제 형변환

  • 큰 크기의 데이터 타입에서 작은 크기의 데이터 타입으로 변환할 때 명시적으로 형변환을 지정해야 한다
  • 데이터 손실이 발생할 수 있으므로 조심해서 사용해야함
  • (타입)을 사용해서 형변환을 명시한다
double doubleValue = 9.78;
int intValue = (int) doubleValue; // double에서 int로 강제 형변환
System.out.println(intValue); // 출력: 9 (소수점 이하가 잘림)
Java Series [Part1]: 자바와 가상머신 Java Series [Part9]: 자바의 객체지향 프로그래밍(1)

You may also like

See all java
25 Mar 2025 Java OOP Series [Part3]: 디자인 패턴
language
java

Java OOP Series [Part3]: 디자인 패턴

20 Mar 2025 Java OOP Series [Part2]: 객체지향
language
java

Java OOP Series [Part2]: 객체지향

15 Mar 2025 Java OOP Series [Part1]: 클래스와 인스턴스
language
java

Java OOP Series [Part1]: 클래스와 인스턴스

Jay Kim

Jay Kim

Web development, data engineering for human for the Earth. I share posts, free resources and inspiration.

Rest
Lifestyle
Hobby
Hobby
Hobby
Hobby
2025 © Jay's Cookbook. Crafted & Designed by Artem Sheludko.