전체 글 61

[JAVA] 산술연산자 & 비트연산자

산술 연산자 사칙연산을 다루는 연산자로, 가장 기본적이면서도 가장 많이 사용되는 연산자 중 하나이다. 산술 연산자 설명 + 왼쪽의 피연산자에 오른쪽의 피연산자를 더함 - 왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌 * 왼쪽의 피연산자에 오른쪽의 피연산자를 곱함 / 왼쪽의 피연산자를 오른쪽의 피연산자로 나눔 % 왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환 + 연산자 +연산자는 위의 코드와 같이 정수형을 더하는 데 사용하는데도 쓰일 수 있고, 문자열을 합치는데도 사용이 가능하다. - 연산자 -연산자는 정수형에서는 사용할 수 있지만 +연산자와는 다르게 문자열을 뺄 수는 없다. 만약 문자열을 빼고 싶다면 위의 코드처럼 substring()을 사용하면 된다. * 연산자 *연산자는 단순하게 x와..

JAVA 2023.03.22

[JAVA] 타입변환&타입추론 var

타입변환 타입변환이란? 하나의 타입을 다른 타입으로 바꾸는 것이다. 그렇다고 모든 타입이 다 변환이 되느냐? 그건 아니다 타입변환은 boolean형을 제외한 나머지 기본 타입간의 타입변환을 자유롭게 수행가능하다. 타입변환은 상대적으로 작은 타입에서 큰 타입으로 변환할 때 묵시적 타입 변환 발생 BUT 반대로 큰 타입에서 작은 타입으로 변환을 하면 데이터 손실이 발생한다. 타입변환에는 크게 묵시적 타입 변환(프로모션)과 명시적 타입 변환(캐스팅)이 존재한다. 묵시적 타입 변환(프로모션) 컴파일러가 자동으로 수행해주는 타입변환을 의미한다. 위의 코드 처럼 double형에 int형 데이터 값을 넣으면 double형이 int형보다 크기가 크기 때문에 컴파일러가 자동으로 형 변환을 수행해주는 것을 확인할 수 있다..

JAVA 2023.03.22

[JAVA] 리터럴변수&변수의스코프와 라이프타임

리터럴이란? 보통 리터럴과 상수의 차이에 대해 궁금해하는 사람이 있을 수도 있다. 상수란? 변하지 않는 변수를 의미 ex)클래스와 구조체 기본형에서 파생된 객체나 유도형 같은 데이터를 넣을 수 있음 final int num; 리터럴이란? 데이터 그 자체를 의미한다. int a=10; //a는 상수가 되고, 10이 리터럴 위 코드 처럼 10이라는 값이 바로 리터럴이다. 하지만 여기서 final키워드를 사용하면 상수가 된다. ※인스턴스는 리터럴이 될 수 없다. 그 이유는 인스턴스(객체)는 동적으로 사용하기 위한 용도로 작성 불변 클래스 데이터가 변하지 않도록 설계를 해놓은 클래스 String str="seok"; //"seok"이라는 문자열이 객체 리터럴이다. 리터럴 선언 방법 리터럴을 선언하는 방법은 변수..

JAVA 2023.03.21

[JAVA] Primitive Type vs Reference Type

