반응형

IT/Java 12

[Java] String 객체가 메모리에서 어떻게 관리되나요?

안녕하세요오늘은 자바에서 많이 사용하는 String 객체에 대해, 메모리에서 어떻게 관리되고 비교하는지 알아보겠습니다.이거 진짜 헷갈리잖아요?자바는 문자열 처리를 위해 다양한 방법을 제공하는데요,그 중에서도 String Constant Pool의 개념이 중요한 역할을 합니다.이 개념을 이해하기 위해,아래 예제 코드로 a, b, c가 어떻게 관리되는지 자세히 분석해 보겠습니다.    예제 코드String a = new String("Hi");String b = a;String c = "Hi";이 코드에서 a, b, c는 모두 "Hi"라는 값을 가지고 있습니다.하지만 메모리에서 각각이 관리되는 방식에는 큰 차이가 있습니다.하나씩 차이점을 알아볼까요?   1. String a = new String("Hi")..

IT/Java 2024.11.07

Java에서 Stream API가 뭐에요? LinQ Stream 은 뭐에요?

안녕하세요~ 오랜만에 글을 씁니다...! 오늘은 Java 개발자들을 위해 데이터 처리를 효율적으로 수행할 수 있는 Stream API에 대해 알아보려고 합니다. Stream API는 Java 8부터 도입된 기능으로, 데이터 컬렉션을 처리하고 쿼리하는 데 매우 유용한 도구입니다. C# 에서 LinQ Stream 과 유사한 기능을 제공합니다. 이번 글에서는 Stream API의 개념, 기능 및 사용법에 대해 자세히 알아보도록 하겠습니다. Stream API란? Stream API는 Java에서 데이터 컬렉션을 처리하고 쿼리하기 위한 기능을 제공하는 API입니다. Stream은 데이터 요소들의 연속된 흐름을 나타내며, 이를 이용하여 데이터를 필터링, 변환, 정렬 및 그룹화할 수 있습니다. Stream API를..

IT/Java 2023.07.01

[Java] Arrays.sort 와 Collections.sort 정리(comparable, comparator)

