클래스객체를 만들어 내기 위한 설계도 혹은 틀//클래스public class Phone{ public String os; public Long memory; public Long pixel; public void call(String number){ ... } ...}객체클래스에 선언된 모양 그대로 생성된 실체java에서 기본 원시타입이 아닌 타입의 모든 데이터를 객체(참조변수)로 인식 합니다.public class Main{ public static void main(String[] args){ phone Galaxy20,Iphone11; //객체 (구현해야할 대상, 아직 구현은 안됨) }}인스턴스클래스를 담은 일종의 클래스 변수설게도를 바탕으로 소..
이론
0. Java의 인코딩Java는 String을 처리할 때 내부(메모리상)에서는 UTF-16 BE 인코딩으로 문자열을 저장하고,송수신에서는 직렬화가 필요한 경우 변경된 UTF-8(modified UTF-8)을 사용하며 문자열을 입/출력할 때에만 사용자가 지정한 인코딩 값 또는 운영체제의 기본 인코딩 값으로 문자열을 인코딩한다.이클립스의 File encoding이 UTF-8 이라면입력(UTF-8) → 송수신(modified UTF-8) → 자바 메모리(UTF-16) → 송수신(modified UTF-8) → 출력(UTF-8)1. InputStream 과 System.in데이터 흐름을 스트림이라고 한다.스트림은 단방향이기 때문에 입력과 출력 동시에 발생할 수 없다자바에서 가장 기본이 되는 입력 스트림은 Inp..
JVM 을 통해 실행 - 운영체제 독립적, 자동으로 메모리 관리, 안정적자바 가상 머신(JVM, Java Virtual Machine) 이란?자바 프로그램 실행환경을 만들어주는 소프트웨어자바 가상 머신을 사용하면 하나의 바이트 코드(.class)를 모든 플랫폼에서 동작할 수 있기 때문에 프로그램은 다양한 CPU 환경에서 이식성 문제 없이 실행 될수 있도록한다.자바는 플랫폼에 종속적이지 않지만 자바 가상 머신은 플랫폼에 종속적이다.즉, 컴파일될 바이트 코드는 어떤 자바 가상 머신에서도 동작이 가능하기 때문에 플랫폼에 의존적이지 않다.자바 가상 머신은 플랫폼에 의존적이고 따라서 운영체제에 자바 가상 머신을 사용해야 한다.자바로 작성된 모든 프로그램은 자바 가상 머신에서만 실행될 수 있기 때문에 오라클은 웹 ..
런타입 데이터 영역(Runtime Data Area)자바 가상 머신 내 런타임 데이터 영역은 실제 클래스 파일이 적재되는 곳으로 자바 가상 머신이 OS로 부터 자바 프로그램 실행을 위한 데이터와 명령어를 저장하기 위해 할당받는 메모리 공간이다.JVM의 메모리 구조라 하면 런타입 데이터 영역을 의미한다.런타임 데이터 영역은 2가지 단위로 나누어지는데 JVM 단위와 Thread단위 이다.JVM 단위는 JVM 이 시작될때 단 하나만 생성되며, 모든 스레드가 공유한다. Method Area와 Heap 영역이 JVM단위를 사용한다.Thread 단위는 Thread 마다 하나씩 생성되며 Stack,PC Register, Native Method Stack이 여기에 해당 합니다.메소드 영역(Method Area)cla..
싱글톤 패턴이란싱글톤 패턴은 인스턴스를 불필요하게 생성하지 않고 오직 한 개의 인스턴스만 생성하여 사용되는 디자인 패턴이다.즉, 생성자의 호출이 반복적으로 이루어져도 실제로 생성되는 객체는 최조 생성된 객체를 반환 해주는것 이다.싱글톤 패턴을 사용하는 이유인스턴스를 오직 한 개만 생성하여 사용한다면 어떤 장점이 있을까?메모리 낭비 방지이미 생성된 인스턴스를 활용함으로써 속도 측면에서도 장점이 있다고 볼 수 있다.다른 클래스 간에 데이터 공유가 쉽다→ 싱글톤으로 생성 객체는 전역성을 띄기 때문에 다른 객체와 공유가 용이 하다하지만 만약 여려 클래스의 인스턴스에서 싱글톤 인스턴스의 데이터에 동시에 접근하게 된다면 동시성 문제가 생길 수 있다.인스턴스가 한 개만 존재하는 것을 보증하고 싶은 경우 싱글톤 패턴..
RAM : 메모리 지칭메모리 구조 (Memory Structure)C언어, C++, Java 등의 언어들을 이용하여 코딩을 하고 실행 파일을 실행 시키면 메모리에 로드되면서 코드에서 작성한 동작에 따라 메모리에 데이터들을 쓰고 읽습니다.좀 더 구체적으로 말하자면, 실행 파일을 만들어 실행 파일로 디스크에 저장할 겁니다. 그리고 사용자가 실행파일을 더블클릭(실행) 하면 이를 운영체제에 실행 파일을 실행하도록 요청하는 겁니다. 그러면 운영체제는 프로그램의 정보들을 읽고 메인 메모리에 공간을 할당해줍니다. 그리고 프로그램의 코드(변수, 함수 등)들을 메모리에 읽고 쓰면서 동작 합니다.하지만, 앞서 유의할 점은 임베디드 환경과 우리가 일반적인으로 사용하는 PC컴퓨터(x64 등)에서의 환경하고는 조금 차이가 있습..
래퍼클래스란?자바의 자료형은 크게 기본타입(primitive type)과 참조타입(reference type)으로 나누어진다. 대표적으로 기본타입 char, int, float, double, boolean, long, short 있고 참조 타입은 class, interface 등이 있는데 프로그래밍을 하다 보면 기본타입의 데이터를 객체로 표현해야 하는 경우가 종종 있다. 이럴 때에 기본 자료타입(primitive type)을 객체로 다르기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 한다.자바는 모든 기본타입(primitive type)값을 갖는 객체를 생성할 수 있다. 이런 객체를 포장객체라고 하는데 그 이유는 기본 타입의 값을 내부에 두고 포장하기 때문이다. 래퍼 클래스..
TreeMap이진트리를 기반으로 한 Map 컬렉션같은 Tree 구조로 이루어진 TreeSet과의 차이점은 TressSet은 그냥 값만 저장한다면, TreeMap은 키와 값이 저장된 Map,Entry를 저장한다는 점이다TreeMap에 객체를 저장하면 자동 정렬되는데, 키는 저장과 동시에 자동 오름차순으로 정렬되고 타입이 숫자일 경우 값으로, 문자열일 경우 유니코드로 정렬한다.정렬 순서는 기본적으로 부모 키값과 비교해서 키값이 낮은 것은 왼쪽 자식 노드에 키 값이 높은 것은 오른쪽 자식노트에 Map.Entry 객체를 저장한다.TreeMap은 일반적으로 Map으로써 성능이 HashMap보다 떨어진다.TreeMap은 데이터를 저장할 때 즉시 정렬하기에 추가나 삭제가 HashMap 보다 오래 걸린다.하지만 정렬된..
HashMapMap 인터페이스를 구현한 대표적인 Map 컬렉션Map은 키와 값으로 구성된 Entry 객체를 저장하는 구조를 가지고 있는 자료구조이고 여기서 키와 값은 모두 객체값은 중복 저장될 수 있지만 키는 중복 저장될 수 없다.만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다.HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보인다.HashMap은 해시 함수를 통해 '키'와 '값'이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 들어 있는 위치 또한 관계가 없다.HashMap 사용법HashMap 선언HashMap map1 = new HashMap(); ..
TreeSetHashSet과 마찬가지로 Set인터페이스를 구현한 클래스로써 객체를 중복해서 저장할 수 없고 저장순서가 유지되지 않는다는 Set의 성질을 그대로 가지고 있다.하지만 HashSet과는 달리 TreeSet은 이진 탐색 트리(BinarySearchTree)구조로 이루어져 있다.이진 탐색 트리(BinarySearchTree)는 추가와 삭제에는 시간이 조금 더 걸리지만 정렬, 검색에 높은 성능을 보이는 자료구조 이다.그렇기에 HashSet보다 데이터의 추가/삭제는 시간이 더 걸리지만 검색과 정렬에는 유리하다.레드-블랙 트리(Red-Black Tree)TressSet은 이진탐색트리 중에서도 성능을 향상시킨 레드-블랙 트리(Red-Black Tree)로 구현되어 있다.일반적인 이진 탐색 트리는 트리의 ..