에러 메세지 Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/SpringApplication has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 59.0 at java.base/java.lang.ClassLoader.defineClass1(Native Method) at java.base/java.lang.ClassLoader.defineClass(C..
Java에서 뭔가를 계산할 경우 NaN이 발생할 수 있습니다. 특히 공식이 복잡해지고 데이터의 예측이 힘들 경우 발생할 가능성이 높아지는데요. NaN은 왜 발생하고 어떻게 대처를 해야 하는지 알아보도록 하겠습니다. NaN의 뜻 우선 NaN이 무슨 뜻인지를 알아야 되겠죠. NaN은 영어로 Not a Number를 뜻합니다. 한마디로 숫자가 아니라서 숫자로 표현을 할 수 없는 상태를 말합니다. NaN 발생원인 NaN이 발생하는 경우는 값이 아닌 것을 계산할 때 발생하는데요. 0의 값을 0으로 나눴을 때 자주 발생되곤 합니다. NaN 발생 케이스 System.out.println(0.0f / 0.0f); System.out.println(Math.sqrt(-1.0f)); System.out.println(Ma..
자바(Java)에서는 스트링(String) 형태의 변수의 경우 값이 비었는지 체크하기 위해서 isEmpty라는 메소드를 지원합니다. 이 값은 언제 사용을 하면 좋은지 그리고 어떤 부분에 대해서 조심을 하는게 좋은지 알아보도록 하겠습니다. isEmpty isEmpty() 메소드는 문자열이 빈 값이면 true, 비어있지 않으면 false를 리턴하는 메소드입니다. 아래의 예제를 보면서 이해를 해보도록 하겠습니다. 값이 비어있을 경우 String test = ""; System.out.println(test.isEmpty()); // true 값이 있을 경우 String test = "111"; System.out.println(test.isEmpty()); // false 위와 같이 test라는 String ..
제곱과 루트(제곱근)을 구하는 방법은 수많은 언어(Language) 프로그램들이 내장 라이브러리들로 제공이 됩니다. 마찬가지로 자바 역시 제곱과 루트를 구하는 방법을 제공해주고 있습니다. Math 클래스 자바에서 수학과 관련된 메소드를 활용하기 위해서는 내장 라이브러리인 java.lang.Math 클래스를 활용하면 됩니다. Math 함수는 기본 지수, 로그, 제곱근 및 삼각 함수와 같은 기본 숫자 연산을 수행하기 위한 메소드들이 포함되어 있습니다. 제곱, Math.pow() 자바에서 제곱을 구하기 위해서는 Math 클래스의 pow 메소드를 사용하면 됩니다. pow() 사용법 pow(double a, double b) 첫번째 인수인 a 값을 b 만큼 곱하며 리턴값은 double 입니다. pow() 예시 p..
프로젝트를 하다보면, 소스를 다이렉트로 직접 컴파일(Compile)해야 하는 경우가 종종 있다. 예를 들어 소스를 옮기기 힘든 상황인데 리눅스나 유닉스와 같은 서버에서 vi 편집기 등을 활용하여 직접 프로그램을 수정한 상황에서 직접 컴파일을 한다든지, 아니면 간단한 프로그램을 짜서 뭔가를 알아야 한다든지 IDE(이클립스, IntelliJ)와 같은 프로그램을 쓰지 않고 직접해야 하는 상황이 올 수 있다. Javac Javac는 자바 코드를 컴파일 시켜주는 프로그램으로 커맨드에서 직접 컴파일을 할 수 있다. public class Test { public static void main(String[] args) { System.out.println("Hello World!!"); } } 위와 같은 샘플 클래..
자바(Java)의 경우 컴파일(Compile)이라는 개념이 들어갑니다. 파이썬(Python)과 같은 언어는 컴파일 언어와 다르게 인터프리터 언어로 별도의 컴파일 과정이 없이 소스 코드를 한줄 한줄 읽어가면서 실행을 하게 되지만, 자바의 경우 컴퓨터가 읽기 전에 컴파일 과정이 우선 적용된 후 컴퓨터가 이해를 하는 방식입니다. 컴파일 언어의 장점 컴파일 언어의 장점은 대척점에 있는 인터프리터의 단점과 같습니다. 소스 코드라는 것은 사람이 읽기 쉬운 언어의 모음이며, 컴퓨터의 경우 한줄 한줄 해석을 하다보면 시간이 오래 걸리는 단점이 존재합니다. 컴파일은 바로 사람이 읽기 쉬운 소스 코드를 컴퓨터가 읽기 쉽게 변환해주는 개념입니다. 컴퓨터의 언어도 Language 이기 때문에 결국 통역이라는 과정이 필요하게 ..
내 서버의 아이피(IP)를 몰라서 코딩을 하는 경우는 없겠지만, 간혹 IP를 기반으로 프로그램을 다르게 하는 경우가 있습니다. 이럴 때 사용하는 자바 클래스로 InetAddress가 있는데 이를 통해 내가 현재 사용하는 컴퓨터의 IP를 알 수 있거나, 다른 사이트의 IP를 확인할 수 있습니다. InetAddress InetAddress는 인터넷 프로토콜(Internet Protocol, IP) 주소를 나타냅니다. IP 주소는 UDP 및 TCP와 같은 프로토콜이 구죽되는 하위 수준 프로토콜인 IP에서 사용하는 32bit 또는 128bit의 부호 없는 숫자입니다. INetAddress의 인스턴스는 IP 주소와 가능한 해당 호스트 이름으로 구성됩니다.(호스트 이름으로 구성되었는지 또는 이미 역 호스트 이름 확..
for문은 Java 뿐만 아니라 다양한 언어에서 가장 많이 사용하는 상징적인 반복문입니다. 이번 포스팅에서는 for문의 사용 방법과 for문을 이용한 총합을 구하는 것을 만들어보고 이해해보겠습니다. for문 사용법 for (변수 초기화; 조건; 증감) { // 실행문 } for 문의 괄호() 사이에는 3가지의 식이 존재하는데 첫번째는 변수를 초기화 하고, 두번째는 참(True)이 되는 조건을 지정하며, 마지막으로 값을 증가 혹은 감소 시키는 공식을 넣습니다. 1~100까지의 합을 구하는 프로그램 public class Main{ public static void main(String[] args) { int sum = 0; for(int i = 1; i 1 홀수 -> 3 홀수 -> 5 홀수 -> 7 홀수..
자바의 Map형은 파이썬(Python)의 딕셔너리(Dictionary) 구조와 유사한 구조입니다. 복잡한 데이터를 저장하는 역할도 하지만, Key값과 Value형태로 이루어져서 데이터를 쉽게 찾아주는 역할도 수행합니다. 수많은 Map 형태의 구조중에 가장 많이 활용하는 것은 HashMap과 LinkedHashMap 정도가 될 수 있습니다. 물론 개발 업종에 따라 TreeMap이나 HashTable이 사용되기도 하지만, 일반적으로는 2가지가 가장 많이 활용이 됩니다. Map의 사용방법 map.put(키, 값);// 키와 값 저장 map.get(키);// 키를 기준으로 값을 가져온다 map.remove(키);// 키 값을 기준으로 값을 삭제한다 물론 위의 사용법보다 훨씬 많은 기능들이 있지만, 대표적으로 3..
에러 캡쳐 개발서버에서 문제가 없던 프로그램이 운영에서 배포하였을 시 이와 같은 문제가 발생하였다. url을 잘못쓴건지, id 패스워드가 다른건지 계속 찾아보고 있었는데 알고보니 운영서버의 DB의 버전이 8.x 대여서 구버전 드라이버가 연결이 안되는 문제였다. 기존 설정 Class.forName("com.mysql.jdbc.Driver") mysql mysql-connector-java 5.1.37 변경 설정 Class.forName("com.mysql.cj.jdbc.Driver") mysql mysql-connector-java 8.0.23
오늘은 List형에 대해서 알려드리도록 하겠습니다. 혹시 Python과 같이 자유로운 언어를 배우신 분들이라면, 자바의 List는 좀 어려울 수 있습니다. 파이썬과 다르게 좀 더 엄격하기 때문입니다. List는 구현된 객체가 아니라 interface로 되어 있어서 늘 List로 객체를 생성할 수 없습니다. interface가 무슨 소린가? 생각할 수 있는데 일단 interface는 껍데기와 같은 존재라고 생각하면 쉽습니다. 인터페이스는 중후반부 내용이기 때문에 여기서는 껍데기라는 정도로만 넘어가면 좋겠네요. List의 개념 List는 특정 타입형으로 이루어진 데이터를 연속으로 다룰 때 사용하는 타입입니다. 현재 여기서 글을 쓰는 것도 연속적인 단어들로 이루어져 있습니다. 즉 단어들만 데이터를 담고 싶을 ..
Switch 조건문 자바에서는 if 조건이외에도 Switch문을 사용하여 조건문을 만들 수 있습니다. 다만 if문보다 활용성이 떨어질 수 있는 것은 다양한 연산자를 사용하여 조건을 만드는 if와 달리, 오직 특정 값일 때에만 조건을 실행하는 제어문입니다. 그래서 switch문의 경우 개발하는데 평생 쓰지 않아도 전혀 코딩을 하는데 지장이 없지만, if문은 평생 사용하지 않으면 문제가 있는 것이죠. 그럼 switch 문은 언제 사용하며, 어떻게 써야 하는지 알아보도록 하겠습니다. switch/case 문법 switch(변수) { case 값1: // 실행문 break; case 값2: // 실행문 break; default: // 실행문 } Switch 문법은 if 조건보다 조금 더 복잡합니다. switc..