본문 바로가기

자바39

JAVA - null 과 ""(빈값)의 차이는 무엇일까? / 메모리상의 차이 자바에서 공백 값과 널(Null) 값의 차이는? 안녕하세요. 고코더 입니다. 자바에서 null 값과 ""(빈 공백)은 어떻게 다른지 알아보려고 합니다. 얼핏보면 비슷해보이지만 완전히 다른 개념을 가지고 있습니다. ● 1. null 널(null)은 어떠한 값으로도 초기화 되지 않은 것입니다. 이렇게 초기화된 데이터는 내가 사용할 예정이다 정도로 컴파일러는 생각합니다. 그래서 참조형이지만 힙메모리상에 데이터를 만들어 내지 않습니다. 1String a = null; cs ● 2. ""(공백) 공백 값은 사실 하나의 스트링입니다. 예를 들면 "gocoder"로 변수를 선언한거처럼 빈 값을 메모리에 할당한 행동입니다. 1String b = "";cs ● 3. 차이점 다시 정리 null은 사용하겠다고 예고만 해놓은.. 2020. 3. 17.
JAVA - 옵저버 패턴(Observer Pattern) 이론만 쉽게 설명 자바 옵저버 패턴을 분석 해보자 안녕하세요. 고코더 입니다. 오늘은 옵저버 패턴에 대해 알아봅니다. 좋은 글들이 많지만 조금은 어려운게 많아 최대한 쉽게 설명해보겠습니다. ● 1. 옵저버 패턴이란? 옵저버 패턴(Observer Pattern)을 이해 할때 좋은 이미지가 있습니다. 바로 스타크래프트에 옵저버 입니다. 프로게이머는 이 유닛들에게 명령을 내립니다. 예를 들면 "모두 본부로 귀환하라" 그럼 통지 받은 옵저버들은 본부로 이동합니다. 그러다 중간에 옵저버가 파괴 되기도 하고 대열에 이탈하기도 합니다. 그렇지만 다른 옵저버들은 각자 할일을 합니다. 느슨한 관계입니다. 마우스가 주체이고 옵저버들이 객체 입니다. 마우스가 많은 옵저버에게 명령을 내리는 1:N (1대다) 관계입니다. 이 와 같은 모습이 옵.. 2020. 3. 17.
JAVA - "equals"와 "==" 차이점을 알아봅시다. 이퀄과 == 두 개의 비교 기능 뭐가 다를까? 안녕하세요. 고코더 입니다. 자바에서는 대표적인 두 가지 데이터 비교 방법이 존재합니다. 바로 "equals"와 "==" 입니다. ● 1. 공통점 우선 공통점 부터 다뤄보려고 합니다. 이 둘은 데이터를 비교하는 기능을 합니다. 비교한 데이터를 논리형으로 리턴합니다. 즉 true 아니면 false 겠죠. 이런 기능을 통해 두 개의 데이터를 비교하여서 로직을 완성합니다. ● 2. 형태의 차이점 이 둘은 근본적으로 형태가 다른 점이 존재합니다. equals() 는 메소드입니다. 열기 닫기를 같이 쓰는걸 보면 메소드 이란걸 알 수 있습니다. == 는 비교 연산자입니다. 비교를 위한 연산자 입니다. ● 3. 비교 방식 이제 진짜 다른 점을 다루겠습니다. equals .. 2020. 3. 16.
JAVA - 참조형(Reference)이란? / 대표적인 예시 참조형을 알아보자 안녕하세요. 고코더 입니다. 오늘은 참조형을 알아보려고 합니다. 이전에 알아본 기본형이랑 다른 속성이라고 생각하면 됩니다. 참조형은 객체의 저장 공간을 주소를 저장합니다. 기본형 8가지 이외에는 모두 참조형이라고 생각하면 쉽습니니다. 참조형 변수는 null 값을 기본으로 가지고 있고 정의된 생성자를 통해 생성 됩니다. 힙 메모리 공간에 저장 됩니다. - 기본형을 제외한 자료형 - 참조 값을 가진다. - 클래스를 자료형으로 선언할때 - 배열, 스트링등 - 힙(heap)의 할당 된다.Reference type(참조형) 대표적인 참조형 ● 배열 1int[] gocoder_arry = {1, 2, 3};cs ● 열거 1Enumeration e = g.elements();cs ● 클래스 1Goc.. 2020. 3. 16.
JAVA - 스태틱(Static) 이란? / 예제소스 스태틱이란 무엇일까요? 안녕하세요. 고코더 입니다. 스태틱이 붙은 변수나 메소드는 동적으로 생성할 필요 없이 바로 꺼내쓸수 있습니다. 전역변수 입니다. 프로젝트 어디에서든 쉽게 접근이 가능합니다. 공통으로 자주 꺼내어 사용해야 할 데이터들을 관리할때 좋습니다. 메모리 종류에 대한 글을 한번 더 확인해보세요. -> JAVA 메모리 - 스태틱(static), 스택(stack), 힙(heap) 이란? - static은 변수나 메소드에 키워드로 사용 - static 키워드를 사용하면 클래스가 메모리에 올라갈 때 자동으로 생성 후 고정 - 인스턴스 생성 없이 사용가능 ● 1. 어떤 상황에서 사용할까요? 자주 사용하지만 프로그램마다 공통으로 써야 하는 부분에서 사용해야 합니다. 실무에서는 보통 로그인한 고유키를 저.. 2020. 3. 16.
JAVA - 클래스(Class)란? / 예제소스 / 비유 클래스란 무엇인가? 안녕하세요. 고코더 입니다. 가장 기초적인 개념인 클래스를 알아보려고 합니다. 변수와 메소드의 집합인 이 클래스는 영어 번역 그대로 교실같은 역할을 합니다. 동일한 속성을 모아둔 형식입니다. 일종의 템플릿이라고 말할 수도 있습니다. 객체를 만들기 위한 틀이라고도 합니다. ● 1. 예시 클래스를 비유하자면 공장과 같습니다. 자동차 공장에서는 다양한 종류의 자동차와 옵션으로 제품을 찍어냅니다. 공장은 이 모든 기능을 갖추고 있습니다. 아반떼를 생산하다가 산타페를 생산할 수도 있고 2020년 아반떼의 풀옵션을 찍어내다가 기본옵션을 찍어내기도 합니다. 이것처럼 각종 기능을 만들어두고 다양한 객체를 생산하는게 클래스 입니다. 다시 말해 공장이 여러가지 틀로 만들어서 다양한 상품을 찍어낼 수 있.. 2020. 3. 16.
JAVA - 생성자(Constructor)란? / 예제소스 생성자란 무엇인지 알아보자 안녕하세요. 고코더 입니다. 오늘은 생성자를 배워보려고 합니다. 이전에 new를 사용해서 생성자를 객체로 만드는 방법을 알아보았는데요. 오늘은 생성자가 무엇인지 자세히 알아보려고 합니다. - 생성자는 객체로 생성 가능 - 기본 생성자는 자동으로 추가 - 생성자 이름은 클래스명과 같다. - 리턴 값이 없다. - 여러개의 생성자가 존재할 수 있다. ● 1. 생성자를 객체로 NEW라는 키워드를 사용해서 생성자를 객체로 만듭니다. 그래서 생성자를 생성한다고 하면 new 부터 나오는 메소드를 말합니다. -> JAVA - new 생성자란? / 인스턴스 생성 1GocoderClass gc= new GocoderClass();cs ● 2. 기본 생성자는 자동으로 추가된다. 자바에서 클래스에서.. 2020. 3. 16.
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.