Java
1. GC(Garbage Collection)란? JAVA에서 객체가 생성되면 해당 객체는 JVM의 Heap영역의 메모리를 점유한다. 해당 객체는 현재 참조 되지 않더라도 메모리 공간을 점유한다. 물론 메모리 공간은 한정적이다. 한정적인 메모리에 현재 사용되지 않는 객체가 점유한 공간을 제때 정리해 주지 않으면 메모리 공간이 부족해 지고, 결국은 Out Of Memory Error 가 발생 할 수 밖에 없다. JAVA는 JVM을 통하여 구동된다. JAVA의 특징 중 하나로 메모리 관리를 개발자가 직접 명시적으로 수행하지 않고, JVM에서 자동으로 수행해 주는데, 이 작업을 Garbage Collection이라 하며 GarbageCollector가 작업을 수행한다. JAVA의 GC는 다음과 같은 가설을 전..
1. 해시맵(HashMap)이란? HashMap은 Java Collection Framework에 속한 구현체 클래스로 Map 인터페이스를 구현하고 있다. 그렇기 때문에 Map의 구조인 key-value쌍으로 구성되어 있다. public class HashMap extends AbstractMap implements Map, Cloneable, Serializable { } HashMap 클래스의 내부는 위와 같은 상속, 구현 관계를 가지고 있다. 하나의 HashMap에서 key는 중복을 허용하지 않고, value는 중복을 허용한다. HashMap은 key, value에 모두 null 값을 할당 할 수 있다. HashMap은 데이터 저장에 있어 순서를 보장하지 않는다. key, value 모두에 prim..
1. 클래스 변수(Class variable) vs 인스턴스 변수(Instance variable) 멤버 변수 중 static이 붙은 것은 클래스 변수, 붙지 않은 것은인스턴스 변수이다. 클래스 변수(Static 멤버) 클래스 내에 Static 키워드로 선언된 변수 처음 JVM이 실행되어 클래스가 메모리에 올라갈 때 ~ 프로그램이 종료될 때까지 유지 클래스가 여러 번 생성되어도 Static 변수는 처음 딱 한 번만 생성됨 동일한 클래스의 모든 객체들에 의해서 공유됨 인스턴스 변수(Non-static 멤버) 클래스 내에 선언된 변수 객체 생성 시마다 매번 새로운 변수가 생성됨 클래스 변수와 달리 공유되지 않음 지역변수 메소드 블럭 안에 선언된 변수로 메소드 호출 시점 ~ 메소드 종료 시점 동안 유지된다. ..
1. Java는 포인터(Pointer)가 없는 언어다? Java의 특징을 이야기 할 때 포인터(Pointer)가 없는 언어라고 이야기한다. 근데 여기서 포인터란 무엇일까? 포인터란 c언어에서 주로 사용되는 개념으로 메모리의 주소값을 저장하는 변수이다. 포인터 : 메모리의 주소값을 저장하는 변수, 어떤 이름(label)이 메모리의 어떤 주소를 가리키고 있는지에 대한 정보 // c/c++ int a = 3; int *p = &a; //a 변수의 메모리 주소 번지 그렇다면 Java에는 왜 포인터가 없다고 하는 것일까? Java에서는 포인터라는 개념대신 참조(Reference)라는 개념을 사용한다. 참조나 포인터나 둘 다 객체의 주소를 가리키고 접근할 수 있다는 점은 똑같다. 하지만 둘의 핵심적인 차이는, "포..
1. 0.1 + 0.2 는 0.3이 아닌 0.30000000000000004다? 0.1 + 0.2 는 얼마일까? 이 질문을 본다면 당연히 0.3이라고 대답할 것이다. 그렇다면 컴퓨터에서도 0.1 + 0.2 = 0.3이라는 결과가 나올까? public class App{ public static void main(String[] args){ System.out.println(0.1 + 0.2); } } 위의 코드를 실행하면 어떤 결과 값이 나올까? 당연히 0.3이라는 결과값을 기대하고 실행시킬것이다. 하지만 결과는 0.3이 아닌 0.30000000000000004가 나오게된다. Java가 아닌 JavaScript, python 등으로 실행해도 0.3이 아닌 다른 값이 나오게 된다. 왜 이런 결과값이 나오게..
데이터 타입값의 분류크기(Bytes)값의 종류 또는 범위설명 데이터 타입 값의 분류 크기 값의 종류 또는 범위 설명 boolean 논리(logic) 1 true, false 참 또는 거짓을 다룰 때 사용. char 문자(character) 2 0~65535 유니코드 문자(\u0000~\uFFFF)에 사용. byte 정수(integer) 1 -128~127 작은 범위의 정수 값 계산에 사용. short 정수(integer) 2 -32768~32767 중간 범위의 정수 값 계산에 사용. int 정수(integer) 4 -2147483648~2147483647 큰 범위의 정수 값 계산에 사용. long 정수(integer) 8 -9,223,372,036,854,775,808 ~ 9,223,372,036,854..
java 언어의 특징 1. 이식성이 높은 언어 - java 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행환경(JRE: Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능합니다. 따라서 자바 언어는 이식성이 높은 프로그래밍 언어라 할 수 있다. 2. 객체 지향 프로그래밍(OOP) - 프로그램을 개발하는 기법으로 부품에 해당하는 객체들을 먼저 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법이다.객체를 만들기 위해 설계도인 클래스를 작성해야 하고, 객체와 객체를 연결해 목적에 맞는 프로그램을 만들어 낸다. 자바는 아무리 작은 프로그램이라도 객체를 만들어 사용하게 된다. 객체지향 언어가 가져야 할 대표적인 특징에는 캡슐화(..