본문 바로가기



프로그래밍/JAVA

[JAVA] java.io.UncheckedIOException: java.nio.charset.MalformedInputException: 에러 Exception in thread "main" java.io.UncheckedIOException: java.nio.charset.MalformedInputException: Input length = 1 출력되는 에러메시지 자체가 throws IOException처리를 해놔서인지 Unknown Source라고만 나와서 해당 파일을 찾지 못하는것으로 생각하고 파일과 디렉토리를 체크 하는 다음소스를 넣어보았으나 모두 정상적으로 출력되었다. String org_path = System.getProperty("user.dir"); System.out.println("Working Directory = " + org_path); 해당에러는 stream 중 Files.lines(path,Charset.defau.. 더보기
[JAVA] No exception of type NumberFormatException can be thrown; an exception type must be a subclass of Throwable 강좌를 수강하다보니 예외처리할때 catch 쪽에 분명 오류코드를 넣었는데 실행되지 않고, 구문 에러가 계속 나오는경우로 해당 코드실행시 나오는 에러문구는 "No exception of type NumberFormatException can be thrown; an exception type must be a subclass of Throwable" 였는데, 내용상으로는 해당 에러는 처리 할 수 없다는 것이였다. 뒷줄에 있는 내용은 서브클래스에 처리가능한 타입이어야 한다는 내용인데 이말인 즉슨, 자바 클래스에 해당 에러처리하는 클래스가 없다는 이야기다. 곰곰이 생각해보면 이상하지 않은가? 자바에서 나오는 에러메시지인데 자바 기본 클래스에 없다니... 그래서 고심끝에 알아낸것은 파일이름이 해당 에러와 같은 .. 더보기
[JAVA] 자바 버전의 선택 가이드 처음 JDK를 설치할때, 초보자들이 흔히 하는 생각중하나가 최신버전이 좋지 않을까? 일것이다. 이는 어느정도 당연한 연역적 추론이지만, 현실은 그렇지 않다. 실제 사용되는 자바 JDK상당수(64%)가 8SE(1.8)인 상황이다. 11버전은 25%정도로 보인다. 이와함께 8버전의 경우 일반 지원은 종료되었지만 유료지원이 2030년까지로 연장된 상태이고 11버전은 예정상으로는 2026년까지 지원된다. 유료 지원을 포함하면 8의 수명이 더 긴것이라고 할 수 있다. 그리고 32비트 버전은 8 버전까지만 정식지원하기 때문에 이점도 고려해야한다. 가끔 스터디 질문을 받다보면, 최신버전을 무조건설치하고 질문하는 경우가 있는데, 전부 삭제하고 1.8이나 11버전을 설치하는것을 추천하며, 특히 한국에서는 1.8 버전을 .. 더보기
[JAVA] Byte code를 통한 메모리 분석 자바강좌를 2회차로 다른분 것을 듣고 있는데, heap과 stack에 관한 내용을 설명해 주시는데 개념적으로 이해가 어려워서 바이트코드로 갈음한 부분을 분석해 보기로 했다. package java_memory_study; public class object_create_and_vars { public static void main(String[] args) { object_create_and_vars var1 = new object_create_and_vars (); object_create_and_vars var2 = new object_create_and_vars (); System.out.println("Heap Memory Address"); System.out.println(var1); Syst.. 더보기
[JAVA] for 문과 While의 성능차이 코드를 작성하다보니 for문과 while문의 성능차이가 궁금해져서 검색해봤는데. 아주 큰 프로젝트가 아니라면 그렇게 차이 있지는 않다는 답변이 많았고, 언어에 따라 컴파일러 의존적이라는 이야기가 많았으며, 특히 최적화 잘된 컴파일러라면 동일한 내용을 가지고 있다고 했다. C나 C++이라면, 디어셈블 해야겠지만 자바는 처음부터 내장된 javap 라는 프로그램을 이용해서 바이트 코드를 얻어 낼 수 있다. 먼저 자바에서 제공하는 기능을 이용해서 측정해보았는데 그 차이가 아주 근소했다. 실행시마다 매번 다른 결과를 보여주었다. 코드가 복잡하면 이해하기 어려우므로 간단한 코드를 새로 작성해서 바이트코드를 열어보기로 했다. 일단 이클립스에서 1부터 10까지 더하는 코드를 각각 for문과 while 문으로 작성해놓았.. 더보기
[JAVA] for 구문에서 i cannot be resolved to a variable 에러 for (int q=2 ; q 더보기
int (integer) 와 float 자료형은 어떻게 다른가? JAVA에서... int 타입과 float타입의 설명을 보면, 실수타입인 float가 정수타입인 int에 비해 더 큰 수를 저장할 수 있다고 설명되어있다. 언뜻보고 지나가면 그렇지 하고 지나갈 수 있는데. 한글의 어려움이 바로 이런 부분인듯 싶었다. 분명히 float가 int자료형보다 큰 범위 값을 저장할 수 있다고 하는데 왜 int형을 float형으로 변환하면 근사치(정밀도가 떨어짐)이 발생하는지 의문이 생겼다. 자료를 아무리 봐도 설명을 봐도 이해가 갈듯말듯 한상태에서 좀더 들어가 보았다. 일단 int 타입 과 float타입은 같은 4바이트를 쓰지만 float 그 4바이트를 부호 2비트 + 지수 8비트 + 가수 23비트로 쓰고 있다. 그러니까 가수23비트부분이 실제로 표현할 수 있는 부분이고 앞에 10비트는 아예 다른.. 더보기
[JAVA] Comparable Vs Comparator intreface Comparable { int compareTo (T o) } Comparable intreface : java.lang안에 존재함. Boolean 제외한 String, Date, File class가 오름차순 정렬됨. 지원되지않는 class의 instance를 TreeSet에 넣으면, exception error가 발생함 java.lang에 존재하는것이므로 따로 import 필요없음 interface Comparator { int compare (T o1, T o2); boolean equals (Object obj); } Comparator interface : java.util에 존재함. import java.util.Comparator; java.util을 임포트 해야 사용할 수.. 더보기