정렬할 때마다 아 Python 할 걸... 생각이 들게 하는 기능 근데 또 생각하려면 기억 안나서 계속 구글링해야하는 기능 정리해두려고합니다. (회사에선 C#쓰면서 Java 못놓는 중,,,) Arrays.sort 오름차순 import java.util.Arrays; public class Sort { public static void main(String[] args) { String[] str = {"1", "5", "4", "3", "6", "2"}; for(String s : str) { // 정렬 전 출력 System.out.print(s + " "); } System.out.println(); Arrays.sort(str); // 정렬 후 출력 for(String s : str) { System..

IT/Java 2023.02.25

[JAVA 스터디][8주차] 인터페이스와 메서드

학습할 것 ● 인터페이스 정의하는 방법 ● 인터페이스 구현하는 방법 ● 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 ● 인터페이스 상속 ● 인터페이스의 기본 메소드 (Default Method), 자바 8 ● 인터페이스의 static 메소드, 자바 8 ● 인터페이스의 private 메소드, 자바 9 ​ 인터페이스란? 정의 : 다른 클래스를 작성할시 기본 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할을 담당하는 추상클래스 . 추상메소드와 상수만 포함 가능 합니다. JAVA에서 다중상속을 받을 수가 없습니다. 하지만, 인터페이스를 통해 다중 상속을 받을 수 있습니다. ​ 인터페이스 정의하는 방법? 클래스 작성방법과 유사합니다. class대신 접근 제어자 interface를 사용합니다. [publ..

IT/Java 2021.01.09

[JAVA 스터디][4주차-2] JUnit5 정의와 테스트 코드 예시

JUnit 이란? 유닛 테스트 프레임워크(XUnit) 계열 중 하나로 자바용 단위 테스트 도구 장점 : 같은 테스트 코드를 여러 번 작성하지 않게 해주고, 그 결과가 어떠해야 하는 지를 기억할 필요가 없게 하는 자동화된 해법을 제공 한다 JUnit4 → JUnit5 ??? 더 단순하고, 확장성 있게 만들기 위함 + 외부 라이브러리를 사용해야 했던 Parameter Test 등의 부가 기능을 공식적으로 지원 (JUnit 5는 런타임 시에 Java 8이상이 필요합니다. 그러나 이전 버전의 JDK로 컴파일 된 코드는 계속 테스트 할 수 있습니다.) IntelliJ는 기본적으로 JUnit 5를 지원합니다. 따라서 IntelliJ에서 JUnit 5를 실행하는 것은 매우 간단합니다. 오른쪽 클릭 –> 실행 또는 C..

IT/Java 2020.12.11

[JAVA 스터디][4주차-1] 제어문, 조건문, 반복문

4주차(1) - 목차1. 제어문2. 조건문3. 반복문 제어문이란? 프로그램의 흐름을 개발자가 원하는 방향으로 제어할 수 있는 구문 제어문의 종류 조건문 ..... if, switch 반복문 ..... for, while 조건문 if 명령문 블록의 실행 여부를 결정하는 데 사용됩니다. 주어진 조건이 참이면 해당 명령문 블록이 실행되고, 거짓이면 명령문 블록을 건너 뜁니다. 어떤 조건도 참이 아니면 마지막 else 문이 실행됩니다.if, else if, else 순서 if(condition) { // If condition is true then this block of statements will be executed } else if(condition) { // If condition is true th..

IT/Java 2020.12.11

[JAVA 스터디][3주차] 산술,비트,관계,논리 연산자 + instanceof, 화살표(->),switch, assignment(=), 3항 연산자

3주차 - 목차 1. 산술 연산자2. 비트 연산자3. 관계 연산자4. 논리 연산자5. instance of6. assignment(=) operator7. 화살표 (->) 연산자8. 3항 연산자9. 연산자 우선 순위10. (Java13) switch 연산자 1. 산술 연산자 연산자 설명 + 덧셈연산자 - 뺄셈연산자 * 곱셈연산자 / 나눗셈의 몫을 구하는 연산자 % 나눗셈의 나머지를 구하는 연산자 2. 비트 연산자 연산자 설명 & 비트 단위로 AND 연산 | 비트 단위로 OR 연산 ^ 비트 단위로 XOR 연산 ~ 비트 단위로 NOT 연산 피연산자의 비트 열의 오른쪽으로 이동(빈 공간이 음수일 경우 1, 양수일 경우 0) >>> 피연산자의 비트열의 오른쪽으로 이동(빈 공간은 0) 3. 관계 연산자 연산자 설..

IT/Java 2020.11.27

[JAVA 스터디][2주차_2] 변수 선언 및 초기화, 배열, 타입변환, 캐스팅, 타입추론 정리

2주차(1) 에 이어서... 2주차(2) - 목차 1. 변수 선언 및 초기화 2. 변수의 스코프와 라이프타임 3. 타입 변환, 캐스팅 그리고 타입 프로모션 4. 1차 및2차 배열 선언하기 5. 타입 추론, var 1. 변수 선언 및 초기화 변수란? 값을 저장할 수 있는 메모리 공간에 붙여진 이름이다. 변수라는 것을 선언하면 메모리 공간이 할당되고 할당된 메모리 공간에 이름이 붙는다.변수의 종류인스턴스 변수: 인스턴스가 생성될때 생성된다. 인스턴스 변수의 값을 읽거나 저장하려면 인스턴스를 먼저 생성해야하고 인스턴스별로 다른값을 가질수있다. 각각의 인스턴스마다 고유의 값을 가져가야할때는 인스턴스 변수로 선언을 한다.클래스 변수: 인스턴스 변수에 static만 붙여주면 된다. 인스턴스 변수는 각각 고유한 값을..

IT/Java 2020.11.21

[JAVA 스터디][2주차_1] primitive, reference 타입, 리터럴, 상수 정리

2주차(1) - 목차1. 자바 데이터 타입- 프리미티브타입- 레퍼런스 타입 2. 리터럴과 상수 JAVA 의 데이터 타입은 크게 프리미티브 타입(Primitive type)과 레퍼런스(Reference type) 타입으로 나눠집니다. 각각의 타입으로 변수 선언시 메모리에 공간이 할당됩니다. 이 때, 프리미티브 타입은 메모리를 공간에 직접 데이터를 담습니다. 레퍼런스 타입은 다른 곳을 참조하는 주소값을 담습니다. 차이점은 "메모리 참조 타입" (출처: 뇌를 자극하는 Java프로그래밍 - 한빛미디어) Primitive type 타입 할당되는 메모리 크기 default값 데이터의 표현 범위 정수형 byte 1 byte 0 -128 ~ 127 short 2 byte 0 -32,768 ~ 32,767 int 4 b..

IT/Java 2020.11.21

[JAVA 스터디][1주차_2] javac 컴파일 및 실행, JIT컴파일러 정리

1주차(1)에 이어서... 1주차(2) - 목차 5. 컴파일 하는 방법6. 실행하는 방법7. JIT 컴파일러란 무엇이며 어떻게 동작하는지 먼저, 컴파일이 무엇인지에 대해 알아보겠습니다. 인터프리터와 컴파일러 인터프리터는 사용자가 작성한 소스코드를 '한 문장씩 읽고' 바로 기계어로 바꿔줍니다. 그 후에 변환된 코드를 실행합니다. 그러나 컴파일러는 '전체 소스코드를 모두' 기계어 파일로 바꿔주고 그 후에 변환된 코드를 실행합니다. 빌드 시, 인터프리터는 큰 일을 하지 않지만 컴파일러는 기계어 소스 코드를 기계어 파일로 생성하기 때문에 오래 걸리는 것처럼 보일 수 있습니다. 그러나 그 이후 실행에서, 인터프리터는 한 줄씩 읽고 기계어로 변환하여 실행하지만 컴파일러는 만들어둔 실행파일만 읽으면 되므로 실행속도에..

IT/Java 2020.11.16
반응형