소프트웨어 기술(스타트업 위주)
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는 InputStream과 OutputStream을 사용하여 바이트 단위로 데이터를 처리합니다.
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());
}
}