전체 글 295

[JAVA] 기초 - 객체지향 패러다임

💡 목표1. 객체지향 패러다임이란 뭘까? 2. 객체와 객체간에 상호작용 만들어 보기 1. 객체지향 패러다임이란 뭘까? 객체지향 패러다임(Object-Oriented Paradigm)은 소프트웨어를 설계하고 구현하는 방법론 중 하나로, 실세계의 객체를 모델링하여 소프트웨어의 복잡성을 관리하고 코드의 재사용성을 높이는 데 중점을 둡니다. 이 패러다임의 핵심은 프로그램을 상호작용하는 객체들의 집합으로 보고, 각 객체는 자신의 데이터와 행위를 갖는 독립적인 엔티티로 취급하는 것입니다.💡 "엔티티(Entity)"는 특정 속성과 행동을 가진 독립적인 단위 또는 객체를 의미합니다. 객체지향 패러다임의 주요 원칙 캡슐화(Encapsulation): 객체는 데이터(변수)와 그 데이터를 조작하는 함수(메서드)를 하나로..

JAVA/Java 기초 2024.05.20

[JAVA] 기초 - 생성자(constructor)

💡 목표1. 기본 생성자에 대해 알아보자. 2. 사용자 정의 생성자에 대해 알아보자. 3. 생성자 오버로딩이란 뭘까? 1. 기본 생성자에 대해 알아보자. 생성자(Constructor)는 클래스의 인스턴스, 즉 객체를 생성할 때 호출되는 특별한 유형의 메서드이다. 객체의 초기화를 담당하며, 객체가 올바르게 사용될 수 있도록 필요한 값들을 설정하고, 필요한 초기화 코드를 실행한다. 생성자의 주요 특징 생성자의 이름은 클래스의 이름과 동일해야 합니다.생성자는 반환 타입을 가지지 않으며, 심지어 void 도 사용하지 않습니다.객체 생성 시 new 키워드와 함께 자동으로 호출됩니다.생성자는 기본 생성자와 사용자 정의 생성자로 구분할 수 있습니다. 기본 생성자 (default constructor) 클래스에는 반..

JAVA/Java 기초 2024.05.20

[JAVA] 기초 - RunTime Data Area

💡 목표 1. 프로그램이 실행되면 메모리를 할당 받는다.2.인스턴스 생성과 힙 메모리. 3. String Pool 에 대해서 알아 보자. (7버전 이후 부터 Heap 안에 존재) 1. 프로그램이 실행되면 메모리를 할당 받는다.  2.인스턴스 생성과 힙 메모리 인스턴스 (instance) ●  클래스는 객체의 속성을 정의 하고, 기능을 구현하여 만들어 놓은 코드 상태(설계도면) 입니다.● 실제 클래스 기반으로 생성된 객체(인스턴스)는 각각 다른 멤버 변수 값을 가지게 됩니다.● 가령, 학생의 클래스에서 생성된 각각의 인스턴스는 각각 다른 이름, 학번, 학년등의 값을 가지게 됩니다.● new 키워드와 생성자를 사용하여 인스턴스 생성  힙 메모리 ● 생성된 인스턴스는 동적 메모리(heap memory) 에..

JAVA/Java 기초 2024.05.20

[JAVA] 파일 입력 스트림(문자 기반 스트림)

Seoul.txt, NewYork.txt 파일 생성하고 내용을 넣기기반 스트림 FileReader → 단 인코딩에 대한 단점이 존재한다                                            실행 결과______ 인코딩 설정을 위한 해결 방안파일 입력 스트림 (FileInputStream): 지정된 파일 이름으로부터 바이트 단위의 입력 스트림을 생성한다.문자 입력 스트림 변환기 (InputStreamReader): FileInputStream을 통해 읽은 바이트 데이터를 문자 데이터로 변환합니다. 여기서는 UTF-8 인코딩을 사용한다.버퍼링된 문자 입력 스트림 (BufferedReader): InputStreamReader 로부터 데이터를 효율적으로 읽기 위해 버퍼링을 추가한다. r..

JAVA/Java 기초 2024.05.20

[JAVA] 문자 기반 스트림

💡 자바 I/O에서 문자 기반 스트림의 사용 이유자바의 입출력(I/O) 시스템은 크게 두 가지 유형의 스트림을 제공합니다 바이트 기반 스트림과 문자 기반 스트림 . 문자 기반 스트림은 텍스트 데이터(문자 데이터)를 처리할 때 사용됩니다.문자 인코딩 처리: 문자 기반 스트림은 자동으로 플랫폼의 기본 문자 인코딩을 사용하여 문자 데이터를 올바르게 인코딩하거나 디코딩한다. 이는 다양한 문자 인코딩을 처리하면서 발생할 수 있는 복잡성을 추상화하고, 개발자가 문자 데이터를 쉽게 처리할 수 있도록 돕는다.국제화 지원: 유니코드와 같은 다국어 지원을 통해 전 세계적으로 소프트웨어를 배포할 때 필수적이다. 문자 기반 스트림을 사용하면 다양한 언어의 문자 처리가 간편해진다.가독성 및 편의성: 문자 데이터를 읽고 쓰는 ..

