Lang 9

.jar 파일

오늘은 '이것이 자바다'의 Ch.라이브러리와 모듈 파트를 읽었다.모둘 배포용 JAR파일 파트에서 의문이었던 점Q. .jar파일은 배포도 가능하고, 라이브러리로도 가능한 파일인 것인가? A. 그렇다..jar(Java ARchive) 파일은 라이브러리로도 사용할 수 있고 배포용으로도 사용할 수 있는 일종의 압축 파일이다.1. 라이브러리로 사용하는 경우여러 개의 .class 파일과 필요한 리소스(설정 파일, 이미지 등)를 .jar 파일로 묶어서 배포하면, 다른 프로젝트에서 이 파일을 라이브러리로 활용할 수 있다.예를 들어, mysql-connector-java.jar 같은 데이터베이스 드라이버를 프로젝트에 추가하면, 우리가 직접 .class 파일을 하나하나 복사하지 않아도 됨.이때는 JAR 안에 메인 실행 클..

스트림 요소 처리

스트림이란?여태 컬렉션, 배열에 저장된 요소를 반복처리 하기 위해 for문을 사용하거나 iterator 반복자를 이용했다면, 또 다른 방법으로는 스트림을 사용할 수 있다.스트림은 요소들이 하나씩 흘러가면서 처리된다는 의미를 가지고 있다.List 컬렉션에서 요소를 반복처리 하기 위해 스트림을 사용// List의 stream()메소드로 Stream객체를 얻음Stream stream = list.stream();// forEach메소드로 요소를 어떻게 처리할 지 람다식으로 제공한다.stream.forEach( item -> // item 처리); 특징내부 반복자이므로 처리 속도가 빠르고 병렬 처리에 효율적이다.람다식으로 다양한 요소 처리를 정의할 수 있다.중간 처리와 최종 처리를 수행하도록 파이프 라인을 형성..

Lang/Java 2024.12.26

람다식

