안녕하세요 오늘은 Chat GPT를 활용한 JAVA 기초를
공부해보도록 하겠습니다!
매번 java를 공부하고 있지만프로젝트를 진행하는 등의 java활용을 잘 하지 않다보니이번 기회에 다시 기초부터 공부해봐야겠다는 생각에Gpt를 활용해 공부해보는 건 어떨까 하는 생각이 들었습니다
그럼 한 번 같이 공부해볼까요?
1. "Hello, World!" 출력하기:
Java 프로그램의 첫걸음은 "Hello, World!"를 출력하는 것부터 시작해봅시다.
javaCopy code
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
- public class HelloWorld: HelloWorld 클래스를 정의합니다.
- public static void main(String[] args): Java 프로그램의 시작점인 main 메서드를 정의합니다.
- System.out.println("Hello, World!");: 콘솔에 "Hello, World!"를 출력합니다.
2. 변수와 자료형 사용하기:
Java에서 변수를 선언하고 사용하는 방법을 살펴봅시다.
javaCopy code
public class Variables {
public static void main(String[] args) {
int number = 42; // 정수형 변수 선언과 초기화
double pi = 3.14159265359; // 실수형 변수 선언과 초기화
String name = "John"; // 문자열 변수 선언과 초기화
System.out.println("Number: " + number);
System.out.println("Pi: " + pi);
System.out.println("Name: " + name);
}
}
- int, double, **String**은 각각 정수, 실수, 문자열 자료형을 나타냅니다.
- 변수를 선언하고 값을 할당할 때 **=**를 사용합니다.
- **System.out.println()**을 사용하여 변수의 값을 출력합니다.
3. 조건문과 반복문 사용하기:
조건문과 반복문을 사용하여 프로그램의 흐름을 제어할 수 있습니다.
javaCopy code
public class ControlFlow {
public static void main(String[] args) {
int age = 18;
// 조건문 (if-else)
if (age >= 18) {
System.out.println("성인입니다.");
} else {
System.out.println("미성년자입니다.");
}
// 반복문 (for)
for (int i = 1; i <= 5; i++) {
System.out.println("반복 횟수: " + i);
}
}
}
- **if-else**를 사용하여 조건에 따라 다른 동작을 수행합니다.
- for 반복문을 사용하여 특정 동작을 반복 실행합니다.
4. 함수(메서드) 정의하기:
Java에서 함수(메서드)를 정의하고 호출하는 방법을 알아봅시다.
javaCopy code
public class Methods {
public static void main(String[] args) {
int result = add(5, 3);
System.out.println("결과: " + result);
}
// 두 정수를 더하는 메서드
public static int add(int a, int b) {
return a + b;
}
}
- add 메서드를 정의하여 두 정수를 더한 후 결과를 반환합니다.
- 메서드를 호출할 때는 메서드 이름과 인수(인자)를 전달합니다.
5. 클래스와 객체 생성하기:
Java는 객체지향 프로그래밍 언어로, 클래스를 사용하여 객체를 정의하고 생성합니다.
javaCopy code
// 클래스 정의
class Dog {
String name;
// 생성자
public Dog(String name) {
this.name = name;
}
// 메서드
public void bark() {
System.out.println(name + "가 짖습니다!");
}
}
public class Objects {
public static void main(String[] args) {
// 객체 생성
Dog myDog = new Dog("멍멍이");
// 객체 메서드 호출
myDog.bark();
}
}
- Dog 클래스는 개 객체를 정의하며, 개의 이름을 저장하는 멤버 변수와 bark 메서드를 포함합니다.
- myDog 객체를 생성하고 bark 메서드를 호출하여 개의 짖는 소리를 출력합니다.
6. 상속과 다형성:
Java에서 상속을 통해 클래스를 확장하고, 다형성을 통해 여러 클래스를 하나의 인터페이스로 다룰 수 있습니다.
javaCopy code
// 부모 클래스
class Animal {
public void sound() {
System.out.println("동물이 소리를 낸다.");
}
}
// 자식 클래스
class Dog extends Animal {
public void sound() {
System.out.println("개가 짖는다.");
}
}
class Cat extends Animal {
public void sound() {
System.out.println("고양이가 울어요.");
}
}
public class InheritanceAndPolymorphism {
public static void main(String[] args) {
Animal myAnimal;
myAnimal = new Dog();
myAnimal.sound(); // "개가 짖는다." 출력
myAnimal = new Cat();
myAnimal.sound(); // "고양이가 울어요." 출력
}
}
- Animal 클래스는 sound 메서드를 가지고 있습니다.
- **Dog**와 Cat 클래스는 Animal 클래스를 상속받으며, sound 메서드를 오버라이딩(재정의)합니다.
- myAnimal 변수를 사용하여 다형성을 활용하여 서로 다른 동물 객체의 sound 메서드를 호출합니다.
7. 예외 처리:
Java에서 예외 처리를 통해 프로그램이 예외 상황에 대비할 수 있습니다.
javaCopy code
public class ExceptionHandling {
public static void main(String[] args) {
try {
int result = divide(10, 0);
System.out.println("결과: " + result);
} catch (ArithmeticException e) {
System.err.println("0으로 나눌 수 없습니다.");
}
}
public static int divide(int a, int b) {
return a / b;
}
}
- divide 메서드에서 0으로 나누려고 시도하면 **ArithmeticException**이 발생합니다.
- try-catch 블록을 사용하여 예외를 처리하고 에러 메시지를 출력합니다.
8. 배열 사용하기:
Java에서 배열을 사용하여 여러 값을 하나의 변수에 저장할 수 있습니다.
javaCopy code
public class Arrays {
public static void main(String[] args) {
// 정수형 배열 선언과 초기화
int[] numbers = {1, 2, 3, 4, 5};
// 배열 요소 접근
System.out.println("배열 요소 출력:");
for (int i = 0; i < numbers.length; i++) {
System.out.print(numbers[i] + " ");
}
// 문자열 배열 선언과 초기화
String[] names = {"Alice", "Bob", "Charlie"};
// 배열 요소 접근
System.out.println("\\n문자열 배열 요소 출력:");
for (String name : names) {
System.out.print(name + " ");
}
}
}
- 배열은 중괄호 **{}**를 사용하여 초기화하고, 각 요소는 쉼표로 구분됩니다.
- 배열의 길이는 length 속성으로 확인할 수 있으며, 반복문을 사용하여 배열 요소에 접근합니다.
9. 클래스와 멤버 변수:
Java 클래스는 멤버 변수를 사용하여 객체의 상태를 나타냅니다.
javaCopy code
class Student {
String name;
int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public void introduce() {
System.out.println("이름: " + name);
System.out.println("나이: " + age);
}
}
public class ClassAndInstanceVariables {
public static void main(String[] args) {
Student student1 = new Student("Alice", 20);
Student student2 = new Student("Bob", 22);
student1.introduce();
student2.introduce();
}
}
- Student 클래스는 **name**과 age 멤버 변수를 가지며, 생성자와 introduce 메서드를 사용하여 객체를 초기화하고 정보를 출력합니다.
10. 사용자 정의 클래스와 컬렉션 사용:
Java에서 컬렉션을 사용하여 데이터를 관리하고 처리할 수 있습니다.
javaCopy code
import java.util.ArrayList;
public class CustomClassAndCollections {
public static void main(String[] args) {
// 사용자 정의 클래스 객체를 담는 ArrayList 생성
ArrayList<Student> students = new ArrayList<>();
// 학생 객체 추가
students.add(new Student("Alice", 20));
students.add(new Student("Bob", 22));
// 학생 목록 출력
System.out.println("학생 목록:");
for (Student student : students) {
student.introduce();
}
}
}
- **ArrayList**은 동적 배열을 나타내며, 사용자 정의 클래스 객체를 저장할 수 있습니다.
- 학생 객체를 추가하고 목록을 출력합니다.
11. 인터페이스와 추상 클래스:
Java에서 인터페이스와 추상 클래스를 사용하여 클래스를 정의하고 상속을 통해 확장할 수 있습니다.
javaCopy code
// 인터페이스 정의
interface Shape {
double getArea();
}
// 추상 클래스 정의
abstract class AbstractShape implements Shape {
// 공통 메서드
public void printInfo() {
System.out.println("이 도형은 넓이가 " + getArea() + "입니다.");
}
}
// 구체적인 도형 클래스 정의 (원)
class Circle extends AbstractShape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double getArea() {
return Math.PI * radius * radius;
}
}
public class InterfacesAndAbstractClasses {
public static void main(String[] args) {
Circle circle = new Circle(5);
circle.printInfo();
}
}
- Shape 인터페이스는 도형의 넓이를 계산하는 getArea 메서드를 정의합니다.
- AbstractShape 추상 클래스는 Shape 인터페이스를 구현하며 공통 메서드 **printInfo**를 가집니다.
- Circle 클래스는 **AbstractShape**를 상속받고 getArea 메서드를 오버라이딩하여 원의 넓이를 계산합니다.
12. 파일 입출력:
Java에서 파일을 읽고 쓰는 방법을 알아봅시다.
javaCopy code
import java.io.*;
public class FileIO {
public static void main(String[] args) {
// 파일 쓰기
try {
FileWriter writer = new FileWriter("sample.txt");
writer.write("안녕하세요, 파일 입출력 예제입니다.");
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
// 파일 읽기
try {
FileReader reader = new FileReader("sample.txt");
BufferedReader bufferedReader = new BufferedReader(reader);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
- **FileWriter**를 사용하여 파일에 문자열을 쓸 수 있습니다.
- **FileReader**와 **BufferedReader**를 사용하여 파일에서 문자열을 읽을 수 있습니다.
13. 스레드와 병렬 프로그래밍:
Java에서 멀티스레딩을 사용하여 병렬 프로그래밍을 구현할 수 있습니다.
javaCopy code
public class Multithreading {
public static void main(String[] args) {
Thread thread1 = new Thread(new MyRunnable("Thread 1"));
Thread thread2 = new Thread(new MyRunnable("Thread 2"));
thread1.start();
thread2.start();
}
}
class MyRunnable implements Runnable {
private String name;
public MyRunnable(String name) {
this.name = name;
}
@Override
public void run() {
for (int i = 1; i <= 5; i++) {
System.out.println(name + ": " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
- Thread 클래스와 Runnable 인터페이스를 사용하여 스레드를 생성하고 실행할 수 있습니다.
- MyRunnable 클래스는 스레드가 실행할 작업을 정의합니다. 스레드는 병렬로 실행됩니다.

다음과 같은 답변을 받기 위해
저는 GPT에게 백엔드 개발자, 최고의 java강사라는 역할을 부여해주었고
초보자도 이해하기 쉽도록 코드를 활용하여
java 입문자에게 설명을 해달라는 부탁을 하여
다음과 같은 답변을 받게 되었습니다!
그럼 같이 java공부 화이팅해봅시다!
'스터디 > java' 카테고리의 다른 글
자바 독학 [자바의 정석 | Ch5 ] : 스터디 기록 3 (0) | 2023.09.27 |
---|---|
자바 독학 [자바의 정석] : 스터디 기록 2 (0) | 2023.09.15 |
자바 리듬게임 만들기 ( 7강 ) (0) | 2023.08.13 |
자바 리듬게임 만들기 ( 4 - 6 강 ) (0) | 2023.08.06 |
자바 리듬게임 만들기 ( 1 - 3강 ) (0) | 2023.07.29 |