자바 언어를 공부하며 새로운 언어의 학습에 대한 어려움 및 이해가 되지 않는 부분이 많았던 것 같습니다. 공부한 내용을 바탕으로 다시한번 이해가 어려웠던 부분이나 잘 활용하지 못한 부분에 대하여 공부해 보겠습니다.
1. 삼항연산자
1
|
String result = int i%2 == 0 ? "짝수" : "홀수";
|
cs |
기본적인 연산자중 하나로 3개의 값을 가지고 연산을 수행하는 삼항 연산자 입니다. 자바에서 삼항 연산자(조건 연산자)는 짧고 간결한 방식으로 조건에 따라 다른 값을 선택하는 데 사용됩니다.
처음 접했을때 구조만 익히고 막상 사용하려 할때 응용을 잘 못해 거의 사용하지 않았으나 반복적인 숙달로 인해 어느정도 활용도를 갖고 사용할 수 있게 되었습니다.
2. 향상된 for문 (for-each문)
1
2
3
4
|
String[] sArr = new String[5];
for(String s : sArr) {
System.out.println(s);
}
|
cs |
향상된 for문은 배열이나 컬렉션을 순회하는 더 간단하고 직관적인 방법을 제공합니다. 이 문법은 요소의 인덱스를 관리할 필요 없이 순회할 수 있어 코드가 더 간결하고 읽기 쉬워집니다. 따라서 배열의 for문 활용도를 더 쉽게 만들어 줍니다.
처음 배우고 for()의 조건식 안에 무엇을 적어야할지 헷갈려 매번 고심하다 조건식을 사용해 for문을 만들었으나 이또한 반복적인 숙달로 인해 배열 및 객체배열, 컬렉션에서도 사용할 수 있게 되었습니다.
3. new 연산자
1
2
3
|
Scanner sc = new Scanner(System.in);
Object obj = new Object(" ", 0);
etc...
|
cs |
new 연산자는 객체를 생성하는 데 사용됩니다. new 연산자를 사용하면 클래스의 인스턴스를 만들고, 메모리에 할당하며, 클래스의 생성자를 호출하여 객체를 초기화할 수 있습니다.
처음 사용시 new 연산자를 적절히 사용하지 못해 입력한 값이 아닌 비어있는 값을 불러오고, 적절한 객체를 생성하지 못하고 엉뚱하게 사용하는 등의 실수를 연발시켰던 연산자 입니다. 객체지향적인 자바언어에서 필수적인 존재이며 그만큼 사용하는 양이 많아 응용도가 높아지고 있으나 아직 가끔 실수를 일으키는 연산자 이기도 합니다.
4.상속
1
2
3
4
5
6
7
|
class ParentClass {
}
class ChildClass extends ParentClass {
}
|
cs |
상속은 객체 지향 프로그래밍의 핵심 개념 중 하나로, 기존 클래스를 기반으로 새로운 클래스를 작성할 수 있게 해줍니다. 상속을 사용하면 코드의 재사용성을 높이고, 클래스 간의 관계를 명확히 할 수 있습니다.
상속관계는 사용시 어려운점은 없었으나 응용이 미흡한 부분입니다. 실제 프로젝트를 작성시 어떤상황에 어떤 유형으로 사용해야 하는지 구상하는데 대하여 아직 어려움을 겪고 있습니다.
5.인터페이스
1
2
3
4
5
6
7
8
9
10
11
|
interface InterfaceName {
void method1();
}
class ImplementingClass implements InterfaceName {
public void method1() {
}
}
|
cs |
인터페이스는 클래스가 구현해야 할 메서드의 집합을 정의하는 추상 타입입니다. 인터페이스는 메서드의 시그니처만을 포함하고, 실제 구현은 제공하지 않습니다. 인터페이스를 사용하면 클래스 간의 일관된 행동을 강제하고, 다형성을 구현할 수 있습니다.
인터페이스 역시 사용시 어려운점은 없었으나 응용이 미흡한 부분입니다. 실제 프로젝트를 작성시 어떤상황에 어떤 유형으로 사용해야 하는지 구상하는데 대하여 아직 어려움을 겪고 있습니다.
6.hashCode
1
2
3
4
5
6
|
@Override
public int hashCode() {
String hash = name + score;
return hash.hashCode();
}
|
cs |
hashCode 메서드는 객체의 해시 코드를 반환하는 데 사용됩니다. 해시 코드는 객체를 식별하는 정수 값으로, HashMap, HashSet 같은 해시 기반 컬렉션에서 객체를 효율적으로 저장하고 검색하는 데 사용됩니다. hashCode와 equals 메서드는 밀접하게 연관되어 있으며, 둘 다 올바르게 구현해야 컬렉션이 정상적으로 작동합니다.
hashCode의 기본적인 개념과 사용되는 이유는 이해하였으나 역시 어떤상황에 유용하게 쓰이는지 확실하게 이해하지 못한 부분입니다. 역시나 반복적인 사용으로 응용법을 익히고 있으나 아직 미흡한 부분이 많습니다.
7.Thread
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// 스레드 정의 방법 1. Thread 클래스 상속
public class MyThread1 extends Thread {
@Override
public void run() {
// 현재 실행 중인 스레드의 정보 : Thread.currentThread();
String name = Thread.currentThread().getName();
for (int i=0; i<10; i++) {
System.out.println(name);
}
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
import java.util.Date;
// 스레드 정의 방법 2. Runnable 인터페이스 구현
public class MyThread2 implements Runnable {
@Override
public void run() {
String name = Thread.currentThread().getName();
for (int i = 0; i < 10; i++) {
System.out.println(name);
}
}
}
|
cs |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public class ThreadRun {
public static void main(String[] args) {
Thread t1 = new MyThread1();
Runnable task = new MyThread2();
Thread t2 = new Thread(task);
t1.start();
t2.start();
}
}
|
cs |
스레드(Thread)는 프로그램 내에서 동시에 실행되는 코드의 단위를 의미합니다. 자바는 멀티스레딩을 지원하여 하나의 프로그램 내에서 여러 작업을 병렬로 수행할 수 있습니다. 스레드를 사용하는 방법은 크게 두 가지가 있습니다: Thread 클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법입니다.
스레드의 이론은 이해하였으나 이를 응용하여 작동 시키는 데에 어려움이 있습니다. 싱글 스레드까지 사용하는데에 많은 어려움이 없으나 멀티스레드의 경우 두 스레드를 순차적으로 작동시키는 데 까지 응용은 어렵게 느껴집니다.
'복습 및 실습' 카테고리의 다른 글
Git hub 웹사이트 무료 배포 (0) | 2024.08.17 |
---|---|
HTML, CSS 포트폴리오 만들기 (0) | 2024.08.16 |
CSS를 이용해 티스토리 블로그 테마 변경하기 (6) | 2024.08.15 |
미니 프로젝트 JDBC연동 (0) | 2024.08.04 |
자바 미니 프로젝트 작성 (0) | 2024.07.31 |