- sts에서 QueryDSL을 사용할 때 Q class가 읽히지 않을 때 gradle에서 dependencies에 compile "com.mysema.querydsl:querydsl-jpa:3.6.3" compile "com.mysema.querydsl:querydsl-apt:3.6.3:jpa" 라고 설정하면 자동으로 Q class 가 생성된다. 하지만 gradle에서 build하니 Q class 를 바로 읽지 못해서 아래와 같은 설정을 해주었다. -> 폴더 우클릭 -> BuildPath -> Configure Build Path ->Source탭의 Add Folder를 클릭해서 경로를 추가해준다.
- 가변 인수 자바5에서 추가된 기능으로 메소드에 동일한 타입의 파라미터의 숫자가 고정적이지 않을 때 사용된다. - 가변 인수를 사용한 메소드 void print(String... strs){ for(String str : strs){ System.out.println(str); } } - 사용법 * 가변 인수를 사용한 메소드에 들어가는 파라미터는 배열로 컴파일되어 들어간다. * 그러므로 배열을 파라미터로 넘겨도 같은 결과를 나타낸다. print("a"); print("a", "aa"); print("a", "aa", "aaa"); print("a", "aa", "aaa", "aaaa"); print("a", "aa", "aaa", "aaaa", ······); String[] strs = {"a", "..
- 인터페이스(interface) 1. 추상 메소드와 상수만을 가질 수 있다. 2. 모든 메소드는 public abstract가 자동으로 붙기 때문에 생략이 가능하다. 3. 모든 상수는 public static final이 자동으로 붙기 때문에 생략이 가능하다. 인터페이스는 클레스가 가져야 하는 규약만을 정의하고 인터페이스를 상속받는 클레스는 인터페이스에 정의 되어있는 모든 메소드를 정의 해야 한다. 즉 인터페이스는 빈통을 만들고 클레스가 그 빈통을 채우는 형식이다. 사용법은 아래와 같다. interface TestI { int a = 10; // public static final int a = 10;과 같다 int add(); // public abstract int add();와 같다. } 인터페이..
- 생성자 생성자는 클래스의 객체를 생성하고 객체를 초기화하는 데 사용된다. 생성자는 여러 가지 특징이 있다. 1. 값을 반환하지 않는다. 2. 생성자의 이름은 클래스의 이름과 같다. 3. 생성자를 코딩하지 않으면 디폴트 생성자가 컴파일러가 자동으로 생성한다. * 디폴트 생성자란 파라미터가 아무것도 없는 생성자를 뜻한다. 4. 개발자가 명시적으로 생성자를 생성하면 컴파일러는 디폴트 생성자를 생성하지 않는다. 5. 객체를 생성할 때 new 연산자를 사용해 생성자를 딱 한번 호출한다. - ex) class Test{ int i; Test() { // 디폴트 생성자 } Test(int i) { // 명시적 생성자 this.i = i; } } Test a = new Test(); // 생성자를 통한 객체 생성
- this, this(), super, super() this : 파라미터명과 객체가 가지고 있는 변수명이 같을 때 객체가 가지고있는 변수를 가르키기 위해 사용한다. - ex)class Test { int a; Test(int a){ this.a = a; // this.a는 전역변수 a를 가르킨다. }} this() : 객체가 가지고 있는 생성자를 호출한다. - ex)class Test { int a; String b; Test(int a){ this.a = a; } Test(int a, String b){ this(a); // Test(int a) {...} 생성자를 호출한다. this.b = b; }}* 주의사항 : this()는 맨위에 작성해야한다. 그리고 생성자 이외의 메소드에서는 사용할 수 없..
- 오버라이딩(Overriding) 메소드의 재정의를 뜻한다. TestA와 TestB라는 클레스가 있을 때 TestA를 TestB가 상속받고 TestA의 메소드를 TestB가 재정의 할 때 오버라이딩이라 말한다. 오버라이딩 할때에는 접근제한자, 메소드의 이름, 리턴타입 그리고 파라미터의 타입과 수가 일치해야 한다. class TestA { public int add(int a, int b){ return a + b; } } class TestB extends TestA { int c = 10; public int add(int a, int b){ return a + b + c; } } 위의 B클레스의 add메소드가 오버라이딩한 상태이다. - 오버로딩(Overloading) 이름이 같은 여러개의 메소드를 ..
- 비교연산자 >=, >, '1' true 1 > "" true 'ab' > 'a' true 1 > null true 1 > NaN false 1 > undefined false true > false true == : 동등비교 연산자 (좌항과 우항의 값을 비교한다.) - null과 undefined는 같다. - 양쪽 모두 숫자일 때 - 양쪽 모두 문자일 때 - 한쪽이 숫자이고 다른 한쪽이 문자열이며 숫자로 형변환이 가능할 때 - 불린값 비교 가능 (true는 1, false는 0과 같다) - Date값 비교 가능 null == undefined true 1 == 1 true "a" == "a" true 1 == "1" true true == true true true == 1 true false == ..
- try-with-resources ( 리소스 자동 해제 ) 자바 7버전에 추가된 내용으로 close가 필요한 resource들의 close를 자동으로 해준다. try-with-resources가 없었다면 아래와 같이 finally문에서 close를 해줘야 했다. FileOutputStream fos = null; try { fos = new FileOutputStream(filePath); } catch(Exception e){ } finally { if(fos != null){ try{fos.close();}catch(Exception e){} } } 이제는 아래와 같이 close를 하지 않아도 자동으로 close를 해준다. try(FileOutputStream fos = new FileOutput..
- 거품 정렬(Bubble sort) ( * 오름차순기준 * ) 인접한 두 원소를 비교하여 정렬하는 방법이다. 원소의 이동이 거품이 수면으로 올라오는 모습을 보이기 때문에 지어졌다고 한다. - ex) 테이블 비교값 5, 3, 2, 1, 4 5, 3 3, 5, 2, 1, 4 5, 2 3, 2, 5, 1, 4 5, 1 3, 2, 1, 5, 4 5, 4 3, 2, 1, 4, 5 3, 2 2, 3, 1, 4, 5 3, 1 2, 1, 3, 4, 5 2, 1 1, 2, 3, 4, 5 -끝- 시간 복잡도 : O(n 제곱)