플랫폼의 독립성java는 JVM(java virtual machine)을 활용하여 운영체제와 상관없이 java 프로그램을 실행시킬 수 있다.객체지향객체의 사전적 정의는 "주체에 대해 작용의 대상이 되는 쪽"이다. 너무 어려운데 예를 들어 백화점이란 큰 객체가 있고 백화
java 소스를 작성하여 실행이 되는 파일로 만드는 과정이다.java를 cmd창이나 터미널에서 실행해봤다면 javac를 통해 class파일을 만들어 본 경험이 있을텐데 개발툴로만 자바 소스를 접해본 사람은 이런 과정이 이해가 안될 수 있다.class파일을 만드는 이유는
Class는 건물을 지을 때 필요한 설계도와 같다. 그리고 객체(Object)는 설계도를 이용하여 완성된 건물을 의미한다. 즉 Class는 객체를 만들기 전 생성해놓은 java 소스로된 class로 정의한 파일을 의미하며 객체는 class로 정의된 파일을 통해 생성해낸
객체지향 언어의 가장 큰 특징으로 캡슐화(Encapsulation)을 빼놓을 수 없다. 여러 자료및 처리과정을 하나의 모듈(부품)처럼 사용하므로 객체간의 이식성이 높아지기 때문이다. 캡슐화란 관련 있는 자료, 동작들을 하나로 묶어 요약하고 사용자에게는 배우적인 접근을
메서드는 클래스의 행위를 표현하는 것으로 클래스 내의 함수로 볼 수 있다. 지금까지 공부했던 필드 변수들이 물체라면 그 물체들의 행동을 만들어주는 것이 메서드이다. 메서드는 입력값(매개변수=parameter)가 있고 그 입력값을 받아서 무언가의 결과를 반환해낸다. 그
생성자란 메모리 내 객체가 생성될 때 자동적으로 단 한번 호출되어 객체의 구조를 인식하고 생성되는 객체의 멤버변수들을 초기화하는 데 목적을 둔 것을 말한다. 생성자의 특징으로는반환 타입이 없다.생성자명이 클래스명과 같다.new 연산자 뒤로 오는 것을 생성자란 것인데.
메서드나 멤버변수에 static이라는 예약어를 정의하면 해당 멤버변수나 메서드들의 객체가 생성될 때 static 영역이라는 곳에 유일하게 생성되어지면서 모든 객체들이 공유하여 사용하게 된다.다음과 같이 사용한다.static으로 선언되었다면 객체를 생상하지 않고 사용할
String은 기본 자료형처럼(= int, float, char, boolean) 자주 사용되는 class이다. 여기서 처럼이란 의미는 String은 이 기본 자료형들과는 다르게 참조 자료형 class라는 것이다. 참조 자료형이란 객체 자체에 값을 가지는 것이 아닌 객
상속이란 부모가 보유하는 것을 자식이 물려 받는 것을 의미한다. java에서도 같은 의미인데 이는 확정성과 직결되는 의미를 지닌다.java는 단일 상속만을 지원하며 다중 상속은 지원하지 않는다. 다른 언어들은 다중 상속이 지원하는 경우가 있지만 java는 완전한 객체지
Enum은 상수를 가지고 생성되는 객체들을 한곳에 모아둔 묶음이다. 상수들을 필요한 만큼 모두 정희하는 것도 개발자에겐 귀찮은 일이므로 Enum이란 class에서 한번에 정의할 수 있는 것이다.과 같이 정의할 수 있다.과 같이 상수를 하나의 묶음에서 객체처럼 가져와서
재귀 호출(recursive call)이란 재귀 호출이란 method를 설계할 때 자기 자신을 다시 불러서 사용한다라는 개념인데 코드로 보자면 코드를 실행하면 5부터 1까지 프린트되는 걸 확인할 수 있다. num이란 메서드 안에서 num을 또 호출하는 것인데 이는
다형성이란 여러가지 형태를 가질 수 있는 능력을 의미하며 java에서는 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 만드는 것을 다형성이라고 한다.예를 들어와 같이 Tv를 상속받은 SamsungTv calss가 존재할 경우Tv라는 부모 클래
기존 클래스가 완성된 하나의 설계도라면 추상 클래스는 완성되지 못한 설계도라고 할 수 있다. 여기서 그럼 왜 완성된 설계도를 사용하면 되지 미완성된 설계도가 필요하냐 물어볼 수도 있는데. 미완성된 설계도로 틀을 만들어 여러 설계도를 완성시키는데 활용할 수 있다.와 같이
컬렉션 프레임워크란 데이터들을 저장하는 클래스들을 표준화한 설계를 의미한다. 우리가 흔히 사용하는 List와 Set, Map 등은 JDK1.2 이후로 등장하여 사용하고 있다. 인터페이스 List와 Set은 서로 많은 공통부분이 있어서 공통된 부분을 다시 Collecti
ArrayList는 List 인터페이스를 구현하기 때문에 데이터의 저장순서가 유지되고 중복을 허용한다는 특징을 갖는다. 기존의 Vector를 개선한 것으로 Vector와 구현원기와 기능적인 측면에서 동일하다고 볼 수 있다. ArrayList는 Object 배열을 이용해
배열은 가장 기본적인 형태의 자료구조로 구조가 간단하며 사용하기 쉽고 데이터를 읽어 오는데 걸리는 시간(접근시간)이 빠르다는 장점이 있다 하지만 크기를 변경하는데 메모리 소비가 크고 배열 중간에 데이터를 추가하거나 삭제할 때 소모되는 값이 크다는 단점을 가진다. 이러한
java에서 제공되는 Stack과 Queue를 알아보기 전에 자료구조의 Stack과 Queue의 개념을 알아보자. 물론 둘이 차이가 있다는 것은 아니고 개념을 먼저 살펴보자는 말이다.Stack은 마지막에 저장한 데이터를 먼저 꺼내게 되는 LIFO(Last In Firs
프로세스(process)OS로부터 실행에 필요한 자원(메모리)를 할당 받은 프로그램이다.프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레도로 구성되어있다.프로세스에서는 최소 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 멀티 프로
java의 가장 큰 변화가 2번 있는데, 한번은 jdk 1.5에 제네릭의 등장이고, 두번째는 jdk 1.8에 등장한 람다식의 등장이다.람다식의 등장은 자바가 객체지향언어인 동시에 함수형 언어가 될 수 있게 되었는데, 람다식이란 메서드를 하나의 식으로 표현한 것이다. 람
스트림 컬렉션이나 배열에 데이터를 담고 원하는 결과를 얻기 위해 for문과 iterator를 이용해서 코드를 작성했다. 그러나 이러한 방식은 코드의 독해성이 떨어지고 재사용성도 떨어진다. 또한 Collection과 Iterator는 같은 기능의 메서드들이 중복해서 정의
입출력은 컴퓨터 내부 또는 외부 장치와 프로그램간 데이터를 주고받는 것을 말한다.저번에 학습했던 스트림과 같은 용어를 쓰지만 다른 개념의 입출력의 스트림이란 데이터를 운반하는데 사용되는 연결 통로이다. 물이 한쪽 방향으로만 흐르는 것과 같이 스트림은 단방향 통싱만 가능
객체를 컴퓨터에 저장했다가 다음에 다시 꺼내어 쓰거나 네트워크를 통해 컴퓨터간 객체를 서로 주고 받을 수 없을까? 그것을 가능하게 해주는 것이 직렬화(Serialization)이다.직렬화란 객체를 데이터 스트림으로 만드는 것을 뜻한다. 데이터를 스트림에 쓰기위해 연속적
네트워킹이란 두 대 이상의 컴퓨터를 케이블로 연결하여 네으워크를 구성하는 것을 말한다. 네트워킹의 개념은 컴퓨터들을 서로 연결하여 데이터를 손쉽게 주고받거나 주변기기를 함께 공유하고자 하는 노력에서 시작되었다.서버는 서비스를 제공하는 컴퓨터, 클라이언트는 서비스를 사용
😂 Java11은 왜... Java8과 경쟁상대로 가장 많이 언급되었던 Java version은 11이였다. 그 이유는 우선 LTS였기 때문이였는데. Oracle 사에서 Java8을 사용한 프로젝트들이 너무 많음을 고려하여 Java8이 Java11보다 더 긴 지원기간
api를 만들다 보면다음과 같은 데이터 형식이 있는데 data는 Object로 선언되어 있어서 일정한 규칙이 정해져 있지 않다.그래서 데이터를 파싱함에 있어서 objectMapper의 class가 정확히 정의되지 않을 경우가 많다.데이터의 구조를 살펴보면 다음과 같은