Skills 68

Java - Parameter, Argument

Java에서 코드를 작성할 때, Parameter와 Argument라는 것으로 값을 전달하거나 선언을 합니다. 차이점을 한번 알아보겠습니다. 1. Parameter Parameter는 매개변수로 메서드의 입력 변수명입니다. 이는 실제로 메모리에 할당되어 있지 않은 변수로 텅 빈 하나의 공간입니다. import java.util.HashSet; import java.util.Iterator; class Solution { HashSetnumSet=new HashSet(); public boolean isPrime(int num){ if(num==0 || num==1) return false; int lim=(int)Math.sqrt(num); for(int i=2; i

Skills/Java 2022.05.20

Spring에서의 API

1. @ResponseBody http(통신 프로토콜)의 body 부에 return(반환)값을 직접 넣는다는 의미입니다. (HTTP) Template engine과의 차이점? - API를 사용하면 view가 따로 필요가 없습니다. - 따라서 소스코드 보기를 통해 보아도 html 관련 코드는 없고, 출력된 문자만 보입니다. Template engine은 view라는 템플릿이 있는 상황에서 view를 html로 변환하는 것이고, API는 데이터를 그대로 내보내는 것입니다. 1.1. @ResponseBody의 사용 문자열(String)을 전달하는 경우는 거의 없고, 데이터. 즉, 객체를 요청할 때 주로 사용합니다. 1) Hello라는 클래스를 하나 만들고, 변수 name와 해당 변수에 대한 Getter/Set..

Skills/Spring 2022.05.15

Spring 웹 개발 기초

1. 정적 컨텐츠 (Static contents) 정적 컨텐츠는 실시간으로 변경할 필요가 없는 데이터 즉, 변화가 없는(Static : 정적)데이터를 의미합니다. 어느 접속자에게든 동일한 모습을 반환합니다. 서버에서 file을 그대로 웹 브라우저에 내리는 것을 의미하기도 합니다. Spring에서는 이 정적 컨텐츠라는 기능을 자동으로 제공합니다. 대충 번역해보자면, 기본적으로 Spring boot는 클래스 경로의 /static (or /public or /resources)~~ 디렉토리로부터 정적 컨텐츠를 제공한다고 되어있습니다. static이라는 디렉토리 안에 htllo-static.html이라는 file을 추가하고 웹 브라우저에 localhost 주소를 입력하고 접속하게 되면, 그대로 정적 컨텐츠가 반..

Skills/Spring 2022.05.13

Spring 개요

Spring은 Java 기반의 웹 애플리케이션을 만들 수 있는 프레임워크입니다. 초기의 Spring은 개발자들이 라이브러리를 일일이 입력해서 불러와야 했지만, Spring boot가 등장하면서 라이브러리와 실행환경, 의존성 관리 등에 대한 지원을 쉽게 받을 수 있도록 바뀌었습니다. (https://start.spring.io/) 처음 Project란의 Marven, Gradle은 빌드 도구라고 합니다. 빌드 도구는 프로젝트에서 작성한 Java 코드와 프로젝트 내에 필요한 xml, jar 파일들을 JVM이나 WAS가 인식할 수 있도록 패키징 해주는 빌드 자동화 도구입니다. Dependencies는 프로젝트에 필요한 라이브러리를 선택하는 것입니다. 스프링 부트에서 프로젝트를 생성하고, 선택한 라이브러리를 탐..

Skills/Spring 2022.05.11

Java new 연산자

메모리는 스택과 힙 영역으로 나눠져 있습니다. 스택은 정적(Static)이지만 힙은 참조형입니다.큰 용량을 차지하며 해체하기 전까지는 삭제되지 않습니다. https://refreshment-wg.tistory.com/67 이 글에서 Java에서는 가비지 컬렉션이 힙 영역을 정리한다는 역할을 한다고 했습니다. new는 클래스 타입의 인스턴스(객체)를 생성해주는 역할을 합니다. 이 때 heap 영역에 데이터를 저장할 공간을 할당받고, 그 공간의 참조값(refrence value)를 객체에 반환하고, 이어서 생성자를 호출합니다. aoClass sc=new aoClass(); 위의 코드를 보면, aoClass라는 타입으로 sc라는 객체를 선언한 뒤, new를 사용해 생성자인 aoClass()를 힙 영역에 할당..

Skills/Java 2022.05.10

Scanner & BufferedReader

알고리즘에서 Java로 입력을 받을 때 Scanner를 많이 사용합니다. Scanner는 공란과 줄바꿈을 입력값의 경계로 사용하며, 입력받은 즉시 자료형이 확정이 됩니다. 반면 BufferedReader는 버퍼를 이용해 입출력을 하는 방식입니다. 하드디스크를 비롯 키보드와 같은 외부 장치의 데이터 I/O는 시간이 걸리는 작업입니다. (CPU의 연산속도가 상대적으로 매우 빠름) 즉 키보드를 누를 때 마다 누른 문자의 정보를 이동시키는 것보다, 메모리에 버퍼를 둬서 데이터를 묶어서 전송하는 것이 더 빠릅니다. 여기서 버퍼는 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리 영역입니다. 위에서 설명했듯이, Scanner는 공란과 줄바꿈을 경계로 입력 값을 인식하기 때문에..

Skills/Java 2022.05.07

Java 구성 (class, method, instance)

1. Class 클래스는 '유사한 특성을 지닌 객체(Object)들을 묶어놓은 집합체'라고 표현 가능합니다. 예를 들어 게임을 할 때, 플레이어의 이름이나, 정보 등 구조를 명세하는 설계도를 클래스라고 합니다. public class Player{ String name; // 플레이어 이름 int charlv; // 캐릭터 레벨 } 위의 코드에서는 Player라는 클래스에 플레이어의 이름, 레벨이라는 변수들을 선언해주었습니다. 이는 Player라는 이름을 가진 클래스의 구조가 됩니다.  참고로 클래스의 이름과 객체 이름은 명사 혹은 명사구가 적합합니다. Customer, Accoount 등 이 좋은 예이며, Manager, Data, info 등의 같은 단어를 피하고 동사는 사용하지 않는 것이 좋습니다..

Skills/Java 2022.05.06

Java public static void main(String[] args)의 의미

public class Main{ public static void main{String[] args){ } } Java에서 모든 프로그램은 public static void main(String[] args)라는 함수로 시작합니다. 코드에 대해 의미를 살펴보겠습니다. 1. 제한자 먼저 public은 제한자 부분으로 모든 함수의 앞에는 이 함수를 어디에서 접근할 수 있는지 범위를 지정할 수 있습니다. 여기서 접근 제한자는 객체 자신들만의 속성이자 특징이므로 대외적으로 공개되는 것이 좋지많은 않습니다. 그런 이유에서 프로그래머가 객체들에게 접근 제한을 걸 수 있는데, 이를 Java에서는 접근 제한자라고 합니다. 접근 제한자의 종류로는 1) public : 모든 접근을 허용 2) protected : 같은 ..

Skills/Java 2022.05.04