자바에는 변수라는 것이 존재하고 타입이라는 형태가 존재한다. Primitive Type Primitive Type은 기본형 타입이라고도 부르고, 실제 데이터 값을 저장하는 타입이다. 논리형 boolean Class Main{ public static void main(String[] args){ boolean vis=true; } boolean형은 반환형이 true/false형이 존재하고 타입변환이 자유롭지 않고, 크기는 1byte이다. 문자형 char Class Main{ public static void main(String[] args){ char c='Ch'; } char형은 반환형은 문자 단위로 반환을 해주고 크기는 2byte이다. 정수형 정수형은 byte, short, int, long형이 존..

JAVA 2023.03.21

Java의 역사

더보기 JVM이란? 자바 가상머신(Java Virtual Machine)이라고 부르고 우리가 작성한 자바프로그램이 수행되는 프로세스를 의미한다. 자바는 플랫폼(OS)에 종속되지 않지만 JVM은 플랫폼에 종속이 된다. 예를 들어 JVM은 윈도우용 JVM과 리눅스용 JVM이 있기 때문에 플랫폼에 종속이 된다. 위처럼 자바 프로그램 실행 과정에서 컴파일된 바이트코드가 JVM으로 넘어왔을 때 컴퓨터가 프로그램을 실행할 때마다 JVM의 구성 요소중 하나인 인터프리터에 의해 계속해서 기계어로 해석해주면서 프로그램이 실행되게 된다. 자바 사용자가 코드를 작성하여 실행하면 자바 컴파일러(javac)에 의해서 1차적으로 컴파일이 되는데 이때 javac에 의해서 사용자가 작성한 코드가 바이트코드가 되는데 바이트코드란? 어..

JAVA 2023.03.12

Spring Quick - DAY1(2)

더보기 의존관계란? 클래스 A와 클래스 B가 존재한다고 하고, 만약 A클래스가 변경되었을 때 변경된 부분이 B클래스에도 영향을 미치면 A와B는 의존관계에 있다고 한다. 스프링 프레임워크의 가장 중요한 특징은 객체의 생성과 의존관계를 컨테이너가 자동으로 관리하는 점이다. 스프링은 IoC를 아래와 같은 형태로 지원함 DL(Dependency Lookup) -> 컨테이너가 애플리케이션 운용에 필요한 객체를 생성하고 사용자는 컨테이너가 생성한 객체를 검색하여 사용하는 방식 DI(Dependency Injection) -> 객체 사이의 의존관계를 스프링 설정 파일(XML)에 등록된 정보를 바탕으로 컨테이너가 자동으로 처리해준다. 세터인젝션(Setter Injection) 과 생성자 인젝션(Constructor I..

SpringBoot 2023.02.06

Spring Quick - DAY1(1)

프레임워크란? 더보기 뼈대 혹은 틀로서 소프트웨어적으로 접근하면 아키텍처에 해당하는 골격코드를 의미한다. ▶ 프레임워크의 장점 빠른 구현 시간 쉬운 관리 개발자들의 역량 획일화 검증된 아키텍처의 재사용과 일관성 유지 스프링 프레임워크는 POJO형태의 객체를 관리한다. POJO란? POJO는 옛날 자바 객체를 의미한다. POJO를 쉽게 이해하기 위해선 반대로 Not POJO클래스를 이해하면 된다. 대표적으로 Not POJO클래스는 Servlet클래스가 있다. Servlet클래스는 개발자 마음대로 만들 수 없고 아래와 같은 특징이 존재한다. javax.servlet, javax.servlet.http 패키지를 반드시 import해야함 public클래스로 선언되어야 함 Servlet, GenericServle..

SpringBoot 2023.02.06

Spring framework 핵심기술 - IoC 컨테이너

더보기 IoC컨테이너란? 객체를 생성하고 의존성을 관리해주는 컨테이너 인스턴스의 생성부터 소멸까지 개발자가 아니라 IoC컨테이너가 관리함 더보기 Bean이란? IoC컨테이너가 관리하는 객체 의존성 관리가 용이하다. 스코프(싱글톤객체로 관리가 용이) 라이프사이클 인터페이스 관리가 용이하다. 싱글톤 객체란? 해당 bean에 인스턴스가 오직 하나인 것을 의미(default값) 더보기 ApplicationContext란? 스프링 컨테이너라고 부름 public interface ApplicationContext extends EnvironmentCapable, ListableBeanFactory, HierarchicalBeanFactory, MessageSource, ApplicationEventPublisher..

JAVA 2023.01.05

자바 I/O 와 NIO 차이

NIO란? NIO는 NewInputOutput의 약자이며 기존에 있던 I/O의 새로운 버전이라고 생각하면 된다. I/O와 NIO의 차이에 대해서 설명하기 전 가장 큰 차이는 버퍼의 유무입니다. 버퍼란? 쉽게 말해 임시적으로 사용하는 임시 저장 공간을 의미합니다. I/O vs NIO I/O NIO 입출력 방식 Stream Channel 버퍼 유무 X O 비동기 방식 X O 위의 표가 I/O와 NIO의 차이에 대해 정리한 표이다. 근데 갑자기 비동기 방식에 대한 차이에 궁금한 독자들도 있을 것이다. 동기 vs 비동기 동기란? 쉽게 말해서 일의 순서가 있다는 것을 의미한다. 예를 들어 어떤 사용자가 누군가에게 문자를 전송했을 때 수신자에게 문자가 올 때 까지 발신자는 누구에게도 문자를 보내지 못하는 것과 비슷..

JAVA 2022.06.14

I/O란?

I/O는 우리가 만든 프로그램에 있는 어떤 내용을 파일에 읽거나 저장할 일이 있을 때, 혹은 다른 서버나 디바이스로 보낼일이 있을 때 종종 사용한다. 그렇다면 위의 정의를 빗대어 I/O는 약자를 의미하는데 I는 Input(입력), O는Output(출력)을 의미하는걸 알 수 있다. 파일의 입출력에는 크게 바이트 스트림과 문자스트림을 나뉠 수 있다. 우선 문자스트림에 대해 이야기 해보겠다. 문자 스트림 문자 스트림이란 문자 단위로 읽고 쓰는 것을 의미합니다. 대표적으로 문자스트림에는 Reader 와 Writer의 abstract클래스가 존재합니다. Reader Reader는 문자 기반 입력스트림의 슈퍼 클래스로 추상클래스이다. Reader클래스에는 문자입력 스트림이 가져야 할 기본적인 메소드들이다. 메소드 ..

JAVA 2022.06.14