Backend/Java43 [Java] Enum 정의 Enum이란 Enumeration의 앞 글자로, 열거라는 의미 관련된 상수들의 집합 자바에서는 final 로 String 과 같은 문자열이나 숫자들을 나타내는 기본 자료형의 값 고정 가능 = 이렇게 고정된 값이 상수(constant) 어떤 클래스가 상수만으로 작성되어 있으면 반드시 class 로 선언할 필요는 X 이럴 때 클래스로 선언된 부분에 enum 이라 선언 시, 이 객체는 상수의 집합임을 명시적 표현하는 것 배경 기존에는 인터페이스나 클래스 내에서 상수 선언 후 관리해옴 클래스 내에서 선언 시, 네이밍이 겹치거나 불필요하게 상수가 많아지는 단점 있음 인터페이스로 관리 시 위 단점이 일부 상쇄되나, 여전히 IDE의 적극적 지원 부족 및 타입 안정성이 떨어진다는 단점 있었음➡️ 이를 보완하며 나.. 2023. 12. 5. [Java] Pass by Value vs. Pass by Reference 메모리 할당 어떤 변수 선언 = 메모리 할당 변수를 선언하기 위해 할당되는 메모리로는 크게 스택과 힙이 있음 스택(Stack) 영역 함수의 호출과 함께 지역 변수 / 매개 변수 등이 할당됨 정렬된 방식으로 메모리 할당 및 해제됨 힙(Heap) 영역 클래스 변수나 인스턴스 변수 / 객체 등이 할당됨 우연하고 무질서하게 메모리 할당됨 ➡️ JVM 은 무질서하게 관리되는 힙 영역을 위주로, GC 통해 메모리 해제 관리함 (인스턴스 변수로 존재하는 원시 변수는 힙 영역에서 관리됨) 원시 변수(Primitive Value)의 메모리 할당 자바에서 변수는 객체가 아닌 실제 값들인 int, double, float boolean 등과 같은 원시 값(Primitive Value)들이 존재 public void test.. 2023. 12. 5. [Java] 기본 자료형 & 참조 자료형 자료형 종류 기본 자료형(Primitive Type) 참조 자료형(Reference Type) 기본 자료형 자바 컴파일러에 의해 해석되는 자료형 총 8가지의 기본형을 미리 정의 및 제공 사용 전, 반드시 선언(Declared)되어야 함 OS (운영체제)에 따라 자료형 길이 달라지지 않음 비객체 타입이기에 null 값을 가질 수 없음. 만약 기본형에 null 을 넣으려면 Wrapper Class 활용 스택(Stack) 메모리에 저장됨 동적타이핑(Dynamic typing) 정적타이핑(Static typing) 코드 작성 시간 빠름 코드 실행 속도 느림 코드 내용 및 로직 파악 쉬움 속도 중요한 작업에는 다소 부적합 / 작고 단순한 프로젝트에 적합 동적 타이핑 언어 : Python, Ruby, PHP 등 코.. 2023. 12. 5. [자바의 신] 29장 (ongoing) 29장 - 이제 주요 API도 알아봤으니 정리해봅시다 자바의 예약어 타입 관련 예약어 byte short int long float double char boolean 클래스, 메서드, 변수 선언, 객체 생성과 관련된 예약어 package import interface abstract class enum implements extends private protected public final synchronized void static return assert native new null strictfp super this transient volatile instanceof 조건 및 반복문과 관련 있는 예약어 if else switch case default for do while continue br.. 2022. 8. 31. [자바의 신] 28장 (ongoing) 28장 - 다른 서버로 데이터를 보내려면 어떻게 하면 되나요? 네트워킹(networking) 사용자들이 바로 옆에 있는 장비와 데이터를 주고 받는 작업 p.756 +++ 네트워크의 일반적인 레이어 +++ osi 7 layer TCP (Transmission Control Protocol) UDP (User Datagram Protocol) 연결 기반 프로토콜 상대방이 데이터를 받았는지 확실히 보장해줌 But 내부적으로 처리되는 절차 매우 복잡 UDP보다 비싸고 느리며 무거움 다른 장비가 데이터를 제대로 받았는지에 대한 보장 x 이번에 데이터를 받지 않아도 다음에 받는 데이터를 사용해도 되는 경우에 사용(데이터 유실이 있어도 문제 없을 때) 자바로 TCP 통신 시, 자바에서 제공하는 API 사용 = 애플리.. 2022. 8. 31. [자바의 신] 27장 (ongoing) 27장 - Serializable과 NIO도 살펴 봅시다 Serializable 정의 Serializable 인터페이스 java.io 패키지 인터페이스의 API에 선언된 변수나 메서드 없음 용도 생성한 객체를 파일로 저장하거나 저장한 객체를 읽거나 객체를 다른 서버로 보내거나 다른 서버에서 생성한 객체를 받을 때 역할 Serializable 인터페이스 구현(implements) 시 JVM에서 해당 객체는 저장하거나 다른 서버로 전송할 수 있게 해줌 serialVersionUID Serializable 인터페이스 구현 후 serialVersionUID라는 값 지정해주는 것을 권장함(별도 지정 안 하면 자바 소스가 컴파일될 때 자동으로 생성됨) static final long serialVersionUID .. 2022. 8. 18. [자바의 신] 26장 (ongoing) 26장 - 파일에 있는 것을 읽고 쓰려면 아이오를 알아야죠 I/O 역할 파일 읽거나 저장할 때 다른 서버나 디바이스로 보낼 때 I/O I = Input / O = Output 입력과 출력 통칭하는 용어 JVM을 기준으로 읽을 때 Input / 파일로 쓰거나 외부로 전송 시 Output 용어 사용 여기서의 Input과 Output : JVM 기준임을 꼭 기억해두기 초기 I/O JDK 1.4 ~ Java 7 ~ java.io 패키지에 있는 클래스만 제공 바이트 기반의 데이터 처리 위해 여러 종류의 스트림(Stream) 클래스 제공 읽기 = InputStream / 쓰기 = OutputStream 자바의 스트림 = 끊기지 않는 연속적인 데이터 바이트 아닌 char 기반 문자열로만 된 파일 작업 시 Reader.. 2022. 8. 18. [자바의 신] 25장 (ongoing) 25장 - 쓰레드는 개발자라면 알아두는 것이 좋아요 단일 쓰레드(Thread) java라는 명령어 실행 시 결과 출력하고 끝냄 ➡ 한 번 실행해 놓고, 계속 기능들 제공하는 프로그램 ex) JSP, Servlet 프로세스가 시작되는 과정 자바 프로그램 사용해 뒤에 클래스 이름 붙이고 엔터 치면 적어도 하나의 JVM 시작됨 보통 이렇게 JVM 시작되면 자바 프로세스(Proceses)가 시작됨 이 프로세스라는 울타리 안에서 여러 개의 쓰레드가 실행됨 위의 순서로 하나의 프로세스 내에 여러 쓰레드가 수행됨 But 여러 프로세스가 공유하는 하나의 쓰레드가 수행되는 일은 없음 java 명령어 사용해 클래스 실행시키면 자바 프로세스 시작 main() 메서드 수행되며 하나의 쓰레드가 시작됨 만약 많은 쓰레드 필요 시.. 2022. 8. 18. [자바의 신] 24장 24장 - 자바랭 다음으로 많이 쓰는 애들은 컬렉션 ― Part3 (Map) Map 모든 데이터는 키와 값이 존재 키 없이 값만 저장 불가 값 없이 키만 저장 불가 키는 해당 Map에서 고유해야 값은 Map에서 중복이어도 상관 x 자바의 Map은 키와 값이 1:1로 저장됨 Map 인터페이스에 선언된 메서드 리턴 타입 메서드 이름 및 매개 변수 설명 V put(K key, V value) 첫 번째 매개 변수인 키를 갖는, 두 번째 매개 변수인 값을 갖는 데이터 저장 void putAll(Map Basic XML Property file http://www.test.com Adrian, Black 자바의 자료구조 종합 정리 2022. 8. 9. 이전 1 2 3 4 5 다음