soominkim Study
article thumbnail
[Java] BufferedReader / Bufferedwriter
Java 2023. 3. 24. 09:00

Java에서 입력을 받을 때 Scanner 클래스를 통해 입력을 받았습니다. Scanner는 BufferedReader가 사용하기 불편하여 등장했으나 Scanner의 경우 내부적으로 정규 표현식이 많이 적용되어있어 타임어택 관련 알고리즘에 관하여 성능이 희생당하는 부분이 있습니다. BufferedReader / Bufferedwriter는 이름처럼 버퍼를 이용해서 읽고 쓰는 함수입니다. BufferedReader는 개행문자만 경계로 인식하고 입력받은 데이터는 String으로 고정됩니다. 기본 사용법은 다음과 같습니다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String s = br.readLine(); int i..

article thumbnail
[Java] AtomicLong
Java 2023. 1. 27. 23:29

AtomicLong Long 자료형을 갖고 있는 Wrapping Class로 Thread-safe로 구현되어 Multi-Thread에서 Synchronized 없이 사용할 수 있다. 또한 Synchronized보다 적은 비용으로 동시성을 보장한다. 1. AtomicLong 객체 생성 package AtomicLong; import java.util.concurrent.atomic.AtomicLong; public class AtomicLongClass { public static void main(String[] args) { AtomicLong atomic = new AtomicLong(); System.out.println(atomic.get()); } } AtomicLong()은 초기값이 0인 Au..

article thumbnail
[SpringBoot] RESTful 구축
Java/Springboot 2023. 1. 27. 22:57

들어가기에 앞서 Record란 불변(Immutable) 데이터 객체를 쉽게 생성할 수 있도록 하는 새로운 유형의 클래스로 JDK14에서 preview로 등장하여 JDK16에서 정식 스펙으로 포함되었다. 기존 불변 데이터 객체는 다음과 같다. public class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } 상태를 보유하는 불변 객체를 생성하기 위한 많은 코드를 작성했고 모든..

article thumbnail
[Java] Record Class
Java 2023. 1. 27. 22:56

Record? 불변(Immutable) 데이터 객체를 쉽게 생성할 수 있도록 하는 새로운 유형의 클래스로 JDK14에서 preview로 등장하여 JDK16에서 정식 스펙에 포함되었다. Record 개념이 등장하기 전에는 불변 데이터 객체를 생성하려면 많은 코드를 작성해야 했다. 1. 기존 불변 데이터 객체 public class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } 상..

article thumbnail
[SpringBoot] Gradle 만들기
Java/Springboot 2023. 1. 25. 23:38

최근 Node.js Express를 이용한 간단한 웹을 만들어보고 잠시 Node.js를 본격적으로 Routes를 하기전 SpringBoot를 조금 공부하고 가려고 한다. 현재 공부하는 순서는 HTML/CSS 이후 JS 그리고 Node.js를 밟고 있고 별도로 Java/SpringBoot 그리고 Kotlin 다음 Dart를 생각하고 있는데 사실 한개의 언어를 깊게 하는게 중요할 것 같다. 아직은 주니어라고 말하기도 어려운 실력이다보니 여러가지를 경험하는 것에 목적을 두고있다. 서론은 여기까지이고 본격적으로 SpringBoot 프로젝트를 만드는 방법을 살펴보자. 1. Spring Starter Project 생성 2. Gradle - Groovy 선택 3. 의존성추가 4. application.propert..

article thumbnail
[Java] 상속(Inheritance)
Java 2023. 1. 24. 21:30

Java에는 자식 클래스가 부모 클래스의 기능을 그대로 물려받을 수 있는 상속(Inheritance)기능이 있다. 상속하는 클래스를 부모 클래스, 상위 클래스, 기초 클래스,슈퍼 클래스라 부른다. 상속받는 클래스를 자식 클래스, 하위 클래스, 유도 클래스,서브 클래스라 부른다. 상속(Inheritance)은 객체지향 프로그래밍(OOP: Object Oriented Programing)에서 가지는 특징 중 하나로 부모가 자녀에게 변수(variable)와 메서드(method)를 물려주는 것을 말한다. 사용키워드는 "extends" 다. 본격적으로 상속을 사용해보기 위해 예제코드를 살펴보자. 프로토스 클래스는 부모 클래스로 프로토스 유닛들은 모두 기본 공격을 할 수 있다. public class Protoss..

article thumbnail
[Java] Arrays.sort
Java 2023. 1. 12. 17:28

Array.sort()을 이용하면 쉽게 배열을 정렬할 수 있다. 배열에 든 내용이 Integer인지 String인지 중요하지 않다. 기본적으로 객체는 Comparable이 구현되어 있다. sort()는 Comparable에 의해 리턴되는 값을 비교하여 오름차순 또는 내림차순으로 배열을 정렬한다. 1. 배열 오름차순 정렬 사용법은 매우 간단하다. Arrays.sort(정렬시킬 배열)로 사용한다. sort()함수 내부에서 변수 arr의 순서를 변경해주기 때문에 다시 arr에 할당해줄 필요가 없다. 2. 배열 내림차순 정렬 내림차순으로 정렬하고싶다면 Arrays.sort(정렬시킬 배열, Collections.reverseOrder())로 사용한다. Collections.reverseOrder()은 Compar..

