Programming Language/Java 13

[Java] BufferedReader, BufferedWriter 써보기

간단하게 말해 BufferedReader는 Scanner와 유사하고, BufferedWriter는 System.out과 유사하다. Buffer란 데이터를 전송하기 전 임시로 담아주는 곳을 의미하는데, 입력 받은 데이터를 모아뒀다가 한번에 전송하기 때문에 Scanner, System.out을 사용하는 것보다 대용량 데이터를 다룰 때 성능 측면에서 유리하다. 먼저 BufferedReader를 사용해보자. 라인 3 ~ 라인 8까지는 기능 import들이다. 라인12에서는 예외처리가 된 것을 볼 수 있다. 라인14에서 시스템으로 입력을 받는 BufferedReader인 br을 선언해주고, 라인15에서 br을 통해 입력을 받은 값은 sampleSt라는 string으로 선언된다. 라인16에서는 sampleSt를 사..

[Java] 이클립스, mySQL, 웹페이지 연결하기 1)mySQL 환경세팅

자바 언어도 간봤고 mySQL 쿼리문들도 간봤으니 몇번의 포스팅에 걸쳐 간단하게 CRUD가 가능한 웹페이지 요소에 대한 백엔드 조성을 해볼까한다. 이번 포스팅은 기본 환경 세팅이다. 먼저 mySQL에 접속하여 DB와 유저를 생성하자. 파랗게 가린 부분에는 원하는 암호를 넣으면 된다. 모든 권한을 주자. 참고로, Command Line Client로 mySQL을 바로 사용할 수도 있지만 CMD창에서도 접속 가능한데, 굳이 매번 경로를 입력해넣는게 귀찮다면 환경변수를 설정해주면 된다. 내친 김에 환경변수도 설정하자. 윈도우 설정으로 들어가고, 시스템, 좌측하단에서 정보, 우측에서 고급 시스템 설정 상단 고급 탭으로 가면 하단에 환경 변수 버튼이 있다. 시스템 변수란에서 Path를 누르고 편집을 클릭하자. 옆..

[Java] 클래스, 메소드 개념 정리

클래스란 객체를 생성하기 위해 코드로 구현한 것이다. 말하자면 객체를 생성하기 위한 설계도라고 볼 수 있다. 클래스명은 통상적으로 대문자로 시작된다. IDE내에서 class 예약어를 통해 클래스를 생성하며 객체의 속성과 기능을 코드로 그 내에 구현한다. 클래스를 통해 메모리 공간에 생성된 객체가 인스턴스이다. 필드(멤버변수) 클래스에 포함된 변수로, 선언된 위치에 따라 구분된다. - 클래스 변수(static variable 전역변수): 해당 클래스의 모든 인스턴스가 공유해야하는 값을 유지하기 위해 사용. - 인스턴스 변수(객체변수): 인스턴스마다 가져야하는 고유한 값을 유지하기 위해 사용 힙영역에 저장되며, 인스턴스의 생성과 동시에 종료된다. - 지역 변수: 메소드 안, 생성자 안, 초기화 블럭 내부에 ..

[Java] 연습과제 - 음악플레이리스트 구성하기

CRUD 즉, create, read, update, delete 기능이 들어가도록 자유롭게 코딩을 해보라는 것이 과제였다. 그간 여러번 완료한 연습과제의 기틀과 같기에 이번엔 좀 더 기믹을 추가하고 싶은 욕심이 생겼다. 이번에 몇가지 시도해본 것은; - 검색 메소드 내에서 또다시 세부 검색 방법을 선택 가능 - AI음악추천(사실은 랜덤이다)을 선택하면 콘솔창에 마치 로딩이 되는 것 같은 페이크 출력 - run과 동시에 미리 작성된 음악 정보들이 배열에 저장됨 - 실제 음악 재생

[Java] 연습과제 - 은행계좌프로그램 구성하기

오늘 과제도 재밌어서 올려본다. 조건은 아래와 같다; -값을 입력받을 때 scanner는 사용하지 말 것. -기본출력문은 1.계좌생성 2.계좌목록 3.예금 4.출금 5.종료 -계좌번호는 자동발행되게 할 것. Bank-0001, Bank-0002 식으로. -계좌는 여러개 생성 가능 -계좌를 선택하여 입/출금 가능 -계좌 잔액 부족 시 출금이 안되게 할 것 그림을 그려보자. 그간의 좋은 친구였던 scanner를 사용할 수 없으니 오늘 배운 BufferReader를 사용해야할 것이고, 계좌, 즉 account 클래스의 필드 중 하나인 계좌번호는 글자와 숫자 조합이니 string으로 선언해줘야겠으나 생성할 때마다 숫자가 하나씩 업되어야하기에 DecimalFormat을 사용해야할 것이다. 이외엔 어려울건 없다. ..

[Java] Stream 간단 활용

