목록개발 (83)
꿈 많은 사람의 이야기
배열은 쉽게 생성하고 사용할 수 있지만, 저장할 수 있는 객체 수가 생성할 때 결정되기 때문에 지속적으로 변화하는 객체를 저장하기엔 부족한 면이 있다. 배열의 크기를 크게 생성하면 되지만 이것은 좋지 못한 방법이다. 특히 객체를 삭제 했을 때 해당 인덱스가 비게 되는 문제가 있다. 아래의 그림을 보자 이렇게 듬성듬성 빠져 공간 낭비가 될 수도 있고 저장 하는 구조도 썩 좋지 않다. 자바는 이러한 문제점을 해결하기 위해 자료구조(Data Structure)를 바탕으로 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 java.util 패키지에 컬렉션과 관려뇐 인터페이스와 클래스들을 포함시켰다. 이것을들 컬렉션 프레임워크(Collection Framework)라고 부른다. 컬렉션은 요소를 수집해서 저장하는..
Calendar 클래스를 이용하지 않고 단순히 배열의 값에 1월부터 12월까지 날짜를 두어 D-day를 계산해보는 소스를 만들어 보자. 날짜와 관련된 게시글은 lsjsj92.tistory.com/51에 게시했으니 참조하기 바란다. 일단 여기에서는 다른 방법으로 해본다. 먼저 배열을 생성한다. 1 int[] days = {31,28,31,30,31,30,31,31,30,31,30,31}; cs이걸로 진행한다. 저것은 2017년 기준 1월부터 12월까지 마지막 날짜를 가리키고 있다. 그럼 D-day 소스를 만들어보자. 예를 들어 특정 날짜에서 100일 후의 날짜를 구하려면 다음과 같이 하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24..
자바로 간단한 로또 프로그램을 만든다. 난수로 6개의 배열에 값을 저장하고 중복을 체크도 한다. (이 부분은 값을 적게해서 비교를 빠르게 해보는 예제이다. 실제로 해보려면 로또 숫자만큼 6을 변경해주면 된다 45인가..?) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public void start() { int[] lotto = new int[6]; boolean check = false; int cnt = 0; Random rand = new Random(); while(cnt
db의 값을 출력하고 업데이트 등의 과정을 하면서 쿼리문이 좀 복잡해질 수도 있다. 예를들어 insert into saram(id, name, age) values('"+id+"', '"+name+"', '"+age+"'); 이런식으로 해야하는데 큰 따옴표, 작은 따옴표가 헷갈리기도 하고 복잡해 보인다. 이런 것을 방지하고 좀 간단하게 쿼리를 처리해주는 기능이 PreparedStatement이다. 동작 하는 방법은 이런식이다. 1 2 3 4 5 6 String sql = "insert into saram(id, name, age) values(?,?,?)"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, id); pstm..
그리고 기본적인 데이터를 넣어보자 먼저 mysql에서 테이블과 데이터를 넣어보자 create table member( code char(4) not null, name varchar(30) not null, id varchar(30), pwd varchar(15), age int(3) ); create table saram( id varchar(20), name varchar(20), age tinyint ); insert into member values('1001', '강지아', 'jeea', '1111', 20); insert into member values('1002', '이장미', 'rose', '2222', 30); insert into member values('1003', '김백합', '..
이 페이지는 mysql이 설치되어 있다고 가정하고 진행한다. 먼저 mysql 홈페이지에서 mysql conncetion 드라이버를 준비한다. 과정은 다음과 같다. 먼저 mysql.com에 접속해서 download탭을 보면 community 탭이 있을 것이다. 해당 탭을 들어가면 왼쪽 목록에 MySQL Connectors 이 있을 것이다. 거길 들어간다. 여러가지 커넥터들이 존재하는데 본인은 JDBC를 연동하기 위해 Connector/J를 설치하겠다. 해당 탭에 들어간다. 그리고 해당되는 파일을 받아서 진행한다. 그 다음 알집을 풀면 다음 사진과 같은 목록이 있을 것이다 거기서 mysql-connector-java-5.1.42-bin.jar 파일이 있는데 이것을 이제 java 폴더에 넣으면된다. 본인은 C..
유닉스 시간은 시각을 나타내는 방식이다. 1970년 1월 1일 00:00:00 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것이다. 자바에서 이 유닉스 시간을 활용해서 D-day같은 것을 만들 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 class Cal { Calendar cal = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); String[] ss; public int doomDay(String s) { ss = s.split..
배열을 정렬하는 방법은 프로그래머가 직접 정렬 메소드를 만들어 사용할 수도 있지만 기본적으로 자바에서 제공해주는 정렬 기능도 있다. Arrays.sort()를 이용하면 된다. Arrays 클래스에 있는 sort()메소드이다. 다음 예제를 보자 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class SortEx { public static void main(String[] args) { int[] scores = {99, 95, 98}; Arrays.sort(scores); for(int i = 0 ; i
문자열이 정해져 있는 형식(정규 표현식)으로 구성되어 있는지 검증해야 하는 경우가 있다. 예를 들어 이메일 등이다. 그것을 검증 하는 방법이 있다. 정규 표현식 작성 방법 기호 설명 [ ] 한 개의 문자 [abc] a,b,c중 하나의 문자 [^abc] a,b,c 이외의 하나의 문자 [a-zA-Z] a~z, A~Z중 하나의 문자 \d 한 개의 숫자,[0-9]와 동일 \s 공백 \w 한 개의 알파벳 또는 한 개의 숫자, [a-zA-Z_0-9]와 동일 ? 없음 또는 한 개 * 없음 또는 한 개 이상 + 한 개 이상 {n} 정확히 n개 {n,} 최소한 n개 {n, m} n개에서부터 m개까지 ( ) 그룹핑 ^ 시작 $ 끝 이 표를 가지고 실습을 해보자 다음은 02-123-1234 또는 010-1234-5678과 ..
자바 문자열을 처리할 때 특정 구분자로 연결되어 있을 경우 구분자를 기준으로 부분 문자열을 분리하기 위해서는 String의 split() 메소드를 이용할 수 있다. 1 2 3 4 5 6 7 String text = "이&김,박-최"; String[] n = text.split("&|,|-"); for(String name : n) { System.out.println(name); } Colored by Color Scripter cs split 메소드 안에는 정규표현식이 들어간다. & 또는 , 또는 - 가 들어가면 분리해서 문자열 배열에 넣는다. 즉 해당 문자열을 구분자로 구분지어 배열로 만든다. 그리고 그 배열을 출력하면 분리되어 저장되어 있는 것을 볼 수 있다. 문자열을 저장하는 String은 내부의..