계산기 과제 : Java Generics, Enum 활용기
·
Programming/Java
구현 요구사항Lv.3 의 구현사항은 아래와 같다.계산기 클래스의 메서드 `calculate`의 피연산자로 모든 타입의 숫자를 받아올 수 있어야 한다. (int, double, 양수, 음수)enum 으로 연산자 타입을 관리하고 활용한다.계산기에 저장된 연산 결과를 Lambda & Stream을 활용하여 조건에 맞도록 조회하는 메서드를 구현한다.오늘은 1과 2를 중점적으로 고민하여 구현하였다.Generics : 피연산자 타입 확장하기먼저 기존 Lv.2의 계산기 클래스이다.기존의 피연산자 입력으로 0을 포함한 양의 정수만을 받아왔기 때문에 `calculate` 메서드의 피연산자 타입이 int로 지정되어있다.결과 값은 double로 지정되어있는데, 피연산자가 모두 정수여도 나누기 연산 시 실수가 될 수 있기 ..
Java Enum 이놈아
·
Programming/Java
오늘은 Java Enum에 대해서 복습해보았다.되게 신기한게 책에 밑줄이 좍좍 그어져 있는데 마치 새로 알게 된 정보처럼 느껴진다는 것이었다.  ㅠㅠ 떵뇌 인간 그렇지만 이번엔 완벽하게 기억할 것만 같은 느낌인데책에 기억에 없는 밑줄을 그었던 순간에도 이렇게 느꼈을지도 ...그럴지도 ...Enum에 대해 알아보자열거형열거형 데이터란, 서로 관련된 상수들을 묶어서 관리하는 틀 역할을 제공하는 것이다.예를 들어서 월 화 수 목 금 토 일의 내용을 상수로 관리하고 싶다면 다음과 같이 정의한다.// enum 열거형이름 { 상수명1, 상수명2, 상수명3, ... }enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY,..
Java의 예외처리를 조금 자세히 알아보자
·
Programming/Java
오늘은 Java의 예외 처리에 대해 복습을 해 보았다.예외를 처리하는 방법Java에서 예외를 처리하는 방법은, try-catch문을 사용하는 것이다.예외가 발생할 수 있는 코드, 즉 예외가 발생한다면 처리를 해주고 싶은 부분을 try 블럭으로 감싸준다.그리고 catch 블럭을 이용하여 각 Exception이 발생할 경우를 처리해준다.만일 예외 발생 여부에 상관없이 공통적으로 수행하고 싶은 작업이 있다면, finally 블럭을 추가하여 적어준다.try { // 여기에 쓰인 코드들에서 예외가 발생한다면 // 해당하는 catch문 블럭이 실행된다.} catch (ArithmeticException e) { // ArithmeticException이 발생한 경우} catch (IllegalArgument..
[Java] 잠깐 JVM 정리하고 갑시다
·
Programming/Java
오늘부터 Java 강의를 듣고 과제를 수행한다.1~3주차 강의의 내용은 아주 기본적인 내용들이었다.몇몇은 건너뛰기도 하고, 1.5배속으로 훑으면서 가물가물한 부분들은 따로 공부를 진행하려고 메모를 해두었다.그리하여 이제 메모한 내용들을 공부할 시간 ... 먼저 JVM에 대해 정리하고 넘어가자   JVM이란?JVM은 Java Virtual Machine의 줄임말로, Java로 짜여진 코드들을 운영체제에서 실행할 수 있도록 만들어주는 가상의 기기(소프트웨어)이다.자바로 작성된 어플리케이션이 컴퓨터에서 동작하기 위해서는 반드시 JVM이 필요하다.일반적인 다른 어플리케이션이 바로 OS와 상호작용하는 것과 달리 자바 어플리케이션은 JVM과 상호작용하며, JVM이 OS와 상호작용하는 역할을 한다.이 때문에 어플리케..
SQL 기본 문법 복기 (2)
·
Programming/Database
SQL 강의를 마저 들었다 !REPLACE : 글자 대치하기replace(컬럼, 대상 글자, 바뀔 글자) CONCAT : 문자열 합치기concat(합칠 문자열, 합칠 문자열, ...)select concat('[',substr(addr,1,2),']',restaurant_name,' (',cuisine_type,')') "음식점", count(1) "주문 건수"from food_ordersgroup by 1 SUBSTR : 원하는 위치의 글자만 가져오기substr(컬럼, 시작 인덱스, 가져올 글자 수)시작 인덱스 >= 1'가져올 글자 수'를 명시하지 않고 substr(컬럼, 시작 인덱스)로 적을 경우, 시작 인덱스부터 끝까지 가져옴 GROUP BY : select 절의 n번째 컬럼으로 묶기group b..
SQL 기본 문법 복기 (1)
·
Programming/Database
SQL 강의를 들으면서 정처기 공부할 때 또 바짝 공부했었던 SQL 문법들을 복습했다대부분 아는 내용들이었지만, 머릿속에서 사라져가려고 했던 몇몇 문법들을 다시 붙들어잡을 수 있었던 좋은 시간이었던 듯 ...너무 잘 아는 내용은 생략하고, 다시 붙잡을 수 있었던 내용들을 정리해본다 SELECT 시 별명(alias) 설정하기컬럼1 as 별명1ex) order_id as ord_no컬럼2 별명2ex) order_id as "주문 번호"⚠️ 주의할 점별명이 '영어'와 '언더바'로만 이루어져 있는 경우에만 "" 기호 없이 별명을 설정할 수 있다.  조건 필터링 IN : ~ 중에 하나인가?in (A, B, C) A, B, C 중 하나에 해당 된다면 선택됨ex) age in (15,21,31)  조건 필터링 LIK..
도메인 로직(Domain Login)이 뭔데?
·
Programming/ETC
https://enterprisecraftsmanship.com/posts/what-is-domain-logic/ What is domain logic?In this post, I’ll write about a couple of thoughts regarding what domain logic is and how to distinguish it from other types of logic.enterprisecraftsmanship.com 해당 포스트는 위 아티클을 읽고 정리한 내용이다. 어떤 하나의 소프트웨어 어플리케이션이 있을 때 크게 Problem space와 Solution space로 나누어 볼 수 있다.Problem Space / Solution SpaceProblem SpaceThe prob..
[Java] 문자열(String) 내장 함수 정리
·
Programming/Java
length()문자열의 길이를 반환한다.compareTo()int compareTo(String str)str과 현재 인스턴스의 문자열의 내용을 사전순으로 비교한다.현재 인스턴스가 사전순으로 더 이전이면 음수를, 이후면 양수를, 두 문자열의 내용이 같다면 0을 반환한다. String str1 = "apple"; String str2 = "banana"; System.out.println(str1.compareTo(str2)); // -1 출력chatAt()char chatAt(int index)인스턴스 변수로 가진 char[] value에서 해당 index의 문자를 반환한다.concat()String concat(String str)(..
[Java] CharSequence란?
·
Programming/Java
String 내장 함수를 정리하다 CharSequence를 발견했다. 생성시 ""를 사용하는 것은 String과 같은데, CharSequence란 무엇이며 String과 어떻게 다른지 알아봤다. Interface CharSequence는 클래스가 아니라 인터페이스이다. 그리고, 이 인터페이스를 구현한 클래스로는 바로 String, StringBuffer, StringBuilder 등이 있다. 즉 문자열로 사용하는 클래스의 구현 토대인 것이다. 따라서 CharSequence는 아래의 모든 방법으로 생성 가능하며, 위의 모든 클래스를 담을 수 있다. CharSequence charSequence = "hello"; CharSequence charSequence = new StringBuffer("hello"..
[Java] 문자열(String) 클래스 정리
·
Programming/Java
문자열(String)1. 변경 불가능한 클래스String 클래스는 문자열을 저장하기위해 char[] value를 인스턴스 변수로 정의하고 있다.인스턴스 생성시 입력받는 문자열이 value에 저장되는데, value에 한 번 저장된 배열은 읽기만 가능하며 변경할 수 없다.2. 문자열 비교String 클래스 생성자를 이용하여 문자열을 만든 경우, new 연산자에 의해 메모리 할당이 이루어진다.따라서 항상 새로운 String인스턴스가 생성되어 서로 다른 메모리값을 가진다. 하지만, 문자열 리터럴의 경우 같은 내용의 문자열 리터럴을 재사용한다.아래 예시를 보자.String str1 = new String("apple");String str2 = new String("apple");Strin..
[Java] 스트림(Stream)
·
Programming/Java
Java에서의 입출력사용자가 키보드로 입력한 문자를 받아와 모니터에 보여주려면 어떻게 해야할까?만약 사용자가 특정 문서를 인쇄하기 위해 인쇄 버튼을 누른다면 이를 프린터를 어떻게 인쇄할까? 이처럼 프로그램에서 데이터를 받아오거나 데이터를 특정 장치에 보내줘야 할 때, 바로 스트림을 이용한다. 위의 경우에서는 키보드로 입력한 문자를 받아올 때 입력 스트림을, 해당 문자를 화면에 나타낼 때 출력 스트림을 이용한다.또 사용자가 인쇄를 요청한 경우에는 인쇄를 담당하는 프로그램이 해당 문서의 내용을 입력 스트림을 통해 받아오며, 출력 스트림을 통해 프린터기로 데이터를 전송한다. 스트림이란 데이터를 교환하려는 두 대상을 연결하고, 데이터를 전송할 수 있는 통로 역할을 한다.Stream의 특징..
Cookie 와 Session
·
Programming/ETC
이번에 프로젝트를 하면서 cookie랑 session이 무엇인지 확실히 짚고 넘어가야할 것 같아서 정리해본다.컴공 3년 다니고 아직도 이 차이를 긴가민가 하는게 조금 쪽팔리지만서도 .. 구글링하면서 아 이랬지! 정도는 떠올라서 그나마 다행이다. Cookie 쿠키쿠키는 사용자의 컴퓨터에 저장되는 작은 정보 저장 파일이라고 보면 된다.사용자의 정보를 cookie에 저장해놓았다가 필요시 쿠키를 참조하여 HTTP를 통해 서버와 통신할 때 정보로서 이용할 수 있다. - 클라이언트가 웹사이트에서 페이지를 요청한다.- 서버는 쿠키를 생성하여 쿠키에 정보를 담아 HTTP 화면을 돌려줄 때 클라이언트에게 함께 준다.- 클라이언트는 받은 쿠키를 로컬 pc에 저장한다.- 해당 서버에 다시 요청 보낼 때, 저장해놓았던 쿠키를..