목록Java (71)
사이먼's 코딩노트

[스프링 부트 (SpringBoot)]Spring Boot는 웹 프로그램을 쉽고 빠르게 만들 수 있도록 도와주는 자바의 웹 프레임워크이다.Spring Boot는 Spring 프레임워크에 톰캣(Tomcat)이라는 서버를 내장하고 여러 편의 기능들을 추가하여 개발자들 사이에서 꾸준한 인기를 누리고 있다.여기서 톰캣은 클라이언트의 요청을 해석하여 그에 맞는 자바 프로그램을 실행한 후 그 결과를 응답해주는 웹 애플리케이션 서버를 뜻한다.웹 프레임워크를 사용했을 때의 장점은 쿠키나 세션 처리, 로그인/로그아웃 처리, 권한 처리 등과 같은 여러가지 기능들을 개발자가 일일이 구현할 필요가 없고, 프레임워크에 있는 기능을 익혀서 사용하기만 하면된다.다시 말해, 웹 프레임워크는 웹 프로그램을 만들기 위한 스타터 키트라고..

[개념 정리 1]SpringBoot를 진행하기 전, 몇 가지 개념들을 정리를 해보려한다.먼저 JVM, JRE, JDK에 대한 개념 정리를 해봅시다. [JVM (Java Virtual Machine)]JVM은 자바 가상 머신이라는 뜻으로, 바이너리(바이트) 코드를 읽고 검증 후 실행할 수 있게 만들어준다.다시 말해 자바 프로그램이 어느 기기, 어느 OS에서도 실행될 수 있게 만들어준다.JVM은 자바 프로그램의 메모리를 효율적으로 관리 및 최적화해준다. [JRE (Java Runtime Environment)]JRE은 자바 실행(런타임) 환경이라는 뜻으로, JVM에 자바 프로그램에 필요한 라이브러리 파일을 포함한다.JRE는 JVM의 실행 환경을 구현해주는 역할을 한다.다시 말해 클래스 라이브러리를 통해 작성..

[스트림(Stream)]자바 스트림이란 Java 8부터 추가된 기술로 람다를 활용하여 배열과 컬렉션을 함수형으로 간단하게 처리할 수 있는 기술이다.Stream 이라는 단어의 뜻대로 데이터의 흐름을 의미한다.기존의 for문이나 배열을 사용하면 코드가 길어져서 가독성과 재사용성이 떨이지며, 데이터 타입마다 다른 방식으로 다뤄야하는 불편함이 있다.하지만, 스트림은 데이터 소스를 추상화하고, 데이터를 다루는 데에 자주 사용되는 메서드를 정의해 놓아서 데이터 소스에 상관없이 모두 같은 방식으로 다룰 수 있으므로 코드의 재사용성이 높아진다.스트림을 사용하면 파일에 저장된 데이터도 모두 같은 방식으로 다룰 수 있다.스트림은 일회용이라는 특징을 가지고있다. [반복문]아래 코드는 일반 for문 버전의 반복문과, Stre..

[Scanner] Java에서는 System.out를 통한 출력과 System.in을 통한 입력 기능이 존재한다. 출력 문법의 대표적인 예시는 System.out.println()이 있다. 아래 코드는 Scanner를 통해 키보드 입력이 가능하게 된다. package org.example; import java.util.Scanner; //TIP To Run code, press or // click the icon in the gutter. public class Main { public static void main(String[] args) { System.out.println("== 프로그램 시작 =="); Scanner sc = new Scanner(System.in); System.out.pr..

