본문 바로가기

java68

JAVA 메모리 - 스태틱(static), 스택(stack), 힙(heap) 이란? 자바에서 사용하는 메모리란? 안녕하세요. 고코더 입니다. 오늘은 자바에서 메모리를 사용하는 구조와 특징을 알아보려고 합니다. 다양한 메모리 용어를 통해서 자바를 배웠지만 별로 신경쓰지 않고 개발하는 경우도 많아서 어떤 것인지 가끔 질문을 하면 헤매는 경우가 있습니다. 그래서 이번 시간에는 자바에서 사용하는 메모리 종류와 특징을 알아보려고 합니다. ● 메모리란? 메모리는 컴퓨터에서도 핵심 부품입니다. CPU가 처리할 데이터가 임시로 저장되는 그런 공간입니다. 하드디스크에 저장된 데이터를 메모리에 올려 실행 됩니다. 그래서 램을 우리가 흔히 주기억 장치라고 하고 하드디스크는 보조기억 장치라고 합니다. CPU와 함께 일을 진행하기 때문에 가장 중요한 요소 입니다. 그래서 컴퓨터가 좀 느리다 싶은데 예산이 없으.. 2020. 3. 14.
JAVA - new 생성자란? / 인스턴스 생성 자바에서 사용하는 NEW를 알아봅니다. 안녕하세요. 고코더 입니다. 자바 언어의 특징중 new를 사용해 메모리를 할당하는 기능이 있습니다. 힙(Heap) 영역에 저장할 공간을 할당해서 참조 값을 객체에게 반환하여 주는 것 입니다. 잘 아시다시피 메모리는 스택(stack)과 힙(heap) 영역으로 나누어져 있습니다. 스택은 정적이라면 힙은 참조형입니다. 큰 용량을 차지하며 해체 하기전까지 삭제되지 않습니다. 자바에서 가비지컬렉션은 힙 영역을 정리하는 역할을 합니다. 좀 더 자세히 알아봅니다. ● 좀 더 자세히 알아볼까요? 이미지로 표현하면 이렇습니다. ● 해당 그림을 보면서 순서대로 알아보겠습니다. 1. GocoderClass 라는 타입으로 gc라는 객체를 선언합니다. 2. new 를 사용하여 Gocode.. 2020. 3. 14.
JAVA 기본 접근제어자 - private 이란 / 접근 권한 / 예제 private 대해 알아보자 안녕하세요. 고코더 입니다. 외부에서는 직접 접근할 수 없는 제어자 입니다. private 접근 제어자를 사용하면 외부에 공개되지 않는 속성을 갖습니다. 접근 권한 구조도 ● priavate 접근 제어자의 공개 범위는 같은 클래스내 입니다. 가장 폐쇄적이고 외우기 쉬운 접근 관계 입니다. - 같은 클래스에서만 접근 가능 예제 소스 클래스 내에서만 사용 가능합니다. 그래서 public과 조합하여 접근하도록 인터페이스 하는 경우가 많습니다. 123456public class GocoderClass{ private String name = "고코더"; // private 로 지정하면 같은 클래스에서만 사용가능하다. private String GocoderNet() { return .. 2020. 3. 13.
JAVA 기본 접근제어자 - default 이란? / 접근 권한 / 예제 default에 대해 알아보자! 안녕하세요. 고코더 입니다. 접근제어자를 별도로 설정하지 않으면 default 접근제어자가 됩니다. 그래서 default 라고 지칭합니다. package 접근제어자라고 부르는 강의도 있긴 한데 보통 디폴트라고 지칭합니다. class 앞에도 아무것도 입력하지 않으면 기본 접근 제어자 default로 지정 됩니다. 접근 구조도 접근 권한은 아래와 같습니다. - 같은 패키지에서만 접근 가능 예제 소스 ● 변수명에 아무런 접근제한자를 입력하지 않았습니다. 그러면 자동으로 default 제한자 입니다. 같은 패키지 안에서 접근 가능하겠죠. 12345package GoCoderNet; class GocoderClass { String name= "고코더";}cs ● 같은 패키지안에서.. 2020. 3. 13.
JAVA 기본 접근제어자 - protected 이란? / 접근 범위 / 예제 protected에 대해 알아보자! 안녕하세요. 고코더 입니다. protected 접근제어자나는 부모 클래스에 대해서는 접근이 가능하나 외부에서는 접근이 불가능합니다. protected의 경우는 public이랑 비슷한 느낌이 들 수 있습니다. 상속만 하면 자유롭게 사용이 가능하기 때문입니다. 이 접근제어자는 아키텍처가 구현할 내용이 남아있거나 정확한 컨셉을 잡지 않은 경우 사용하는 경우가 있습니다. 예외가 있는 객체라면 이 접근제어자로 생성해두고 이를 수정할 수 있기 때문입니다. protected 접근 구조도 해당 접근 제어자가 접근 가능한 범위는 이와 같습니다. public이랑 가장 가까운 접근제어자 입니다. - 같은 클래스 - 같은 패키지 - 상속받은 클래스 ● protected로 변수를 선언합니다... 2020. 3. 13.
JAVA 기본 접근제어자 - public 이란? / 접근 범위 / 예제 public 을 알아보자 안녕하세요. 고코더 입니다. 지난 시간에 자바에서 사용하는 기본 접근 제어자를 배워보았습니다. 첫번째는 public 제어자를 알아봅니다. 퍼블릭은 단어 뜻 그대로 일반적인 대중적인 접근 제어자 입니다. 어떤 클래스에서도 접근 가능할 수 있도록 열어놓는다는 뜻입니다. 그리고 자바에서는 public 메소드를 통해 private 멤버에 접근할 수 있습니다. public 와 private 사이의 인터페이스 역할을 수행 하기도 합니다. public 접근 이미지 구조도 그림을 참조해보겠습니다. 퍼블릭으로 선언된 접근제어자는 같은 패키지 클래스는 물런이고 다른 패키지의 클래스도 접근이 가능합니다. 예제소스 public을 사용한 변수와 메소드 입니다. 해당 코드는 어디에서나 객체를 만들어 접근.. 2020. 3. 13.
JAVA - 접근 제어자(access modifier) / 상세하게 접근 제어자에 대해 알아봅시다. 안녕하세요. 고코더 입니다. 자바에는 다음과 같은 접근 제어자가 있다. 접근을 접근제어자 문법을 만든 이유는 외부에서 잘못 변경되는 것을 막기 위해서입니다. 사용자로부터 최소한의 정보를 제공하는 은닉성 때문입니다. 접근 제어자는 자바에서 4가지 방식이 존재합니다. 이름 기호 설명 private - 자기 자신의 클래스에서 접근 default(package) ~ 동일한 패키지 접근(명시하지 않으면 default) protected # 파생 클래스, 동일한 패키지 접근 public + 접근 제한이 없음 접근 제어자 범위 접근 제어자의 범위를 표로 나타내었습니다. private < default < protected < public 순으로 접근에 대한 범위가 넓습니다. publi.. 2020. 3. 12.
JAVA - 가비지컬렉션(garbage collection)이란? / Stop The World / 예제 자바 메모리의 쓰레기 수거? 안녕하세요. 고코더 입니다. 자바의 중요한 특징 중 하나인 가비지컬렉션을 알아봅니다. 직역하면 "쓰레기 수거"라고 번역되는데요. 말 그대로 메모리 상에 있는 쓰레기를 수거 하는 방법 입니다. 불필요하게 저장된 메모리 영역을 해체하는 기능을 합니다. 1959년 존 매카시가 개발하였습니다. 이런 특성 덕분에 자바는 알아서 메모리를 정리하기 때문에 개발이 수월한 면이 있습니다. 직접 메모리를 관리하는 C, C++ C, C++ 에서는 메모리를 명시적으로 직접 해체해야 합니다. 그래서 메모리 관리를 하지 못하면 memory leak이 발생합니다. 직접적인 메모리 영역을 다루기 때문에 더 좋은 성능으로 프로그램을 작성 할 수 있습니다. 가비지 컬렉션(GC) 예제 자바는 OS 의 메모리 .. 2020. 3. 12.
JAVA - 오버라이딩(Overriding)이란? / 예제 소스 오버라이딩을 알아보자 안녕하세요. 고코더 입니다. 오버라이딩은 상위 클래스에서 가지고 있는 메소드를 하위 클래스에서 메소드에서 재정의해서 사용할 수 있는걸 말합니다. 다시 말하면 상속에서 나온 개념입니다. 부모 클래스의 메소드를 자식 클래스의 메소드로 정의하는 것입니다. 오버라이딩시에 메소드의 이름, 매개변수, 리턴 값이 같아야 한다. book.java, bookstore.java : 오버라이딩 사용 12345678910111213141516171819 public class Book{ public String name; public int price; public void print(){ System.out.println("책 이름 "+this.name+ ", 가격은" + this.price); } }.. 2020. 3. 11.