람다식이란?함수형 프로그래밍이란 함수를 정의하고 이 함수를 데이터 처리부로 보내 데이터를 처리하는 기법을 말한다. 데이터 처리부는 데이터만 가지고 있을 뿐, 처리 방법이 정해져 있지 않아 외부에서 제공된 함수에 의존한다.데이터 처리부는 제공된 함수의 입력값으로 데이터를 넣고, 함수에 정의된 처리 내용을 실행한다. 이것이 바로 메소드동일한 데이터라도 각 함수의 처리 내용에 따라 결과가 달라질 수 있는 것이다.이것은 함수형 프로그래밍의 특징으로, 데이터 처리의 다형성이라고도 볼 수 있다. 람다식은 데이터 처리부에 제공되는 함수 역할을 하는 매개변수를 가진 중괄호 블록이다. 데이터 처리부는 람다식을 받아 매개변수에 데이터를 대입하고 중괄호를 실행시켜 처리한다.람다식: (매개변수, ...) -> { 처리 내용 ..

Lang/Java 2024.12.17

스레드

멀티 스레드, 멀티 프로세스 개념운영체제는 실행중인 프로그램을 프로세스로 관리한다.운영체제는 멀티 프로세스를 생성해서 멀티 태스킹처리한다.하나의 프로세스 내에서 멀티 태스킹(두가지 일을 동시에 처리)할 수 있도록 하기 위해서 만들어진 프로그램:  메신저 채팅작업 + 파일 전송 동시 작업하나의 프로세스가 두가 이상의 작업을 처리할 수 있는 이유는 멀티 스레드가 있기 때문이다. 스레드: 코드의 처리 흐름을 말한다. 프로세스 내에 스레드가 두 개라면, 두 개의 코드 실행 흐름이 생긴다는 의미이다.멀티 프로세스가 프로그램 단위의 멀티태스킹이라면 멀티 스레드는 프로그램 내부에서의 멀티태스킹이라고 볼 수 있다. 멀티 프로세스서로 독립적으로, 하나의 프로세스에서 오류가 발생해도 다른 프로레스에게 영향을 미치지 않는다..

Lang/Java 2024.12.16

제네릭

클래스 생성 전 우리는 이 클래스에 어떤 내용물을 넣을지 미리 알고 있다. 따라서, 저장할 내용물의 타입을 미리 알려주면 Box라는 클래스는 content 필드에 무엇이 대입되고, content를 읽을 때 어떤 타입으로 제공할지 알게 됨 → 이것이 제네릭제네릭: 결정되지 않은 타입을 파라미터로 처리하고, 실제 사용할 때 파라미터를 구체적인 타입으로 대체시키는 기능// Box클래스에서 결정되지 않은 content의 타입을 T라는 타입 파라미터로 정의함public class Box { // BOX의 내용물에는 다양한 것이 들어갈 수 있기 때문에 T라는 타입 파라미터로 정의 public T content;}// Box클래스는 T가 무엇인지는 모르나, 객체가 생성될 시점에 다른 타입으로 대체된다는 것을 알고 있..

Lang/Java 2024.12.06

싱글톤

하나의 객체만 생성해서 사용하고 싶다면 싱글톤 패턴 적용!싱글톤 핵심: 생성자를 private접근 제한해서 외부에서 new 연산자로 생성자를 호출할 수 없도록 막는 것이다.private 클래스() {}생성자를 호출할 수 없으니 외부에서 마음대로 객체를 생성하는 것이 불가능해지고, 싱글톤 패턴이 제공하는 static 메소드를 통해 간접적으로 객체를 얻을 수 있다. ( static은 인스턴스가 없어도 되니까..!)public class 클래스{// private 접근 권한을 갖는 정적 필드 선언, 초기화// 자신의 타입으로 정적 필드를 선언하고, 미리 객체를 생성해서 초기화시킨다. // 그리고 private접근 제한자를 붙여 외부에서 정적 필드값을 변경하지 못하도록 막는다. private static 클래스..

Lang/Java 2024.12.05

형변환과 다형성

클래스 형변환타입변환이란 타입을 다른 타입으로 변환하는 것을 말함클래스의 타입변환은 상속관계에 있는 클래스 사이에서 발생한다. :: 자동 형변환(업캐스팅)의미 그대로 자동적으로 타입 변환이 일어나는 경우하위 타입이 상위 타입으로 자동 형변환 가능상위타입 참조변수 = (상위타입) 하위타입 참조변수; —> 캐스팅 연산자는 생략 가능이며 자동 변환더보기더보기상위 타입 변수 = (상위)하위 타입 객체;Cat cat = new Cat(); // 하위타입 객체생성Animal animal = (Animal)cat; //자동으로 하위 타입이 상위 타입으로 형변환이 일어남cat, animal은 타입만 다를 뿐, 동일한 cat 객체의 주소를 참조한다.상속관계에 있는 클래스들은 자동 타입변환 된다.자동 형변환 시 접근cla..

Lang/Java 2024.12.04

객체와 클래스

객체 지향 프로그래밍- 어떤 제품을 만들 때, 부품을 먼저 만들고 그 부품을 하나씩 조립하여 완성품을 만든다. 마찬가지로 부품에 해당하는 객체를 먼저 만들고, 이 객체들을 하나씩 조립하여 완성된 프로그램을 만드는 것을 객체 지향 프로그래밍이라고 한다. 여러개의 부품인(객체)를 만들고 그것을 이리저리 조합해서 만든다고 생각하자. 객체란?- 물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것을 말한다. 속성(필드)과 동작(기능, 메서드)- 데이터(필드)와 메소드로 구성된 덩어리- 현실세계의 객체를 소프트웨어 객체로 설계하면? 객체 모델링 :: 객체의 상호작용-현실에서 일어나는 모든 일들은 객체와 객체간의 상호작용으로 이루어져 있다.- 그렇다면, 객체들이 상호작용할 수 있는 수단은 메서드가 되..

Lang/Java 2024.12.03

인터페이스

인터페이스 역할두 객체를 연결하는 역할서버와 서버 간의 연결점의 의미객체A → 인터페이스 메소드 호출 -> 인터페이스 → 객체B 메서드 호출->객체B 리턴값을 인터페이스로 전달-> 인터페이스 —> 객체A로 리턴값 전달인터페이스 없이 객체 A가 직접 객체 B를 사용한다는 가정 하에, 객체B가 객체 C로 변경된다면 A의 소스코드도 B에서 C로 변경해주는 작업이 필요할 것이다.인터페이스를 사용한다면 객체A는 인터페이스의 메소드만 사용하면 되므로 B가 뭘로 바뀌는지는 상관 안함. 즉, 객체 A가 인터페이스 메소드를 호출한다면, 실제로 실행되는 것은 인터페이스의 추상메서드를 오버라이딩하여 구현한 객체B의 메소드가 실행되는 것. 따라서 어떤 구현 객체를 사용하느냐에 따라 결과가 다를 수 있음이러한 특징으로 인해 다..

Lang/Java 2024.12.02