[예외처리]예외 처리(Exception Handling) 이란, 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대비하여 코드를 작성하는 것이다.Java 코드를 예외처리한다고 해서 프로그램의 예외 상황 자체를 막을 순 없다.예외 처리의 목적은 예외 발생으로 인해 실행 중인 프로그램의 갑작스런 비정상적인 동작을 막고, 에러를 잡아 복구를 시도하거나 아니면 해당 예외 상황을 피하여 프로그램이 정상적으로 실행 상태를 유지할 수 있도록 하는 것이다.우리는 이런 예외 상황를 try와 catch라는 구문을 이용해서 처리할 수 있다. [case #1]먼저, try - catch를 사용하여 나눗셈에서 발생할 수 있는 예외 상황을 처리하는 코드이다.public class Main { public sta..

[인터페이스]1. 클래스 다중상속의 장점과 단점은?장점 : 객체에 다형성을 원하는 만큼 부여할 수 있다.단점 : 하나의 자식 클래스에 2명 이상의 부모 클래스에서 똑같은 형태의 메서드를 2개 이상을 물려받을 수 있다. 이 때, 자식 클래스에서 해당 메서드를 오버라이딩하지 않는다면, 모호함이 발생한다. 참고로 자식 클래스에서 해당 메서드를 오버라이딩할 의무는 없다.2. Java에서 클래스 다중상속을 막은 이유는?C++과 달리, Java는 개발자가 고생할 수 있는 여지를 줄이기 위해 해당 기능을 없앴다. 3. 클래스 다중상속에서 나타날 수 있는 문제점을 해결하는 방법은?자식 클래스에서 모호한 메서드를 오버라이딩한다. 4. 인터페이스와 클래스의 차이점은?인터페이스는 100% 추상클래스이다.인터페이스 안에 있는..

[제네릭]문제를 풀어보면서 제네릭에 대해 조금 더 자세히 알아봅시다.문제의 목표는 제네릭을 이용해서 클래스 3개를 1개로 줄여보는 것입니다.public class Main { public static void main(String[] args) { Int저장소 a저장소1 = new Int저장소(); a저장소1.setData(30); int a = a저장소1.getData(); System.out.println(a); Double저장소 a저장소2 = new Double저장소(); a저장소2.setData(5.5); double b = a저장소2.getData(); System.out.println(b)..

[ArrayList]Java에는 기본적으로 ArrayList 클래스가 import 되어있다.우리는 보통 ArrayList를 사용하기 위해서 코드 가장 상단에 [import java.util.ArrayList;] 라는 코드를 작성한다.하지만 이번엔 ArrayList 클래스의 생성 과정을 간략하게나마 알아보기 위해 직접 ArrayList 클래스를 작성하면서 이해를 해봅시다.해당 과정을 실제로 쓸 일은 없지만, ArrayList에 대한 이해도를 높이기 위한 과정이라고 생각하면 좋다. 먼저, 아래 Main 메서드를 보고 해당 코드가 에러가 나지않고 원하는 출력문이 나오도록 ArrayList 클래스를 추가하여봅시다.조건은 선언된 배열의 크기를 3으로 지정하는 것입니다.public class Main { pu..

[배열]배열에 대해서 알아봅시다.아래는 배열을 사용하지 않았을 때, 단순히 메서드를 이용해서 값을 하나씩 저장하고 추출하는 코드입니다.public class Main { public static void main(String[] args) { IntArr intArr1 = new IntArr1(); System.out.println("배열의 길이 : " + intArr1.length); // 출력 => 배열의 길이 : 1 intArr1.setData(0, 20); System.out.println(intArr1.getData(0)); // 출력 => 20 IntArr intArr3 = new IntArr3(); ..

Java 형변환과 관련된 문제를 풀어봅시다.추가로 문제를 풀어보면서 수동 박싱/언박싱과 자동 박싱/언박싱의 개념도 함께 알아봅시다.Main 메서드에 작성된 코드를 보고 에러가 발생하지 않도록 수정 및 클래스와 메서드를 추가 작성해봅시다. [문제 1]아래 코드를 보고 숫자를 저장하는 저장소 클래스를 구현해봅시다.public class Main { public static void main(String[] args) { 저장소 a저장소 = new 저장소(); a저장소.저장(10); int 결과 = a저장소.주세요(); System.out.println(결과); // 출력 : 10 }} [문제 1 정답]아래 코드는 Main 메서드를 제외..