article thumbnail
[Java] indexOf/lastIndexOF
Java 2023. 1. 12. 12:22

1. indexOf() : 특정 문자나 문자열이 앞에서부터 처음 발견되는 인덱스를 반환하며 만약 찾지 못했을 경우 -1을 반환합니다. - indexOf(String str) - indexOf(int ch) - indexOf(int ch, int fromIndex) - indexOf(String str, int fromIndex) 사용법은 위 사진과 같은데. indexOf(찾을 특정 문자, 시작할 위치)로 사용하면 된다. 시작할 위치의 경우 생략이 가능하며 생략할 경우 0번째 즉 문자열의 처음부터 찾기 시작한다. 출력문을 보면 찾을 특정 문자의 index 즉 위치를 반환해 주는 것을 알 수 있다. 1번째 예시와 3번째 예시의 차이점을 살펴보자. 1번째 예시와 3번째 예시 모두 특정 문자("o")를 찾지만 ..

article thumbnail
[Java] OOP(ObejectOrientedProgramming)
Java 2022. 12. 5. 22:31

해당 글은 나무 위키의 객체 지향 프로그래밍을 정리했습니다. 객체 지향 프로그래밍 - 나무위키 프로그램의 세부 구현을 외부로 드러나지 않도록 특정 모듈 내부로 감추는 것이다. 내부의 구현은 감추고 모듈 내에서의 응집도를 높이며, 외부로의 노출을 최소화하여 모듈 간의 결합도를 떨 namu.wiki OOP(Object-Oriented-Programmin) 프로그램 설계 방법론이자 개념의 일종으로, 명령형 프로그래밍에 속한다. 프로그램은 단순히 데이터와 처리 방법으로 나누는 것이 아니라 프로그램을 수많은 객체(Object)라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다. 여기서 객체란 하나의 역할을 수행하는 메서드(Method)와 변수(Data)의 묶음으로 봐야 한다. 객체지향을 설명할 때 Ja..

article thumbnail
[Java] Array (1)
Java 2022. 11. 23. 18:13

1. 배열(Array) 배열은 인덱스(index)와 인덱스에 대응하는 데이터들로 이루어진 연속적인 자료구조로 같은 타입의 데이터 형태를 모아둔 것이라 말할 수 있다. 2. 배열 선언 및 생성 자바에서 배열의 생성은 C/C++ 와 달리 두 단계로 이루어져 있다. ① 배열에 대한 레퍼런스 변수 선언 ② 배열 생성 - 배열의 저장 공간 할당 코드로 살펴보자. 2-1. 배열에 대한 레퍼런스 변수 intArray 선언 자바에서 배열을 선언을 하는 순서는 데이터 타입 / 변수명 / 배열 기호 순으로 작성하고 코드화 하면 아래와 같다. 배열 기호는 "[ ]"를 뜻한다. int intArray[]; 이 선언만으로 배열 공간이 할당되지 않으며 위 코드와 같이 레퍼런스 변수 intArray만 생성된다. intArray는 ..

article thumbnail
[Java] 메모리 구조 (Static,Stack,Heap)
Java 2022. 11. 7. 15:13

Java를 사용하는 입장에서 알아야 할 메모리 구조 및 특징을 알아보자. Method를 들어가기 전 공부하는 것이 좋다. 메모리의 공간은 크게 Static, Stack, Heap 영역으로 구분된다. 또한 데이터타입(자료형)에 다라서 해당 공간에 할당된다. 1. Static area 하나의 Java 파일은 크게 Field,Constructor,Method로 구성된다. 각각 필드,생성자,메소드를 말한다. 필드 부분에서 선언된 변수(전역변수)와 정적 멤버변수(Static이 붙은 자료형) Static 영역에 데이터를 저장되는 공간이다. Static area에 있는 데이터는 프로그램의 시작부터 종료가 될 때까지 메모리에 남아 있다. 2. Stack area Method 내에 정의하는 기본 자료형(int,doubl..

article thumbnail
[Java] Class 와 Instance 그리고 Object
Java 2022. 11. 7. 12:30

바로 공부해보자. 1. 클래스(Class) 개념 : 객체를 만들어 내기 위한 설계도 혹은 틀, 연관되어 있는 변수와 메서드의 집합 class Bicycle{ ... } 어떤 물건을 만들 때 만들고자 하는 물건에 대한 설계도 혹은 틀을 클래스(Class) 라 부른다. 위의 코드르 보면 Bicycle 이름을 가진 Class 즉 설계도를 만들었다. 2. 객체(Object) 개념 : 소트트웨어 세계에 구현할 대상, 클래스에 선언된 모양 그대로 생성된 실체 class Bicycle{ String handle; // 핸들 String wheel; // 바퀴 String saddel; // 안장 } Bicycle를 만든다고 했을 때 이 Bicycle은 어떤 것을 가지고 있어야할까? 여기서 '어떤것'이 바로 객체(Ob..

검색 태그