본문 바로가기

Dev.BackEnd/JAVA

(33)
[JAVA] 5. 오버로딩과 오버라이딩 Chapter 5. 오버로딩(Overloading)과 오버라이딩(Overriding)이름도 비슷한 두 개는 완전히 다른 개념이다.객체 지향적으로 설계하기 위해서는 반드시 알아야만 하는 개념이다. 오버로딩(overloading)클래스에 메소드를 정의할 때, 같은 이름이지만 서로 다른 매개변수의 형식을 가지고 있는 메소드를 여러개 정의하는 것매개변수의 선언형태가 다를 때 동일한 이름의 메소드를 정의할 수 있는 것.단 반환형이 다른 것은 메소드 오버로딩이 성립되지 않는다.중복되는 부분을 어떻게 처리할 것인가가 또 문제가 된다.this를 이용해도 중복되는 출력을 낳는다.code>class A { int a; int b; pubic void methodA(){ } public void methodB(){ } pu..
[JAVA] 4. 상속과 생성자 / extends, super Chapter 4. 상속과 생성자객체 지향 프로그래밍의 첫 주자로 상속에 대해서 알아본다.그리고 그 상속이라는 개념과 함께 생성자에 대한 개념도 통합적으로 살펴본다. 상속 자바에서의 상속은 재활용 + a 의 기능을 제공한다. 상속이란 상위 클래스를 물려받으면서 새로운 메소드나 변수를 추가하거나 변경해서 사용할 수 있도록 하는 것을 말한다. 즉 기존의 객체를 그대로 유지하면서 어떤 기능을 추가하는 방법이다. 기존의 객체가 갖고 있는 메서드들을 그대로 사용할 수 있다. 하위 클래스는 상위 클래스의 확장판인 셈이다. 상위 클래스를 확장하기엔 부담이 있을 때 상속을 사용한다. 즉, 코드를 하나 이상의 클래스에 중복적으로 추가해야하는 경우에는 상속관계를 이용해서코드의 중복을 최소화해야한다. extends라는 키워..
[JAVA] 3. 자바에서 변수와 메소드에 대하여 / 클래스 메소드, 클래스 변수 Chapter 3. 변수와 메소드자바에서는 변수의 종류가 세 가지로 나뉘어 지고 각각 올라가게 되는 메모리가 다르다.메소드 또한 클래스 메소드인지 인스턴스 메소드인지에 따라 다르다.JVM 메모리 구조와 함께 각 변수와 메소드에 대해 알아본다. 클래스 변수(static 변수) 멤버 변수라고도 한다.모든 인스턴스에서 똑같이 사용하면 되는 변수가 존재할 때,이 똑같은 정보를 한 번에 정의해주면 좋지 않을까라는 생각으로 등장하게 되었다.모든 인스턴스에게 적용될 수 있는 변수이며,모든 인스턴스가 공유하는 변수이다.클래스에 소속되어 있는 변수에 접근하여 사용할 수 있다는 것이다. 인스턴스 변수를 정의할 때 앞에 static을 추가로 정의한다. static 으로 선언된 변수는 메모리 공간 하나에만 존재하며 어디서나 ..
#가비지컬렉션(Garbage Collection) / JVM 구동원리에 이어서 #가비지 컬렉션, GC(Garbage Collection)Minor GC새로 생성된 대부분의 객체(Instance)는 Eden 영역에 위치한다. Eden영역에서 GC가 한 번 발생한 후 살아남은 객체는 Survivor 영역 중 하나로 이동된다. 이 과정을 반복하다가 계속해서 살아남아 있는 객체는 일정시간 참조되고 있다는 뜻이므로 Old영역으로 이동시킨다. Major GCOld영역에 있는 모든 객체들을 검사하여 참조되지 않은 객체들을 한꺼번에 삭제한다. 시간이 오래 걸리고 실행 중 프로세스가 정지된다. 이것을 `stop-the-world`라고 하는데 Major GC가 발생하면 GC를 실행하는 스레드를 제외한 나머지 스레드는 모두 작업을 멈춘다. GC 작업을 완료한 이후에야 중단했던 작업을 다시 시작한다. ..
#자바가상머신, JVM(Java Virtual Machine)이란 무엇인가? #JVM이란?JVM이란 JAVA Virtual Machine, 자바 가상 머신의 약자를 따서 줄여 부르는 용어이다 (가상머신이란 프로그램의 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것이다.) JVM 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것이다. 그리고 JVM은 JAVA와 OS사이에서 중개자 역할을 수행하여 JAVA가 OS에 구애받지 않고 재사용을 가능하게 해준다. 그리고 가장 중요한 메모리관리, Garbage collection을 수행한다. 그리고 JVM은 스택기반의 가상머신이다. ARM 아키텍쳐 같은 하드웨어는 레지스터 기반으로 동작하는데 비해 JVM은 스택기반으로 동작한다. 왜 자바 가상머신을 알아야 하는가?한정된 메모리를 효율적으..
[JAVA] 2. JAVA와 객체지향 / 객체란? 클래스란? 인스턴스란? 생성자란? Chapter 2. 객체지향 프로그래밍(Object-Oriented Programming)객체지향적인 프로그래밍이란 어떤 프로그래밍을 말하는가?객체란 무엇이며, 객체를 이야기할 때 나오는 클래스, 인스턴스란 무엇인가? 객체란 주변에 존재하는 모든 사물, 생명체를 의미한다.객체지향에 대해서 집중적으로 다루는 포스팅에서 좀 더 객체지향에 대해서 알고,자바에서의 객체지향이란 무엇을 말하는가를 집중적으로 알아보겠다.객체지향에 대해서 집중적으로 다루는 포스팅으로 이동하기 객체를 이루는 것은 데이터와 기능이다. 객체를 생성하기에 앞서 객체의 생성을 위한 틀을 먼저 만들어야 한다. 그리고 그 틀은 클래스를 의미한다. 클래스의 구조는 우선 변수를 선언하고 그 안에 메소드를 정의하는 형식이다. 클래스는 설계도라고 할 수..
[JAVA] 1. Java 기초적인 문법 / 코드 구성요소 Chapter 1. Java 기초적인 문법 / 코드 구성요소 컴퓨터 사이언스 공부를 시작할 때, C가 운영체제, 네트워크와 같은 기초적인 과목들이라면 웹이라는 분야에서의 JAVA도 그 기초와 같다. 그 시작, 이클립스(Eclipse)JAVA를 프로그래밍하기 위해 필요한 도구 중 하나인 IDE의 일종이다.package Explorer : 프로젝트 관리 Outline : 문법적인 요소들을 시각적으로 보여준다. 자신이 필요한 것을 빠르게 찾을 수 있도록 도와준다.Problem : 에러 상황 보고 Console : 말 그대로 콘솔창 그리고 가운데 Editor!프로젝트를 만들고, 패키지를 생성하고, 클래스를 생성하여 컴파일을 하게 되면, 워크스페이스(WorkSpace)에 두 개의 폴더가 생성된다.bin : bin..
[JAVA] 0.1 Java Coding Guideline Java Coding Guidance패키지를 표현하는 이름은 모두 소문자를 사용변수의 이름은 소문자로 시작하며 대소문자를 혼용한다.상수를 표현하는 이름은 모두 대문자로 지정하되 '_'로 단어들을 구분한다.메소드의 이름은 동사를 사용하며 소문자로 시작한다.private 접근 제한자를 갖는 클래스 변수에 '_' 접미사를 사용한다.일반적인 변수의 이름은 타입의 이름과 동일하게 작성한다.넓은 범위에 영향을 미치는 변수는 긴 이름을 부여하고, 좁은 범위의 변수는 짧은 이름을 부여한다.찾는 메소드(find), 계산하는 메소드(compute), 초기화(initialize), 엔터티 번호(No접미사)대응하는 단어가 있는 이름은 함께 사용한다.(get/set, add/remove, create/destroy, start..