본문 바로가기

컴퓨터공부/Java

[java 자바공부] < 19 > 란 JDK 란?, 객체 지향 프로그래밍 , 함수형 프로그래밍, 참조 변수와 필드는 무슨 차이

by Life & study 2023. 10. 28.
반응형

[java 자바공부] < 19 > 란 JDK 란?, 객체 지향 프로그래밍 , 함수형 프로그래밍, 참조 변수와 필드는 무슨 차이

< 19 > 란 JDK 로 몇 버전일까?

 

 

java.lang.Runnable public abstract void run()
Runs this operation.

  < 19 >

 

java.lang.Runnable 인터페이스의 run 메서드는 Java의 초기 버전인 JDK 1.0부터 존재합니다. 따라서 JDK 19 버전에도 포함되어 있습니다. 이 인터페이스와 run 메서드는 자바의 멀티스레딩을 구현하는데 기본적으로 사용되며, 람다 표현식이나 스트림 API와 함께 사용되기도 합니다.

 

결론,

19버전 까지 포함되어있는것 뜻한다.

 

 

 

 

객체 지향 프로그래밍(Class)

 

사용 사례: 복잡한 시스템 모델링, 재사용 가능한 코드 작성, 데이터와 메서드를 하나의 단위로 묶어 관리
설명: 객체지향 프로그래밍은 실제 세계의 사물이나 개념을 객체로 모델링하는데 이점이 있습니다. 예를 들어, '사람'이라는 클래스를 만들고, 이 클래스에 '이름', '나이' 같은 속성과 '달리기', '먹기' 같은 메서드를 추가할 수 있습니다.

 

class Person {
    String name;
    int age;
    
    void run() {
        // Run action
    }
    
    void eat() {
        // Eat action
    }
}

 

 

 

 

함수형 프로그래밍(Function)

 

용 사례: 병렬 처리, 비동기 처리, 순수 함수를 필요로 하는 상황
설명: 함수형 프로그래밍은 입력을 받아 출력을 내는 순수 함수에 초점을 맞춥니다. 이는 복잡한 상태 관리를 피하고, 병렬 처리와 같은 고급 기능을 쉽게 구현하는데 도움이 됩니다. 자바 8 이후부터는 람다 표현식을 통해 함수형 프로그래밍을 지원하고 있습니다.

 

java
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
numbers.stream()
       .filter(n -> n % 2 == 0)
       .forEach(System.out::println);


위의 코드는 numbers 리스트에서 짝수를 필터링하고, 그 결과를 출력하는 함수형 프로그래밍의 예입니다.

결국, 

두 방식 모두 자바에서 중요한 역할을 하며, 문제의 복잡성, 성능 요구 사항, 팀의 능력 등을 고려하여 적절하게 선택하고 사용해야 합니다.

 

 

 

참조 변수와 필드는 무슨 차이인가?

 

참조 변수(Reference Variable):
참조 변수는 객체의 메모리 주소를 가리키는 변수를 말합니다. 즉, 객체를 참조(가리키는)하는 역할을 합니다. 이 변수를 통해 객체의 필드나 메소드에 접근할 수 있습니다. 예를 들어, String str = new String("안녕하세요");에서 'str'은 String 객체를 참조하는 참조 변수입니다.


필드(Field):
필드는 클래스나 인터페이스의 멤버 변수를 의미합니다. 객체의 상태를 나타내는데 사용되며, 클래스 내부에서 선언되어 클래스의 인스턴스(객체)가 생성될 때 메모리에 할당됩니다. 필드 값은 해당 객체의 상태를 결정합니다. 예를 들어 public class Car { private String color; }에서 'color'는 Car 클래스의 필드입니다.

 

즉, '참조 변수'는 객체를 가리키는 역할을 하고, '필드'는 객체의 상태를 표현하는 역할을 합니다.

 

결론 참조 변수는 객체를 가리키고,

필드는 

클래스 내부에 객체의 상태를 표현한 것이다.

 

 

 

 

자바에서 객체와 참조 변수의 관계

자바에서 객체와 참조 변수의 관계

tv t;   ->   t = null

t = new TV();   ->   t
                     |
                     v
                   new TV()



자바에서 객체와 참조 변수의 관계
를 이해할 수 있습니다


객체를 생성한다는것은

t = new TV(); 

 new TV();는 TV 클래스의 새로운 인스턴스, 즉 객체를 생성하는 코드입니다. 이 객체는 메모리 공간에 할당됩니다.

t = new TV();에서 t는 TV 클래스의 객체를 참조(가리키는)하는 변수입니다. 이 변수를 통해 TV 객체를 조작하거나 사용할 수 있습니다. 즉, t는 TV 객체의 '조종자' 또는 '핸들러'라고 생각할 수 있습니다.

 

 

 

 

자바에서 객체의 배열은 참조 변수의 배열이다?

 

자바에서 객체의 배열은 참조 변수의 배열이다?

자바에서 객체의 배열은 참조 변수의 배열입니다. 간단히 말해서, 객체 배열은 객체에 대한 참조를 저장하는 변수들의 배열입니다.

예를 들어, TV[] tvArray = new TV[3]; 라는 코드를 보겠습니다. 이 코드는 TV 타입의 객체를 참조할 수 있는 참조 변수 3개를 저장하는 배열 tvArray를 생성합니다.

하지만, 이 시점에서는 아직 배열의 각 요소가 실제 TV 객체를 참조하고 있는 것은 아닙니다. 각 요소는 null 상태입니다. 각 요소가 실제 객체를 참조하게 하려면, 각각의 요소에 대해 new TV()를 호출하여 TV 객체를 생성하고 할당해야 합니다.

예를 들어, tvArray[0] = new TV(); 코드는 새로운 TV 객체를 생성하고, 그 객체를 tvArray 배열의 첫 번째 요소가 참조하도록 합니다.

 

TV[] tvArray = new TV[3]; 

tvArray : [null, null, null]

tvArray[0] = new TV(); 

tvArray : [TV 객체, null, null]
          |
          v
        new TV()



그림에서, 화살표는 tvArray의 첫 번째 요소가 TV 객체를 참조하고 있음을 나타냅니다. 이렇게 배열의 각 요소를 통해 각각의 TV 객체를 조작할 수 있습니다.

댓글