JAVA/Java 기초 2024.05.17

[JAVA] 파일 Copy (바이트기반 입/출력)

기반 스트림인 파일 입력,출력 스트림을 사용import java.io.FileInputStream;import java.io.FileOutputStream;public class FileCopy { public static void main(String[] args) { // 스트림은 기본적으로 단방향이다. (한방향으로 데이터를 흘러보낼 수 있다는 뜻) // 입력 스트림, 출력 스트림 두개가 필요하다 // 파일 경로 (복사할 대상) String sourceFilePath = "C:\\Users\\KDP\\Downloads\\a.zip"; // 목적지 파일 String destinationFilePath = "copy1.zip"; // 소요 시간 확인 long startTime = Syste..

JAVA/Java 기초 2024.05.17

[JAVA] 파일 출력 스트림(바이트 기반)

import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class MyFileOutputStream { public static void main(String[] args) { long start = System.nanoTime(); // 데이터가 존재 String data = "Hello, Java FileOutputStream \n 안녕반가워"; // 1. 파일에다가 데이터를 저장 하고 싶다면 (바이트 기반) // 자바 8버전 부터 제공 // try-catch-resource -> (자동으로 자원 닫아 준다) try (FileOutputStream fos =..

JAVA/Java 기초 2024.05.17

[JAVA] 파일 입력 스트림(바이트 기반)

기반 스트림 (Base Stream)이란 뭘까?기반 스트림은 데이터 소스와 직접 연결되는 스트림으로, 실제 데이터 읽기나 쓰기 작업을 수행한다. 이 스트림들은 데이터의 실제 입력 소스(파일, 메모리, 네트워크 연결 등)에 직접 연결되어 데이터를 바이트 단위로 읽거나 쓰는 기본적인 기능을 제공한다.바이트 기반 스트림: FileInputStream, FileOutputStream, SocketInputStream, SocketOutputStream 등이 있으며, 이들은 바이트 데이터를 처리한다.문자 기반 스트림: FileReader, FileWriter 등이 있으며, 이들은 문자 데이터를 처리한다. 보조 스트림 (Filter Stream)이란?보조 스트림은 기반 스트림 또는 다른 보조 스트림에 연결되어 사용..

JAVA/Java 기초 2024.05.16

[JAVA] 표준 입출력

자바에서 표준 입출력(Standard Input/Output)은 프로그램과 사용자 간의 기본적인 데이터 교환 방법을 제공한다.표준 입출력의 핵심 요소System.in**System.in**은 자바 프로그램의 표준 입력 스트림이다. 기본적으로 이 스트림은 키보드 입력을 받는다. 이는 InputStream 객체로, 바이트 기반의 낮은 수준의 입력 기능을 제공한다. 일반적으로, 사용자로부터 텍스트를 읽기 위해 Scanner 클래스나 **BufferedReader**와 같은 더 높은 수준의 래퍼(wrapper)를 사용하여 쉽게 데이터를 처리할 수 있다.System.out**System.out**은 자바 프로그램의 표준 출력 스트림으로, 텍스트 데이터를 콘솔에 출력한다. 이 스트림은 PrintStream 객체로,..

JAVA/Java 기초 2024.05.16

[JAVA] 도전! - 회원 가입 순서 기록 및 조회 시스템

문제 설명:사용자들이 웹사이트에 가입한 순서대로 회원 정보를 기록하고, 가입한 순서를 기준으로 회원을 조회하는 시스템을 구현하고자 합니다. 사용자는 이름과 이메일 주소로 구성되며, 시스템은 사용자가 가입한 순서대로 정보를 저장해야 합니다. 사용자를 조회할 때는 가입한 순서대로 출력해야 하며, 특정 사용자의 정보를 업데이트할 수 있어야 합니다. 해결 방법:LinkedHashMap을 사용하여 사용자의 가입 순서를 유지하면서 사용자 정보를 저장합니다. LinkedHashMap은 요소가 추가된 순서대로 요소를 저장하고 반환하는 특성이 있어 이 문제에 적합합니다. import java.util.LinkedHashMap;import java.util.Map;public class UserRegistrantionSy..

JAVA 2024.05.16