본문 바로가기

분류 전체보기

(105)
[JAVA 웹 개발 공부] 국비지원 47~54일차 - 팀프로젝트 <DB 프로젝트_마음을 JAVA라> 주제 1. 프로젝트 목표 JAVA GUI와 데이터데이스 활용을 통한 2 Tier Program 제작 2. 주제 친구와 서로를 얼마나 잘 알고 있는지를 알아갈 수 있는 QnA 게임 (1) 회원가입시 간단한 질문에 답을 작성한 후, 친구를 선택하여 게임을 시작 (2) 게임에서는 친구가 퀴즈를 푼 결과를 유추하며 맞추고, 이를 토대로 점수 및 랭킹 확인 3. 주제 선정 이유 사회에서 개인주의적인 경향이 강해지고 있기 때문에, 이 프로젝트를 통해 친구들끼리 서로를 더욱 잘 알아가고, 더욱 깊은 대화를 나눌 수 있도록 돕고자 함 프로그램의 기능 1. 회원 가입과 회원정보 DB 관리 2. 질문지 작성 다른사람 공략 랭킹 확인 3. 시뮬레이션을 통해 재미요소 추가 프로그램의 제작과정 UI 구상 프로그램 구성 *프로그..
[JAVA 웹 개발 공부] 국비지원 46일차 - 이진데이터, BLOB, Path 클래스, Files 클래스, 베이스64 인코딩, 외부 데이터베이스 접근 BLOB Binary Large Object 의 약어이다. 이진 데이터를 저장하기 위한 MySQL 의 필드 유형이라고 한다. 이미지의 경우 이진 데이터로 이루어져 있기 때문에 BLOB 유형의 데이터로 만들어서, MySQL 데이터베이스에 저장할 수 있다. MySQL 에는 4가지의 BLOB 타입이 있다. *BLOB *TINYBLOB *MEDIUMBLOB *LONGBLOB Path 클래스 특정경로나타내는 객체이며, 경로 표시를 다양하게 나타낼 수 있다. File file = new File("D:\\Java\\춘식\\춘식16.png"); Path path = Paths.get("D:\\Java\\춘식\\춘식16.png"); Files 클래스 파일관련작업들을 메소드화 시켜서 글자를 쓰거나 읽어오거나 이진데이터를..
[JAVA 웹 개발 공부] 국비지원 45일차 - 회원가입 프로그램, GeneratedKeys, regex(Regular expression) 회원가입, 회원탈퇴 프로그램 package main; import java.util.Scanner; import exceptions.DataIOException; import exceptions.InputNotValidException; import user.UserinfoRepositoryImpl; import user.UserinfoService; import user.UserinfoServiceImpl; // 간단한 입력(콘솔 입력) // 1. 회원가입 // email 서식 // @가 하나는 포함되어있어야 함. // @앞은 영소문자만 1~15자 문자열 // @뒤는 영소문자 or . 의 1~15자 문자열 // 이름, 성 서식 // 영소/대문자 및 한글로 표현된 1~15자 문자열 // 2. 회원탈퇴 p..
[JAVA 웹 개발 공부] 국비지원 44일차 - addBatch, Index, last_insert_id(), 세션변수, Stored Procedures JDBC 대량 쿼리문 addBatch, executeBatch 실행 addBatch()를 사용하면 쿼리를 건별로 수행하지 않고, 여러 개의 쿼리들을 메모리에 올려놓고 모아둔 쿼리들을 한 번에 실행시켜 수행 속도를 개선할 수 있다. 1. Connection객체 설정 부분에 AutoCommit을 false로 설정 conn.setAutoCommit(false); 2. addBatch로 쿼리들을 메모리에 올리기 pstmt.addBatch(); 3. executeBatch로 모아둔 쿼리들을 실행 (executeBatch는 처리결과로 int[] 타입의 값 반환) int[] result = pstmt.executeBatch(); 4. commit conn.commit(); 5. 예외발생시 rollback catch ..
[JAVA 웹 개발 공부] 국비지원 43일차 - PreparedStatement, JOIN, 트랜잭션, MySQL 반복문, 조건문, Constraint 메소드에 예외 선언하기 - throws 예외를 메서드의 throws에 명시하는 것은 예외를 처리하는 것이 아니라, 자신(예외가 발생할 가능성이 있는 메서드)을 호출한 메서드에게 예외를 전달하여 예외처리를 떠맡기는 것이다. https://ej-development-note.tistory.com/24 인터페이스 vs 추상 클래스 추상클래스는 인터페이스와 유사하다. 이들은 객체화할 수 없고 주로 구현이 안 된 메소드들로 이루어진다. 하지만 추상 클래스에서는 일반적인 필드도 선언할 수 있으며, 일반적인 메소드도 정의할 수 있다. 인터페이스에서 모든 메소드는 public, abstract가 된다. 자바에서는 하나의 클래스만 상속받을 수 있지만 여러 개 인터페이스를 동시에 구현할 수 있다. 1. 추상클래스 만약 관..
[JAVA 웹 개발 공부] 국비지원 42일차 - ResultSet, static import, static block, MySQL DB 연결 ResultSet ResultSet은 조회한 결과 값에 순차적으로 접근할 수 있는 커서를 제공, 데이터베이스 내부적으로 수행된 SQL문 처리 결과를 JDBC에서 쉽게 관리할 수 있도록 해주는 JAVA 객체이다. executeUpdate() 메서드 호출 시 반환되는 객체로 실제 데이터를 가지고 있는 것이 아니라, SELECT 문의 결과에 접근할 수 있는 일종의 포인터로 이해해야 한다. ResultSet rs = null; try { stmt = conn.createStatement(); rs = stmt.executeQuery("SELECT * FROM book"); while (rs.next()) { int no = rs.getInt("no"); String title = rs.getString("tit..
[JAVA 웹 개발 공부] 국비지원 41일차 - MySQL 문법, 함수, JDBC, 드라이버 적재, Connection MySQL 문법 *distinct 중복제거하기 select distinct job_id from employees; *두가지 기준으로 정렬해주기 select * from employees where department_id in (90, 60) order by department_id desc, salary asc; department_id로 내림차순 정렬 후, department_id가 같은 employees 내에서 salary로 오름차순 정렬 *세로로 결합해주기 주의점) 개수와 타입이 다른경우 결합X union은 수행에 있어서 속도가 느리기때문에 where절을 사용하는 것이 더 빠르다. union(중복제거) (select 'A', 'B', 'C') union (select 'D', 'E', 'F') ..
[JAVA 웹 개발 공부] 국비지원 40일차 - MySQL 테이블 생성, 외래키, 테이블 조회 MySQL 테이블 생성 *PK : primary key *NN : not null *AI : auto_increment table person, book create database if not exists my_db; show databases; use my_db; show tables; -- 이름 / 나이 -- 고정길이 문자열 / 가변길이 문자열(사이즈에 맞게 조절됨. 불필요한 공간 할당 줄일수 있음. 용량 줄일 수 있음.) create table person ( name varchar(10), -- 이름 가변길이문자열(길이제한10) age int -- 나이 정수형 ); select * from person; desc person; -- 행 정보 저장 insert into person (name, a..
[JAVA 웹 개발 공부] 국비지원 39일차 - 데이터베이스(DB), MySQL 프로젝트에 jar파일 추가하기 이클립스에서 내가 프로젝트 내에 있는 특정 클래스를 다른 프로젝트의 클래스에서 라이브러리처럼 사용하고 싶을 때 Jar파일로 압축하여 사용할 수 있다. *외부에서 jar파일 가져와서 다른 프로젝트에서 사용하기 프로젝트 우클릭 > Properties > Java Build Path > Libraries 탭 > Add External JARs > Apply and Close > jar 파일 선택 >import문 추가 *다른 프로젝트내에 있는 클래스 사용하기 프로젝트 우클릭 > Properties > Projects 탭 > Add > 프로젝트 선택 > Apply and Close > import문 추가 데이터베이스(DB) 1. 데이터베이스 데이터베이스를 한 마디로 정의하면 ‘데이터..
[JAVA 웹 개발 공부] 국비지원 38일차 - 전화번호부 프로그램, try-with-resources, 메모장 만들기, csv 파일 읽기 전화번호부 프로그램 public class Start { public static void main(String[] args) { UserInfos u = new UserInfos(); u.start(); } } import java.util.LinkedHashMap; import java.util.Map; import java.util.Map.Entry; public class UserInfos implements UserInputEventListener { private Map users; private UserFrame frame; private UserFileRepository repo; public UserInfos() { users = new LinkedHashMap(); frame = new..
[JAVA 웹 개발 공부] 국비지원 37일차 - File 클래스, 입출력스트림 File 객체 File 클래스는 파일을 조작하고 검사하는 코드를 쉽게 작성하게 해주는 클래스이다. File 객체는 파일이 아닌 파일 이름을 나타내는 객체이다. FileWriter와 같은 클래스의 생성자에 이 File 객체를 넘겨서 실제로 파일을 생성할 수 있다. 만약 File 객체가 나타내는 파일이 존재한다면 프로그램은 파일의 속성을 조사하고 파일에 대한 여러 가지 동작을 수행할 수 있다. 예를 들면 파일의 이름을 변경한다거나 삭제하거나 권한을 변경할 수 있다. *File 객체 생성 File file = new File("D:\\myfile.txt"); *File 클래스 메소드 반환형 메소드 설명 String getName() 파일의 이름을 반환 String getPath() 경로를 반환 String g..
[JAVA 웹 개발 공부] 국비지원 29~36일차 - 팀프로젝트 <로또 프로그램> 주제 📢 로또 시뮬레에션 프로젝트 주제 선정 이유 ① 실제로 판매가 가능한 프로그램이 가능함. 상업성이 있다. ② 복잡한 자료 구조를 가지고 있다. → 자료를 다루는 연습을 하는 것. ③ 복잡한 자료를 GUI로 사용자가 편하게 사용할 수 있게 → GUI 다루는 연습 할 수 있음. 📢 로또 시뮬레에션 프로그램 목표 ① 자바 환경이 실행 가능한 개인 PC에서, 가상의 로또 시뮬레이션을 수행하고자 한다. ② GUI로 구성하며 프로그램을 반복해서 사용 가능하도록 진행한다. 📢프로그램 구성 계획 1차 ) 번호 선택 방법을 자동/수동/반자동, 세 가지 방법으로 구성하며, 결과 확인 버튼을 눌러 그 즉시 당첨 결과를 확인할 수 있다. 2차 ) 첫 화면을 추가로 만들어, 그 화면에서 로또 금액을 설정할 수 있다. 📢 ..
[JAVA 웹 개발 공부] 국비지원 28일차 - 이클립스 깃허브, 이클립스 리팩터링(refactoring) 이클립스 깃허브 *자바 깃 저장 Project 우클릭 > Team > Share Project > Create > Browse > Finish *기록하기 Team > Commit > class파일 Stage Changes로 옮기기 > Commit Message 입력하기 > Commit *깃 보기 Window > Show View > Other > History 검색 > History 창이 뜨면 프로젝트 클릭 > Histroy 보기 *Clone(프로젝트 처음 다운 받기) Window > Show View > Other > Git Repositories > Clone a Git ...( 오른쪽 노란아이콘 초록색 화살표) > Source Git Repositroy > Finish > 프로젝트 우클릭 > imp..
[JAVA 웹 개발 공부] 국비지원 27일차 - 컬렉션 프레임워크, HashSet, LinkedList, LinkedHashSet, HashMap 컬렉션 프레임워크(Collections Framework) 1. 컬렉션 프레임워크 자바에서 컬렉션 프레임워크(collection framework)란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미한다. 즉, 데이터를 저장하는 자료 구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것이다. 이러한 컬렉션 프레임워크는 자바의 인터페이스(interface)를 사용하여 구현된다. 2. 컬렉션 프레임워크의 핵심 인터페이스와 특징 인터페이스 특징 구현클래스 List 순서가 있는 데이터의 집합. 데이터의 중복을 허용한다. 예) 대기자 명단 ArrayList, LinkedList, Stack, Vector 등 Set 순서를 유지하지 않는 데이터의 집합...
[JAVA 웹 개발 공부] 국비지원 26일차 - 컬렉션(collection), Iterator, ArrayList 컬렉션(collection) 1. 컬렉션 컬렉션은 애플리케이션의 작성을 도와주는 중요한 도구이다. 컬렉션은 자료를 저장하기 위한 구조이다. 대부분의 프로그램은 자료를 저장하여야 하고 따라서 어떤 자료구조를 사용할 것인지를 결정하여야 한다. 많이 사용되는 자료구조로는 리스트(list), 스택(stack), 큐(queue), 집합(set), 해쉬 테이블(hash table) 등이 있다. 컬렉션은 데이터를 저장하는 자료구조이다. 컬렉션은 제네릭 기법으로 구현되어 있기 때문에 어떠한 타입의 데이터도 저장할 수 있다. 2. 컬렉션의 종류 자바는 컬렉션 인터페이스와 컬렉션 클래스로 나누어서 제공한다. 인터페이스와 클래스들은 모두 java.util 패키지에 포함되어 있다. *컬렉션 인터페이스 인터페이스 설명 Coll..
[JAVA 웹 개발 공부] 국비지원 25일차 - 이벤트 처리, 내부 클래스, 익명 클래스 이벤트 처리 1. 이벤트 이벤트(event)란 사건 발생을 알리는 비동기적 알림이나 신호를 말한다. 이벤트는 사용자 인터페이스나 외부 I/O 장치, 프로그램의 다른 부분에서 발생한다. 사용자는 마우스 클릭, 키보드 입력을 통해 이벤트를 발생시키며, 외부 I/O 장치는 데이터 수집이 끝났거나 오류 조건이 되었을 때 이벤트를 발생시킨다. 이벤트는 주로 사용자가 컴포넌트(단추, 목록 등)를 이용해 발생시키며, 이를 통해 프로세스는 실행 중 사용자가 원하는 작업을 파악하고 그에 대응하는 작업을 수행하게 된다. 2. 이벤트 발생원 이벤트 발생원(event source)는 이벤트(알림, 신호)를 발생시키는 근원지를 의미한다. 마우스와 키보드 같은 I/O 장치, AWT나 스윙에서는 사용자와의 의사소통에 사용하는 컴포..
[JAVA 웹 개발 공부] 국비지원 24일차 - 화면 전환, tabbedPane, ImageIcon, 체크 박스, 라디오 버튼, 피자 메뉴판 만들기 화면 전환하는 창 만들기 import java.awt.CardLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; class TestCard extends JFrame implements ActionListener { private JButton btn1; private JButton btn2; private CardLayout cardLayout; private JPanel pnlCenter; public TestCard..
[JAVA 웹 개발 공부] 국비지원 23일차 - 배치 관리자, 레이아웃, GUI 활용 배치 관리자 1. 배치 관리자의 종류 종류 설명 FlowLayout 컨테이너에 추가되는 순서대로 컴포넌트를 부착한다. 위쪽에서 아래쪽으로, 왼쪽에서 오른쪽으로 배치한다. 패널의 기본 배치 관리자이다. BorderLayout 컨테이너의 영역을 동서남북, 중앙의 5개의 영역으로 구분하여 이 영역에 컴포넌트를 배치한다. 프레임의 기본 배치 관리자이다. GridLayout 컨테이너의 공간을 동일한 크기의 격자로 나누고 이 격자에 컴포넌트를 배치한다. CardLayout 컨테이너에 컴포넌트를 카드처럼 겹치게 쌓아서 배치한다. BoxLayout 컨테이너에 컴포넌트를 상자 쌓듯이 가로 또는 세로 방향 차례로 배치한다. 2. 배치 관리자를 설정하기 컨테이너에 배치 관리자를 설정하려면 먼저 new 연산자를 이용하여 배치..
[JAVA 웹 개발 공부] 국비지원 22일차 - 에러, 예외, 오류, 래퍼 클래스, 예외 처리, try-catch문, GUI, JFrame, JPanel 프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 '컴파일 에러'와 '런타임 에러'로 나눌 수 있는데, 글자 그대로 '컴파일 에러'는 컴파일 할 때 발생하는 에러이고 프로그램의 실행도중에 발생하는 에러를 '런타임 에러'라고 한다. 이 외에도 '논리적 에러'가 있는데, 컴파일도 잘되고 실행도 잘되지만 의도한 것과 다르게 동작하는 것을 말한다. *컴파일 에러 : 컴파일 시에 발생하는 에러 *런타임 에러 : 실행 시에 발생하는 에러 *논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 '에러'와..
[JAVA 웹 개발 공부] 국비지원 20, 21일차 - 팀프로젝트 <호텔 객실 예약 프로그램 만들기> 주제 호텔의 데스크 직원이 사용할 수 있는 호텔 객실 관리프로그램 만들기 1. 객실 정보 객실은 2층부터 5층까지 각 층마다 20개씩 있다. 방 번호는 3자리 정수이며, 첫자리는 층수를 의미한다. (201, 301, ... ) 방 타입은 싱글과 더블이 있다. *싱글 : 방번호의 끝자리 수는 홀수 *더블 : 방번호의 끝자리 수는 짝수 2. 기능 *현재 객실 상태를 확인 가능(예약중, 투숙중, 빈 객실) *빈 객실 보기(몇 개 있는지, 몇 호실인지 알려주기) *예약된 객실 보기(몇 개 있는지, 몇 호실인지 알려주기) *투숙중인 객실 보기(몇 개 있는지, 몇 호실인지 알려주기) *각 객실의 고객의 기본 정보(이름, 전화번호 등)를 확인 가능 *객실 상태 변경 기능(예약중 → 빈 객실) 프로그램 만들 때 생각하..
[JAVA 웹 개발 공부] 국비지원 19일차 - 동적 바인딩, 상속, 구성, 추상 클래스, 인터페이스, compare()와 compareTo(), 디폴트 메서드 동적 바인딩 1. 바인딩 메소드 호출을 실제 메소드의 몸체와 연결하는 것을 바인딩(binding)이라고 한다. 자바가상머신(JVM)은 실행 단계에서 변수가 참조하는 객체의 실제 타입을 보고 적절한 메소드를 호출하게 된다. 이것을 동적 바인딩(dynamic binding)이라고 한다. 2. 동적 바인딩 오버라이드된 메소드 호출이 컴파일 시간이 아닌 실행 시간에 결정되는 메커니즘을 의미한다. 오버라이드된 메소드가 부모 클래스 참조를 통하여 호출되는 경우에 객체의 타입에 따라서 서로 다른 메소드가 호출되게 하는 메커니즘이다. 즉 객체의 실제 타입이 호출되는 메소드를 결정하는 것이다. 상속 vs 구성 상속과 아주 유사하지만 상속과는 미묘하게 다른 구성(composition)이라는 기법이 있다. 구성은 클래스가 ..
[JAVA 웹 개발 공부] 국비지원 18일차 - 상속, 다형성, 업캐스팅, 다운캐스팅, 오버라이딩, Object, super 상속 1. 상속 상속(inheritance)은 기존에 존재하는 클래스로부터 필드와 메소드를 이어받고, 필요한 기능을 추가할 수 있는 기법이다. 상속을 이용하면 여러 클래스에 공통적인 코드들을 하나의 클래스로 모을 수 있어서 코드의 중복을 줄일 수 있다. 2. 상속의 형식 자바에서 상속을 구현하는 방법은 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 'extends'와 함께 써 주기만 하면 된다. class 자식클래스 extends 부모클래스 {} 상속하는 클래스를 조상 클래스라고 하고 상속받는 클래스를 자손 클래스라고 한다. *조상 클래스 : 부모(parent)클래스, 상위(super)클래스, 기반(base)클래스 *자손 클래스 : 자식(child)클래스, 하위(sub)..
[JAVA 웹 개발 공부] 국비지원 17일차 - 다차원 배열, 2차원 배열, binarySearch(), deepToString() 다차원 배열 *2차원 배열의 선언과 인덱스 int[][] score = new int[4][3]; // 4행 3열의 2차원 배열을 생성한다. 2차원 배열의 index 2차원 배열은 행(row)과 열(column)로 구성되어 있기 때문에 index도 행과 열에 각각 하나씩 존재한다. 행의 index 범위는 '0 ~ (행의길이-1)' 이고, 열의 index 범위는 '0 ~ (열의길이-1)' 이다. 그리고 2차원 배열의 각 요소에 접근하는 방법은 '배열이름[행index][열index]'이다. int[][] score = new int[4][3]; // 4행 3열 2차원 배열 score를 생성 score[0][0] = 100; // 배열 score의 1행 1열에 100을 저장 System.out.println(..
[JAVA 웹 개발 공부] 국비지원 16일차 - 배열의 출력, 길이 변경, 복사, 비교, 정렬하기, 가변인자 배열의 출력 'Arrays.toString(배열이름)' 메서드를 사용하여 출력할 수 있다. 이 메서드는 배열의 모든 요소를 [첫번째 요소, 두번째 요소, ...] 와 같은 형식의 문자열로 만들어서 반환한다. Arrays.toString()을 사용하려면, 'import java.util.Arrays;'를 추가해야 한다. // 배열 출력하기 int[] iArr = { 100, 95, 80, 70, 60 }; System.out.println(Arrays.toString(iArr)); // [100, 95, 80, 70, 60] 예외적으로 char 배열은 println 메서드로 출력하면 각 요소가 구분자 없이 그대로 출력되는데, 이것은 println 메서드가 char 배열일 때만 이렇게 동작하도록 작성되었기 ..
[JAVA] 연습문제 - 히스토그램(분포도) 만들기 문제 사용자에게 1 ~ 100 사이의 10개의 정수를 입력받고, 아래와 같이 각 정수의 범위에 해당하는 정수 개수를 출력하기 1 ~ 10 : **** 11 ~ 20 : ** 21 ~ 30 : * 31 ~ 40 : 41 ~ 50 : ** 51 ~ 60 : 61 ~ 70 : 71 ~ 80 : 81 ~ 90 : 91 ~ 100 : * 풀이순서 1. 범위 배열 생성 2. 반복해서 정수 입력받기 3. 입력받는 값이 1 ~ 100 사이와 아닌 경우 나누기 4. 입력받는 값의 범위에 해당하는 범위 배열에 * 더해주기 5. 히스토그램 출력 전체코드 import java.util.Scanner; public class Histogram2 { public static void main(String[] args) { Sca..
[JAVA] 연습문제 - 생일 D-Day 계산하기 문제 다음 내 생일까지 몇 일이 남았는지를 구하기 오늘: 2022-11-20 생일: 2023-09-10 D-294 풀이순서 1. Calendar 클래스의 인스턴스 2개 생성 2. 한 개는 생일날짜로 설정 3. 올 해 생일이 지났는지 확인 4. 생일이 지났으면 내년 생일로 변경 5. 디데이 출력 전체코드 import java.text.SimpleDateFormat; import java.util.Calendar; public class DDay { public static void main(String[] args) { Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal2.set(Calendar.MONTH, ..
[JAVA] 연습문제 - 이번 달 달력(calendar) 만들기 문제 아래와 같이 오늘 날짜와 이번 달 달력을 출력하기 2022-11-19 토 SU MO TU WE TH FR SA 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 풀이순서 1. 현재 날짜 구하기 2. 이번 달의 마지막일 구하기 3. 1일 요일 구하기 4. 1일 위치 정하기 5. 1일부터 마지막일까지 출력하기 6. 토요일에 해당하는 날 줄바꿈하기 전체코드 import java.text.SimpleDateFormat; import java.util.Calendar; public class CalendarEx1 { public static void main(String[] args) { Calen..
[JAVA 웹 개발 공부] 국비지원 15일차 - 배열의 선언과 생성, 배열의 길이와 인덱스, 배열의 초기화 배열 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 '배열(array)'이라고 한다. 변수 대신 배열을 이용하면 다뤄야할 데이터의 수가 아무리 많아도 배열의 길이만 바꾸면 되기 때문에 많은 양의 데이터를 손쉽게 다룰 수 있다. 배열의 선언과 생성 원하는 타입의 변수를 선언하고 변수 또는 타입에 배열임을 의미하는 대괄호[]를 타입 뒤에 붙인다. 배열을 선언한 다음에는 배열을 생성해야 한다. 배열을 선언하는 것은 단지 생성된 배열을 다루기 위한 참조변수를 위한 공간이 만들어질 뿐이고, 배열을 생성해야만 비로소 값을 저장할 수 있는 공간이 만들어지는 것이다. 배열을 생성하기 위해서는 연산자 'new'와 함께 배열의 타입과 길이를 지정해 주어야 한다. 타입[] 변수이름; // 배열을 선언 (배열을 다루기..
[JAVA] 날짜와 시간 & 형식 Calendar와 Date Date는 날짜와 시간을 다룰 목적으로 JDK1.0부터 제공되어온 클래스이다. Date 클래스는 기능이 부족했기 때문에, 그 다음 버전인 JDK1.1부터 Calendar라는 새로운 클래스를 제공하기 시작했다. Calendar는 Date보다는 훨씬 나았지만 몇 가지 단점들이 발견되어서 JDK1.8부터 'java.time패키지'로 기존의 단점들을 개선한 새로운 클래스들이 추가되었다. Calendar와 GregorianCalendar Calendar는 추상클래스이기 때문에 직접 객체를 생성할 수 없고, 메서드를 통해서 완전히 구현된 클래스의 인스턴스를 얻어야 한다. Calendar cal = new Calendar(); // 에러!!! 추상클래스는 인스턴스를 생성할 수 없다. Cal..
[JAVA] 예외처리 프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 '컴파일 에러'와 '런타임 에러'로 나눌 수 있는데, 글자 그대로 '컴파일 에러'는 컴파일 할 때 발생하는 에러이고 프로그램의 실행도중에 발생하는 에러를 '런타임 에러'라고 한다. 이 외에도 '논리적 에러'가 있는데, 컴파일도 잘되고 실행도 잘되지만 의도한 것과 다르게 동작하는 것을 말한다. *컴파일 에러 : 컴파일 시에 발생하는 에러 *런타임 에러 : 실행 시에 발생하는 에러 *논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 자바에서는 실행 시(runtime) 발생할 수 있는 프로그램 오류를 '에러'와..