Backend Study (61) 썸네일형 리스트형 [JAVA] 오토 박싱 & 오토 언박싱 자바에는 기본 타입과 Wrapper 클래스가 존재한다. - 기본 타입: int, long, float, double, boolean - Wrapper 클래스: Integer, Long, Float, Double, Boolean 박싱: 기본 타입 데이터에 대응하는 Wrapper 클래스로 만드는 동작 언박싱: Wrapper 클래스에서 기본 타입으로 변환 //박싱 int i = 10; Integer num = new Integer(i); //언박싱 Integer num = new Integer(10); int i = num.intValue(); Jdk 1.5부터는 자바 컴파일러가 박싱과 언박싱을 필요한 상황에 자동으로 처리를 해준다. // 오토 박싱 int i = 10; Integer num = i; // 오.. [JAVA] 람다와 스트림 1.1 람다식이란? 함수를 간단한 식(Expression)으로 표현하는 방법이다. int max(int a, int b){ return a>b ? a : b ; } // expression으로 표현 (a,b) -> a > b ? a : b [매개변수] -> [내용] * 함수와 메서드의 차이 함수는 일반적 용어이고, 메서드는 객체지향개념 용어이다. 함수는 클래스에 독립적이며, 메서드는 클래스에 종속적이다. 함수는 여러 문장들이 하나의 기능을 구현하도록 구성한 것이라고 할 수 있다. 그 함수 중에서 클래스 내부에 정의한 함수를 메소드라고 부르는 것이다. 1.2 람다식 작성하기 예시) int max(int a, int b){ return a > b ? a : b ; } - 메서드의 이름과 반환타입을 제거하고 .. [JAVA] 힙 메모리 사용률 1. 자바의 힙 공간이란? 자바 프로그램이 시작되면 JVM 즉 Java Virtual Machine이 운영 체제에서 일부 메모리를 가져온다. JVM은 모든 요구사항에 이 메모리를 사용하며 이 메모리의 일부를 JAVA 힙 메모리라고한다. 자바의 힙은 일반적으로 주소 공간의 맨 아래이 있으며 위쪽으로 이동을 한다. new 연산자를 사용하여 객체를 만들 때 마다 또는 다른 방법으로 객체에 힙에서 메모리가 할당되고 객체가 죽거나 가비지가 수집되면 메모리가 자바의 힙 공간으로 돌아간다. 2. 자바 힙 및 가비지 수집 우리가 알고 있듯이 객체는 힙 메모리 내부에 생성되고 가비지 컬렉션은 자바 힙 공간에서 죽은 객체를 제거하고 메모리를 자바의 힙으로 되돌리는 프로세스이다. 가비지 수집을 위해서 힙은 New Gener.. [JAVA] static 변수와 메서드 1.1 static 변수 class kimkyuriFamily{ String lastname="김"; } public class Sample { public static void main(String[] args){ kimkyuriFamily kim1 = new KimkyuriFamily(); kimkyuriFamily kim2 = new kimkyuriFamily(); } } 위 코드는 김규리 가족을 나타내는 클래스이다. 위처럼 클래스를 만들고 객체를 생성한다면, 객체마다 lastname을 저장하기 위한 메모리가 별도로 할당된다. 하지만 lastname은 모든 객체의 공통값이기 때문에, 메모리가 별도로 할당될 필요는 없다. 이렇게 값이 변하지 않는다면 static 변수를 사용하는 것이 유리하다. cla.. [JAVA] 제네릭 (Generic) 1.1 제네릭이란? - 컴파일 시 타입을 체크해주는 기능이다. - 형변환의 번거러움을 줄여주고, 타입을 체크해주므로 코드가 간결해진다. 즉, 데이터 형식에 의존하지 않고, 하나의 값이 다른 데이터 타입들을 가질 수 있도록 하는 방법이다. 1.2 활용 만약, 어떤 자료구조를 만들어 배포하려고할 때 String, Integer 모두 지원하고 싶다고 가정해보자. 이 때 String, Integer에 대한 클래스 모두 만드는 것은 비효율적이다. 이를 해결하기 위해 제네릭을 사용한다. 아래 타입들이 많이 사용된다. (암묵적인 규칙일 뿐 반드시 따라야하는 것은 아니다.) 타입 설명 Type Element Key Value Number 1.3 사용방법 # Object 객체 사용 class Box { Object it.. [JAVA]링크드리스트로 큐 구현하기 (Queue) 큐는 먼저 들어온 것이 먼저 나가는 구조이다. 은행에 먼저 온 사람이 빠른 번호표를 부여받고, 먼저 나가는 원리를 생각하면 쉽다. 이 구조를 구현하기 위해서는 큐에서 나갈 차례를 기억하고 있어야하는데, 이를 위해서 몇가지 장치가 필요하다. 많이 사용하는 용어들이 있다. (1) Enqueue: 큐 맨 뒤에 어떤 요소를 추가한다. 마지막으로 온 손님에게 번호표를 발부해주는 것과 비슷하다. (2) Dequeue: 큐 맨 앞쪽의 요소를 삭제한다. 손님의 업무가 끝나면 번호표를 삭제하는 것과 비슷하다. (3) front: 큐의 맨 앞 위치이다. 다음 서비스를 받을 손님 번호의 역할을 한다. (4) Peek: front에 위치한 데이터를 읽는다. 다음 서비스를 받을 손님의 번호를 확인한다. (5) rear: 큐의 .. [리눅스] 용량부족 해결 EC2에서 파일을 작성하려니 이런 오류가 생겼다. 오류 : E: Write error - write (28: No space left on device) E: IO Error saving source cache E: The package lists or status file could not be parsed or opened. 에러 문구를 확인한 후 바로 디스크 용량 부족을 체크하였다. 1. Inode 체크 df -i 2. 디스크 용량 체크 df -h / 경로와 snap 관련 경로의 용량이 문제 있어 보인다. 3. 구글링을 통해서 찾으니.. sudo apt autoremove --purge snapd 통해서 snapd 삭제 가능하다고 함. Reading package lists... Error! E: .. [JAVA] 오버로딩 vs 오버라이딩 1. 오버 로딩 하나의 클래스에 같은 이름의 메서드를 여러개 정의하는 것이다. 조건: 1) 메서드의 이름이 같아야한다. 2) 매개변수의 개수 또는 타입이 달라야한다. 3) 매개변수는 같고 리턴 타입이 다른 경우는 오버로딩이 성립되지 않는다. 대표적인 예시: System.out.println 메서드 void println() void println(boolean x) void println(char x) void println(double x) * 잘못된 예시 int add(int a, int b) { return a+b; } long add(int a, int b) {return (long) (a+b); } 2. 오버라이딩 조상클래스로부터 상속받은 메서드의 내용을 상속받는 클래스에 맞게 변경하는 것이다.. 이전 1 2 3 4 5 6 ··· 8 다음