Octoping의 블로그
클래스 내의 모든 변수 이름, 값 가져오기
언어/Java 2022. 6. 18. 15:50

java reflect를 사용하면 클래스에서 멤버변수의 이름들을 얻어오거나, 메소드를 실행하는 등의 다양한 작업을 할 수 있다. 멤버변수들의 정보가 담긴 Field 객체들의 배열을 얻어오는 getDeclaredFields() 메소드와 메소드를 동적으로 실행할 수 있게 해주는 invoke() 메소드를 이용해서 특정 클래스 객체 내의 모든 멤버변수 이름과 값을 가져올 수 있다. 알고리즘 요약 1. getDeclaredFields() 를 통해 멤버변수들의 Field 배열을 얻음 2. getName() 을 통해 각 멤버변수 Field 객체에서 변수명을 얻음 3. ②에서 얻은 변수명을 통해 getter 함수 명을 만든 후 invoke()를 이용하여 getter 함수 실행 후 결과값 얻음 // ※ import ja..

언박싱 메소드
언어/Java 2022. 6. 18. 15:48

// Boolean to boolean Boolean b = true; boolean bb = b.booleanValue(); // Integer to int Integer i = 10; int ii = i.intValue(); // Character to char Character c = 'a'; char cc = c.charValue(); // Long to long Long l = 2L; long ll = l.longValue(); // Double to double Double d = 5.0; double dd = d.doubleValue(); 이를 이용해서 Integer to double과 같은 경우는 Integer를 언박싱한 후 double로 형변환하면 된다. Integer i = 10; do..

Divided by Zero 에러 double 형
언어/Java 2022. 6. 18. 15:47

java.lang.ArithmeticException: / by zero 이 에러는 정수를 0으로 나눴을 때 발생하는 오류이다. ​ 하지만 흥미로운 점이 있다. int a = 10; System.out.println(a / 0); 이를 실행할 경우 JVM은 위의 "/ by zero" 예외를 반환하지만 double a = 10; System.out.println(a / 0); int a = 10; System.out.println(a / 0.0); 이 두 경우는 JVM이 Infinity를 반환하게 된다. 따라서 try-catch 문으로 캐치할 수 없다! ​ 이렇게 int 형에서는 예외를 발생하던 코드가 double형 (float 형에서도 동일함)에서는 Inifinity를 반환하는 이유는 Java가 부동 소..

readline으로 파일 끝까지 읽기
언어/Python 2022. 6. 18. 15:46

f = open(path, 'r') while(True): txt = f.readline() if not txt: break print(txt)

숫자 배열에서 두 번째로 큰 값 찾기
개발 일반/알고리즘 2022. 6. 18. 15:37

숫자배열에서 두 번째로 큰 값을 찾는 몇 가지 방법을 소개한다. 방법 1 배열을 내림차순으로 정렬한 후, 두 번째의 값을 반환한다. 이 방법은 무척 코드로 쓰기 간단하지만, O(nlogn) 정도의 시간복잡도가 소모된다는 단점이 있다. Arrays.sort(arr); int second = arr[1]; 방법 2 for문을 사용하여 순회하며 두 번째로 큰 값을 찾는 방법도 있다. int max = -Integer.MAX_VALUE; int second = -Integer.MAX_VALUE; for(int i : arr) { if(i > max) { second = max; max = i; } else if(i > second) { second = i; } } 응용으로 세 번째로 큰 값도 쉽게 구할 수 있다..