본문 바로가기

Programming/JAVA

(31)
java : System.out.println(); 오늘 무심코 syso ctrl+space를 누르다 이 시스템이 대체 뭐하는 시스템인가 궁금해서 닥치는대로 비집고 들어가봤습니다. 사실 위와 같은 경우는 로그를 찍을때 Logger.err.println() 처럼 엄청 자주 쓰이는데 그 로직에 대해서는 이해못하고 단순히 타이핑만 하는 경우가 많았죠... 스스로 반성해봅니다. ㅠㅠ System 우선 System 은 다들 아시다시피 final class입니다. 상속할 수 없는 최종 레벨의 class이죠. 또한 생성자는 private로 막아놓았기 때문에 생성하여 사용할 수도 없습니다. 안에 필드나 메소드가 무척 많으나... 접해봤던 것은 out 변수 외엔 그닥 없네요. ㅎㅎ 따라서 System 클래스를 정리하자면 상속할 수 없고, 생성할 수도 없는(인스턴스화x) ..
java : 문자열을 int형으로 형변환할때 주의점(parseInt, valueOf) 대부분 학교에서나 어디에서나 parseInt를 주로 사용하고 배우기때문에 큰 의미가 없겠으나............. parseInt는 문자열로 된 정수의 표현이 음수까지 인식하고 리턴한다. 하지만 valueOf는 음수를 인식하지 못하고 온전히 양수로만 parsing하여 리턴. 또한 valueOf는 내부적으로 parseInt를 사용하고 있기때문에 성능면에서도 parseInt보다 효율적이지 못하다. 물론 둘의 성향은 다르지만 ;; (parseInt(String s) : int / valueOf(String s) : Integer parseInt public static int parseInt(String s) throws NumberFormatException Parses the string argument..
instanceof 연산자 boolean | instance instanceof class instanceof 연산자는 객체가 어떤 클래스의 객체인지 확인할 때 쓰인다. 객체가 피연산자의 객체라면 true를, 그렇지 않다면 false를 반환한다. 이때 알아두어야 할 점은 해당 객체가 is a 관계를 가지고 있는 클래스 중 자식클래스에서 생성된 객체라 하더라도 피연산자가 부모클래스든 자식클래스든, true를 반환한다. 예를 들어 class A{} class B extends A{} 이러한 관계일때 아래 구문을 모두 작성하여 실행한다면 A a = new A(); B b = new A(); system.out.println(b instanceof A); system.out.println(b instanceof B); system.out..
DB튜닝시 varchar2로 입력가능한 글자수 계산에 대해 유의할 점. varchar2 타입에서 입력 가능한 최대 크기는 4KB이며 이는 영문은 4천자, 한글은 2천자라고 다들 계산합니다. 위 기준대로라면 한글은 2천자가 들어가야 하나, 사실은 그보다 훨씬 적게 들어가는 상황이 존재합니다. PreparedStatement 인스턴스에서 setString() 으로 문자열을 지정할 경우에 그러한데, 내부적으로 문자를 UTF-8로 변환해서 길이가 4KB를 넘는지를 보게됩니다. 영문의 경우 2바이트로 계산해서 최대 2천자까지 들어가나, 한글의 경우 UTF-8에서 문자당 3바이트(?)를 차지하므로 입력 가능한 문자의 개수는 666자(1998 바이트)에 불과합니다. 하지만 Statement 로 할 경우에 이런 제약은 없으나, 쿼리가 외부에 노출되는 보안상의 문제때문에 PreparedSt..
JAVA : boxing, unboxing 기본type 을 객체로 쓰려한다면 -> boxing 객체를 기본type으로 쓰려한다면 -> unboxing 이때 boxing이 된 기본 type은 객체이므로 heap 메모리에 올라가고 객체였던 것을 기본type으로 unboxing 할 경우엔 stack 메모리에 올라가게 됩니다. ex ) int i = 123; // a value type object o = i; // boxing int j = (int) o; // unboxing java 1.4버전 까지는 wrapper 클래스를 사용함으로서 이를 명시적으로 작성해야했으나 1.5버전부터는 wrapper클래스를 안쓰는 방향으로 지양합니다. int i = 123; Integer wrapI = new Integer(i); // Boxing개념 i = wrapI..
java : for문 (배열 등과 같은 자료구조의 각 value를 쉽게 접근하는 방법) 새로운 문법인지는 모르겠지만 기존에 알고 있던 것과는 달라 포스팅합니다. ㅎㅎ;; int[] intArray = new int[3]; intArray[0] = 0; intArray[1] = 1; intArray[2] = 2; for(int ab1: intArray) System.out.println(ab1); 출력 : 0 1 2 풀이 : for(자료형 변수 : 배열변수명) 변수가 한번 쓰일 때마다 0번째 배열부터 출력이 이루어지고 이 배열의 끝에 도착하면 자동 종료됩니다. 이 새로운 for문이 유용한 것은 직접 인덱스를 접근할 필요가 없다는 것입니다. 바로 이해하기 쉬운 예를 들자면 int arrLength = intArray.length; 이런 불편한 코딩이 필요없다는 것이죠. :) 첨언 : jdk 1..
jakarta(자카르타) 한글화 홈페이지. http://apache-korea.org/ 개발자 또는 저처럼 웹언어를 공부하는 많은 분들 중 웹서버관련하여 매뉴얼이 없어 답답함을 느낀 분들이 많으실 것으로 생각됩니다! 특히나 path잡는 부분들에 대해선 정말 때로는 참을 수 없는 분노로... 삭제와 새로설치를 여럿 반복하면서 컴퓨터를 괴롭힘으로 열을 식히는 사람들도 .... 뜨끔;; 오늘도 ant 설치후 경로설정에 10여분간의 시간을 투자하면서 슬슬 화가 나려는 찰나에 이런 행복한....이라고 하기엔 너무 늦게 알아버린건가요? 이 작업은 일찍이 수행되어왔었네요~ 그간 이런 좋은 환경을 제쳐두고 영어사전을 강요해왔던 여러 교수님들과 강사님들은 교육생인 저에게 영어를 소홀히 하지말라는 뜻에서 그러셨던거죠?? 그런거죠?? ㅠ_ㅠ 개발하다보면 영어는 필수..