목록java (47)
꿈 많은 사람의 이야기
얼마전에 겪었던 자바 오류에 대해서 작성합니다. 오랜만에 자바를 갑자기 하게 되어서 이클립스(eclipse)와 STS를 사용하게 되었습니다.근데 이게 왠걸?? 갑자기 이런 오류가 딱! 떠버렸습니다could not open java lib amd64 jvm.cfg 제 상황이 어떤 상황이었냐면제어판-고급 옵션-경로에 자바 경로도 다 맞게 되어 있었습니다.(1.8.0_171)근데 cmd에서 java -version이라고 치면 1.8.0_181로 나오더군요. 이게 뭐지?? 싶었습니다. 그래서 이클립스 실행 때는 강제로 eclipse.ini 파일에서 jdk 경로 바꿔주고 했지만STS에서는 그것도 먹히지 않더군요 이게 갑자기 왜 그런가 했습니다.구글신에게 여쭈어보니 이게 자바 업데이트를 하다가 꼬일 수도 있다고 하..
call by reference와 call by value는 그림으로 보면 이렇게 된다 call by value는 값만 복사가 되기 때문에 원본의 값이 변경이 되지 않는다. call by reference는 주소값이 전달이 되기 때문에 두 번째 참조 변수가 해당 객체의 값을 변경하면 첫 번째 참조 변수가 가르키는 객체의 값도 변경이 된다. 다음 예제를 봐보자 int a = 5; int b = 10; add(a, b); //call by value System.out.println(a+", "+b); 단순히 이렇게 값만 전달해주면 add메소드에서 a를 + 5하고, b를 +10 해도 원본의 a, b의 값은 변하지 않는다. 즉 add 연산이 끝나고 프린트를 해도 a = 5, b = 10이 출력이 된다. 하지만..
Map 컬렉션은 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조를 가지고 있다. 여기서 키와 값은 모두 객체이다. 키는 중복 저장될 수 없지만 값은 중복 저장될 수 있다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다. Map 컬렉션에는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있다. 밑은 Map 컬렉션에서 공통적으로 사용 가능한 Map 인터페이스의 메소드들이다. 기능 메소드 설명 객체 추가 V put(K key, V value) 주어진 키와 값을 추가, 저장되면 값을 리턴 객체 검색 boolean containsKey(Object key) 주어진 키가 있는지 여부 b..
1 2 3 4 5 6 7 8 9 10 일반적인 2차원 배열 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 private void test01(){ int[][] arr = new int[5][5]; boolean b = false; int number = 1; for(int i = 0 ; i
List 컬렉션은 저장 순서를 유지하지만, Set 컬렉션은 저장 순서가 유지되지 않는다. 또한 객체를 중복해서 저장할 수 없고, 하나의 null만 저장할 수 있다. Set 컬렉션은 수학의 집합에 비유될 수 있다. 집합은 순서와 상관없고 중복이 허용되지 않기 때문이다. 그리고 들어갈 때의 순서와 나올때의 순서가 다르다! 다음은 Set 컬렉션에서 공통적으로 사용 가능한 Set 인터페이스의 메소드들이다. 인덱스로 관리하지 않기 때문에 인덱스를 매개 값으로 갖는 메소드가 없다. 기능 메소드 설명 객체 추가 boolean add(E e) 주어진 객체를 저장, 객체가 성공적으로 저장되면 true를 리턴하고 중복 객체면 false를 리턴 객체 검색 boolean contain(Object o) 주어진 객체가 저장되어..
배열은 쉽게 생성하고 사용할 수 있지만, 저장할 수 있는 객체 수가 생성할 때 결정되기 때문에 지속적으로 변화하는 객체를 저장하기엔 부족한 면이 있다. 배열의 크기를 크게 생성하면 되지만 이것은 좋지 못한 방법이다. 특히 객체를 삭제 했을 때 해당 인덱스가 비게 되는 문제가 있다. 아래의 그림을 보자 이렇게 듬성듬성 빠져 공간 낭비가 될 수도 있고 저장 하는 구조도 썩 좋지 않다. 자바는 이러한 문제점을 해결하기 위해 자료구조(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', '김백합', '..