POJO (Plain Old Java Object) 말 그대로 "오래된 방식의 간단한 자바 객체" 이다. POJO 간단하게 말해서 필드와 Getter, Setter와 같은 기본 기능만을 갖는 기본 객체를 의미한다. 자세히는 특정 "기술"에 종속되 있는 상태로 개발하지 않는 개념을 위해 등장한 언어이다. 종속성으로 인해 시스템 업그레이드, 모듈 교체와 같은 상황에서 많은 불편함이 있었기에 POJO라는 개념이 탄생했다. (특정 기술 == Framework) 아마 자바 스프링 개발자이기에 해당 내용이 궁금할 것이다. Spring이 POJO개념을 잘 지킨 프레임워크이기 때문이다. IOC, DI, AOP 와 같은 개념들이 모두 결합력을 느슨하게 하여 의존성을 낮춤으로써 종속성이 낮아지는 현상이 발생한다. 즉, 위..
Enum == 열거형 쉽게 말해서 서로 관련이 있는 상수들의 집합을 의미한다. 자바에서는 final한 상태를 의미하며, 클래스가 만약 상수로만 구성되있다면 class 대신 enum이라고 선언하여 해당 객체는 상수의 집합이다! 라고 나타낼 수 있는 것이다. 일단 왜 쓰는지?뭐든 공부를 할때는 목적이 중요하다고 생각합니다. 내가 이걸 왜 배우는지, 언제 어디에 써먹을껀지 등....... 차근차근 코드들을 보면서 이해하고 사용해봅시다 :) 1. 간단하지만 뭔말인지? 하는 코드 int kindOf = 3; public static final int cop = 1; public static final int fireFighter = 2; public static final int docter = 3; public..
Optional을 알기 위해선 NullPointerException을 알아야 한다 ! 모든 개발자들이 무서워하는 에러 중 하나인 NullPointerException..... 직역하면 알수있는데, 말 그대로 Null값을 참조하기에 예외를 발생시킨것이다 ! 아래 코드와 같이 Null일수 있는 데이터가 있다면, 해당 값을 애초에 초기화를 시켜놓거나 Null인지 아닌지 검사를 해줘야 한다. public void nullException(){ String name = ""; name = makeName(name);// 메소드를 통해 값을 초기화 했지만 Null일수 있다. name.equals("Java"); // Null값을 가지고 문자열과 비교를 하기에 예외가 발생한다. } public void notNull..
내부클래스! ⇒ InnerClass 아무래도 프로그래밍 언어자체가 모두 영어로 되있고, 공부를 하는데에도 어느정도 영어를 알고있으면 매우 도움이 되기에 앞으로 모든 용어는 영어로만 쓰겠습니다 😂 InnerClass는 뭘까요? 이너클래스는 클래스안에 또 다른 클래스가 구성되있는겁니다. 찾아보니 주로 이벤트핸들러를 처리할 때나 안드로이드 앱을 개발할때 많이 쓴다고하네요. class A{ class B{ } public void disp(){ class C{ } } } 종류는 2가지로 나눠지는데요. Inner Member Class : 맴버 변수처럼 선언된 클래스 static, instance 클래스로 나뉩니다. Inner Local Class : 메소드안에 선언된 클래스. 지역변수처럼 선언 되있습니다. 메소..
Collection API 는 언제 어떻게 쓸까요?? Collection 이란? 일단 간단하게 컬랙션은 배열이라고 생각하면 편합니다! 하지만 배열과 다른점이 있는데요. 그점을 핵심만 정리해봤습니다. 배열과 다르게 하나의 컬랙션에 서로 다른 여러가지 데이터형이 저장 가능하다! 참조 데이터 형만 저장 가능하다. 기본 데이터형은 Wrapper클래스를 이용하거나, 오토박싱으로 저장 가능합니다. 객체인 데이터를 저장할 때마다 크기가 자동으로 늘어난다. (유용하죠?) Generic 타입을 지원한다. (이건 추후에 다뤄볼게요 흠… AutoBoxing을 안다면 이해하기 조금 쉬울겁니다.) 메서드 설명 Object[] toArray() Collection에 저장된 객체를 배열로 변환시킵니다. Iterator iterat..
요즘 스프링부트에 빠져서 웹 개발을 하다보니 자바에 대한 중요성을 점점 잃어가는거 같아서 복습할겸 중요 포인트들을 글로 남기기로 했습니다 🙂 추상 클래스 (Abstract class) 추상 클래스는 구현부 내부에 추상 메소드가 하나 이상 포함되있거나 abstract 로 정의되어있는 경우를 의미합니다. abstract class 를 상속 받은 클래스는 (하위 클래스) 필요에 의해 정의된 메소드를 overriding 하여서 사용합니다! 추상 클래스는 new연산자를 통하여 객체를 생성할 수 없습니다. 추상 클래스는 단일 상속만 가능합니다. 고로 일반변수를 가질 수 없습니다. 공통된 필드와 메소드를 정의해놓고 일반 클래스가 상속을 받을시 코드를 작성하는 시간을 절약할수 있습니다. 추상 클래스와 일반 클래스(하위..
Static 이란 뭘까요? static : 영단어를 직역하면 말 그대로 “고정된” 이란 의미를 가지고있다. static이라는 키워드를 사용하여 메소드나 변수를 만들 수 있는데 다른 말로는 정적 필드와 정적 메소드를 생성한다고 할 수 있다. 이 둘을 합쳐놓으면 정적맴버라고 말할 수 있다. 정적 필드와 정적 메소드는 인스턴스(객체)에 소속된 맴버가 아니고 클래스에 고정된 맴버이다. 이말은 즉슨 타 클래스에서 객체를 생성해 해당값을 바꾸면 또 다른 클래스에서 쓰고 있는 정적필드 혹은 정적메소드의 값도 달라지는 것이다. 클래스 로더가 클래스를 로딩하고 메소드 메모리 영역에 넣을때 클래스별로 관리가 된다. 그래서 클래스 로딩이 끝나면 어디든지 다 사용할 수 있다. Ex) 클래스명.변수명 을 사용하여 접근할 수 있..
2차원 배열에 대해서 생각을 정리해봤다. 2차원 배열은 뭘까요오오? (일단 배열이 먼지 복습 먼저 하고갑시다 !!!) 배열(Array) : 동일한 자료형(Type)의 데이터를 연속된 공간에 저장하기 위한 자료구조이다. 장점: 연관된 데이터를 저장하기 위한 변수의 선언을 줄여준다. 반복문과 같은 ~~문을(메소드...등등) 이용하여 계산과 같은 과정을 쉽게 처리할수 있다. 단점: 배열의 길이는 가변형태가 아니다. 데이터값이 증가하면 배열의 크기를 재설정 해줘야 한다. 배열안에는 같은 자료형만 올 수 있다. Ex) int,String 이 같이 담기는건 불가능 (추후에 Object을 다루게 되면 가능하다.) 그렇다면 2차원 배열은 뭐가 다를까? 2차원 배열(Array) : 동일한 자료형(Type)의 데이터를 연..
위에 제목을 이해하기 위해선 일단! 기본 자료형 Type, Wrapper클래스 에 대해서 알아야 합니다 😟 기본 자료형 Type : int(정수), long(정수), float(실수), double(실수), boolean(논리식) ….etc Wrapper Class : Integer, Long, Float, Double, Boolean …etc 이렇게 보여주면 아!!! 이거!! 이러고 있을테니 지나갑니다 흠. 박싱과 언박싱에 대한 개념을 먼저 살펴보자 ! 박싱 : 기본 타입 데이터에 대응하는 Wrapper 클래스로 만드는 동작 언박싱 : Wrapper 클래스에서 기본 타입으로 변환 // 박싱 int i = 10; Integer num = new Integer(i); // 언박싱 Integer num = ..
솔직히 이미 다 아는 내용이긴 한데 이제 곧 있으면 sql 파트를 공부할 것이고 무엇보다, 내가 api를 많이 알고 있지 못한다고 해도 객체지향개념만 완벽하게 이해하고 있다면 찾아서 쓰는건 문제가 하나도 안될것입니다…. 근데 객체지향개념이 조금이라도 잘못 잡히면??? 프로그래밍은 절망에 빠질수도 있을것 같다는 생각이 들어서 다시 한번더 정확하게 개념을 잡고자 글을 써봅니다. 객체 지향 프로그래밍: 모든 데이터를 객체로 취급하며, 바로 이 객체가 객체지향프로그래밍의 중심이 됩니다. 객체의 상태(state), 행동(behavior) 을 구체화 하는 형태의 프로그래밍이 객체지향프로그래밍 ! 이라고 말 할수 있죠. Class 클래스: 클래스는 객체를 정의하는 틀 혹은 설계도와 같은 의미입니다. 자바에서는 이러한..
JAVA 제너릭? 제너릭….자바를 공부하면서 분명 한번은 들어봤을겁니다. (안들어봤다면 자…ㅅ..ㅏ.ㄹ) 제너릭이란 : 타입의 일반화 즉, 클래스 내부에서 정하는것이 아닌 사용자 호출에 의해 타입이 지정되는 것을 의미합니다! 특정 타입이 변수에 지정되는 것이 아닌 필요에 의해 여러가지 타입을 사용하고 싶을 경우에 사용합니다! 저희는 알게 모르게 진짜 많이 썼어요 이걸…….어딜까요오?! Collection ⇒ List, Map, Set 자 한번 잘 생각해보세요! List를 사용하기위해 객체를 생성할때 어떻게 했죠? List list = new List(); 어? String 말고도 Integer, Charatcer, Double, Float 다 들어갈수 있죠? 그건 저희 마음대로 지정해서 사용하는거고요??..
Compiler : 직역하면 “해석기” 라는 의미를 가지고 있습니다! 즉, 저희가 일상생활에서 쓰는 언어인 “Hi ! What is your name?” 과 같은 언어를 기계가 이해할 수 있는 언어로 해석해주는 일종의 번역? 프로그램인거죵. 정확히 말하자면, 사람의 언어를 기계가 이해할 수 있는 기계어로 해석해주는 프로그램입니다. 자바에서 저희가 직접 작성하는 코드의 소스파일이 “사람의 언어” 컴파일을 하여 나온 언어가 목적파일 “기계어” 라고 생각하면 되죠. 그렇다면, 자바에서는 소스파일이 어떠한 형태를 가진 목적파일로 변환이 될까요? .java → Byte Code 자바 소스파일은 C, C++과 다르게 바이너리 코드가 아닌 바이트 코드의 파일로 변환하게 됩니다. 여기서 변환된 바이트코드의 파일이 바로..