Stream. 자료의 대상과 관계없이 동일한 연산을 수행할 수 있도록 해주는 반복자 라고 배웠는데 곧바로 머리에 들어오지는 않고, 사용하다보니 깨닫게된 정의는; 컬렉션에 저장되어있는 요소들을 하나씩 람다식으로 처리할 수 있도록 해주는 반복자 가 아닐까 싶다. 내 얕은 활용경험으로 도출된 것이니 이보다 더 포괄적인 개념일수도 있어서 구글링 해보니 대략 내 생각이 맞는 것 같다. Stream은 한번 생성하면 재사용이 불가능하다. 다시 말하자면, 스트림을 사용하여 연산을 수행하면 스트림이 소모된다는 것. 또한 기존 자료를 변경하지 않기에 일회성으로 자료를 가져다가 처리해 사용하고 휘발되게 하는 식의 쓰임에 유용하다. Stream 코드로 사용되는 연산자에 대한 세세한 설명보단, 우선 쓰임을 먼저 보자. 위는 1..

[Java] 람다식 Rambda Expressions

람다식. 자바스크립트 같은 스크립트 언어에서 주로 쓰이는 방식이라고 한다. 자바 1.8부터는 람다식의 기능들을 지원하고 있어 잘 활용하면 개발자의 시간과 하드웨어 성능을 아낄 수 있다. 람다식이란 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식이다. 외부자료가 부수영향(side effect)를 주지 않도록 구현되며, 매개변수가 하나인 경우 자료형과 괄호를 생략할 수 있어 이론상으론 편리하게 활용할 수 있다. 예를 들어... 위와 같이 구성된 number 리스트를 출력한다면.. 1번처럼 기본 for문이나 2번 같은 향상된 for문을 사용하여 출력할 수 있을 것이다. 반면 람다식으론 아래와 같이 가능하다. key와 value를 가지는 map을 다룬다면 어떻게 하면 좋을까? 직관적이게도 앞서 작성한 문에서..

[Java] 연습과제 - 학생성적관리프로그램 구성하기

배우는 것도 재밌지만 역시 배운걸 활용하고, 제대로 돌아가게 해낼 때의 재미가 최고인 것 같다. 지난주 과제 중 하나였던 학생성적관리 프로그램이다. - map을 활용할 것 - 학생 한명의 성적을 관리하는 프로그램이 되어야함 - 기본 출력문은 아래와 같을 것; >>Menu 1. 성적추가 2. 성적조회(모든 과목 성적과 총점, 평균 출력) 3. 검색된 과목의 성적조회 4. 성적 수정 5. 종료 Map을 배우고나서 활용하는 첫 과제였기에 이것도 굉장히 재밌게 코딩했다. 라인 100줄 이내로 간단하게 짤 수 있을 것 같아서 단일 클래스로 진행했다. 결과적으론 110줄이 넘었지만. 메인 부분이다. 지난번 올린 메뉴 프로그래밍의 메인 클래스와 별다를게 없고, 그저 HashMap을 사용한다는 것 정도가 새롭다. 주석..

[Java] 연습과제 - 메뉴판 짜기

자바를 2주 정도 공부했을 때 숙제로 짜본 코드이다. 강사님이 제시한 조건들은 다음과 같다; - main 클래스는 출력용으로만 사용할 것 - product는 별도의 클래스로 구성하여 상품의 등록/출력이 가능하게 할 것 - 기본적으로 아래의 항목들이 출력되며, 원하는 것을 선택하여 진행 가능할 것 --Menu-- 1. 제품추가 2. 제품리스트보기 3. 제품주문 4. 주문내역(주문리스트를 출력). 내역 마지막에는 총 금액도 출력 5. 프로그램 종료 제법 재밌게 했었는데, 구성이 간단하기에 별도의 인터페이스를 구성하지는 않고 메인, 매니저, 제품 클래스 세가지로 완성하였다. 1) 제품 클래스 가장 간단한 클래스다. 필드로 메뉴명과 단가를 넣어주고 생성자도 간단하다. getter/setter는 이클립스에서 자동..

[Java] Collection - Set, Map 써보기

List에 이어 이번엔 Set과 Map이다. 1) Set Set은 List와는 달리 순서가 보장되지 않고 중복된 값이 저장되지 않는다. List는 요소들이 각각 index 값을 가지고 순서대로 서있는거라면 Set은 이것저것이 섞여있는 주머니 같은 느낌이랄까. 이 때문에 index 값을 써서 출력하지 못하고 iterator로 출력이 가능하다. 물론 한꺼번에 출력하는건 간단히 된다. list에서 요소를 넣듯 .add를 통해 다섯가지 요소를 넣어줬다. 그리고 apple은 일부러 두번 넣었다. 출력값은 이렇다. 여기서 두가지를 알 수 있다; index 값이 없다보니 입력 순서에 관계없이 멋대로 저장되고, 중복된 입력값은 저장되지 않는다. 배열에서 for문으로 출력하듯 하기 위해선 위와 같이 다소 번거로운 코드를..