본문 바로가기

분류 전체보기32

[Java] 자바는 Call by value? Call by reference? Call by value 변수의 값을 복사해 함수의 매개변수로 전달하는 것. 때문에 넘겨받은 함수의 인자값을 아무리 변경해도 외부에서는 그 값이 변경되지 않는다. 자바의 메소드 호출 방식에 대해 아래 예제를 통해 자세히 살펴보자. Example 1) swap() 함수를 통해 값을 변경한 듯 하지만 출력 결과는 swap전과 동일하다. 이는 x, y에는 a, b의 메모리 주소가 아니라 값만 복사되었기 때문이다. public class Test { public static void swap(int x, int y) { int temp = x; x = y; y = temp; } public static void main(String[] args) { int a = 10; int b = 20; System.out.. 2021. 4. 29.
[Java] static ? final ? static final ? static Java에서 static은 클래스 멤버(정적)를 설정하는 키워드이다. Java 프로그램이 실행될 때 JVM에 의해 클래스 로딩을 하는데 static을 사용한 모든 멤버는 JVM의 메소드 영역에 올라간다. 따라서, 별도의 객체 생성없이 사용 가능하며 객체 간에 데이터가 공유된다. 단, static 메소드가 아닌 곳에서는 언제든 객체 생성없이도 static 요소들에 접근할 수 있지만 static 메소드 안에서는 static이 아닌 외부에 접근할 수 없다. final 마지막, 최종적이라는 의미로 Java에서 final은 상수, 메소드, 클래스를 정의한 뒤 변경하지 못하게 할 때 사용된다. 상수 정의: 상수에 언제든 값을 한 번 저장하고 다시 바꾸지 않을 때 사용 메소드에 사용: 오버라이딩을 못 하.. 2021. 4. 29.
[Java] 객체 지향 프로그래밍 (OOP: Object-Oriented Programming) 객체 지향 프로그래밍이란? 객체 지향 프로그래밍(OOP: Object-Oriented Programming)은 컴퓨터 프로그램을 객체(Object)라는 여러 개의 독립된 단위의 모임으로 파악하고자 하는 컴퓨터 프로그래밍의 패러다임 중 하나이다. 각각의 객체는 메시지를 주고 받고, 데이터를 처리할 수 있다. 장점 강한 응집력 (Strong Cohesion) 응집력: 프로그램의 한 요소가 해당 기능을 수행하기 위해 얼마만큼의 연관된 책임과 아이디어가 뭉쳐 있는지를 나타내는 정도 클래스에 하나의 문제 해결을 위해 데이터를 모아 놓은 객체를 활용한 프로그래밍을 지향하므로 응집력 강화 약한 결합력 (Week Coupling) 결합력: 프로그램 코드가 한 요소가 다른 것과 얼마나 강력하게 연결되어 있는지, 얼마나 .. 2021. 4. 29.
[Java] JVM이란? 그리고 Garbage Collector JVM(Java Virtual Machine) 이란? 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 이를 자바 API와 함께 실행하는 역할을 한다. 또한, JAVA와 OS 사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 해준다. 그리고 가장 중요한 메모리 관리, Garbage Collection을 수행한다. JVM의 구성 Class Loader (클래스 로더) 자바 컴파일러에 의해 컴파일된 바이트코드(.class파일)을 JVM의 Runtime Data Area로 로드하는 역할을 한다. 이는 자바 애플리케이션이 실행 중일때 (runtime) 수행된다. Execution Engine (실행 엔진) 클래스 로더가 로드한 바이트코드를 실행시킨다. 이때 바이트코드(.class.. 2021. 4. 28.