소프트웨어 기술(스타트업 위주)

java

Java는 객체 지향 프로그래밍 언어로, 플랫폼 독립성과 강력한 라이브러리로 유명합니다. 이 문서에서는 Java의 기본 문법, 메서드, 클래스, 예외 처리, 파일 처리, 입출력 스트림, 데이터 구조를 상세히 설명합니다.

https://roadmap.sh/java

쪼개서 다시 작성해야 한다.

Java 기본 문법

1. Java 기본 문법

Java 프로그램은 클래스와 메서드로 구성됩니다. 모든 Java 프로그램은 main 메서드에서 시작됩니다.

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}

1.1 변수와 자료형

Java는 엄격한 타입 언어로, 변수 선언 시 자료형을 명시해야 합니다.

int number = 10; // 정수형
double decimal = 3.14; // 실수형
boolean isTrue = true; // 논리형
char letter = 'A'; // 문자형
String text = "Hello"; // 문자열

1.2 조건문

int age = 18;
if (age >= 18) {
    System.out.println("성인입니다.");
} else {
    System.out.println("미성년자입니다.");
}

1.3 반복문

for (int i = 0; i < 3; i++) {
    System.out.println(i);
}

int j = 0;
while (j < 3) {
    System.out.println(j);
    j++;
}

Java Methods

2. Java 메서드

메서드는 특정 작업을 수행하는 코드 블록입니다. 메서드는 재사용 가능하며, 매개변수와 반환값을 가질 수 있습니다.

2.1 메서드 정의와 호출

public class Main {
    public static int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        int result = add(3, 5);
        System.out.println("결과: " + result);
    }
}

2.2 메서드 오버로딩

같은 이름의 메서드를 매개변수의 개수나 타입에 따라 다르게 정의할 수 있습니다.

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }

    public double add(double a, double b) {
        return a + b;
    }
}

Java Classes

3. Java 클래스와 객체

Java는 객체 지향 언어로, 클래스와 객체를 사용하여 데이터를 캡슐화하고 재사용성을 높입니다.

3.1 클래스 정의와 객체 생성

public class Person {
    String name;
    int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void greet() {
        System.out.println("안녕하세요, " + name + "입니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person("Alice", 25);
        person.greet();
    }
}

3.2 상속

class Animal {
    void sound() {
        System.out.println("소리를 냅니다.");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("멍멍!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.sound();
    }
}

Java Errors

4. Java 예외 처리

Java는 예외를 처리하기 위해 try, catch, finally 블록을 제공합니다.

4.1 기본 예외 처리

public class Main {
    public static void main(String[] args) {
        try {
            int result = 10 / 0;
        } catch (ArithmeticException e) {
            System.out.println("0으로 나눌 수 없습니다.");
        } finally {
            System.out.println("프로그램 종료.");
        }
    }
}

4.2 사용자 정의 예외

class CustomException extends Exception {
    public CustomException(String message) {
        super(message);
    }
}

public class Main {
    public static void main(String[] args) {
        try {
            throw new CustomException("사용자 정의 예외 발생");
        } catch (CustomException e) {
            System.out.println(e.getMessage());
        }
    }
}

Java File Handling

5. Java 파일 처리

Java는 파일 읽기 및 쓰기를 위한 다양한 클래스를 제공합니다.

5.1 파일 쓰기

import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try (FileWriter writer = new FileWriter("output.txt")) {
            writer.write("Hello, File!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

5.2 파일 읽기

import java.io.FileReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try (FileReader reader = new FileReader("output.txt")) {
            int character;
            while ((character = reader.read()) != -1) {
                System.out.print((char) character);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Java I/O Streams

6. Java 입출력 스트림

Java는 InputStreamOutputStream을 사용하여 바이트 단위로 데이터를 처리합니다.

6.1 파일 스트림

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class Main {
    public static void main(String[] args) {
        try (FileOutputStream fos = new FileOutputStream("data.txt")) {
            fos.write("Hello, Stream!".getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }

        try (FileInputStream fis = new FileInputStream("data.txt")) {
            int data;
            while ((data = fis.read()) != -1) {
                System.out.print((char) data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Java Data Structures

7. Java 데이터 구조

Java는 다양한 데이터 구조를 제공하며, java.util 패키지에서 사용할 수 있습니다.

7.1 ArrayList

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("Apple");
        list.add("Banana");
        System.out.println(list);
    }
}

7.2 HashMap

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        map.put("Apple", 1);
        map.put("Banana", 2);
        System.out.println(map);
    }
}

7.3 LinkedList

import java.util.LinkedList;

public class Main {
    public static void main(String[] args) {
        LinkedList<String> list = new LinkedList<>();
        list.add("First");
        list.add("Second");
        System.out.println(list);
    }
}

7.4 Stack

import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        Stack<Integer> stack = new Stack<>();
        stack.push(1);
        stack.push(2);
        System.out.println(stack.pop());
    }
}

7.5 Queue

import java.util.LinkedList;
import java.util.Queue;

public class Main {
    public static void main(String[] args) {
        Queue<String> queue = new LinkedList<>();
        queue.add("First");
        queue.add("Second");
        System.out.println(queue.poll());
    }
}
Previous
node,express
Next
nest