에러 메세지 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..
자바(Java)의 경우 컴파일(Compile)이라는 개념이 들어갑니다. 파이썬(Python)과 같은 언어는 컴파일 언어와 다르게 인터프리터 언어로 별도의 컴파일 과정이 없이 소스 코드를 한줄 한줄 읽어가면서 실행을 하게 되지만, 자바의 경우 컴퓨터가 읽기 전에 컴파일 과정이 우선 적용된 후 컴퓨터가 이해를 하는 방식입니다. 컴파일 언어의 장점 컴파일 언어의 장점은 대척점에 있는 인터프리터의 단점과 같습니다. 소스 코드라는 것은 사람이 읽기 쉬운 언어의 모음이며, 컴퓨터의 경우 한줄 한줄 해석을 하다보면 시간이 오래 걸리는 단점이 존재합니다. 컴파일은 바로 사람이 읽기 쉬운 소스 코드를 컴퓨터가 읽기 쉽게 변환해주는 개념입니다. 컴퓨터의 언어도 Language 이기 때문에 결국 통역이라는 과정이 필요하게 ..
최근의 이클립스의 경우 왜인지 모르겠지만, 상당히 불편한 기능이 추가되었습니다. 바로 블록 주석을 할 경우 코드가 와장창 무너지는 경우입니다. 위와 같은 평범한 코드가 있는데 여기서 7~9번째 라인을 블록 주석을 하기 위해 Ctrl + Shift + / 을 눌러 주석을 할 경우 아래와 같이 코드가 한줄로 치환됩니다. 블록 주석 단축키 문제 위와 같이 한줄로 치환이 되어 버리는데 만약 주석을 다시 풀 경우 원래 상태로 돌아온다면 불편하더라도 어느정도 사용이 가능하겠지만 위 코드에서 다시 Ctrl + Shift + \ 을 이용하여 블록 주석을 해제 할 경우 아래와 같이 변환됩니다. 실로 난감한 상황인데 이와 같이 되어버린 원인은 이클립스의 Default 설정이 바뀌었기 때문이며, 예전처럼 무너지지 않게 하기..
내 서버의 아이피(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..
오늘은 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..
이전 포스팅에서는 IF 조건문의 기본적인 부분(최하단 링크)만 다뤄봤습니다. 이번에는 IF 조건문을 다양하게 만들어보고, 성적을 넣었을 때 등급을 출력하는 프로그램을 만들어보도록 하겠습니다. 논리 연산자와 비교 연산자 논리 연산자와 비교 연산자는 IF 조건에 가장 많이 활용되는 연산자로 얼마나 이 연산자들을 이해하는가에 따라 많은 개발을 할 수가 있어집니다. 문제 예시 현재 나에게 오렌지가 5개가 있고, 사과가 4개가 있으며 멜론은 없다. 친구한테 오렌지 4개를 주고 사과를 2개를 주었다. 나한테 오렌지가 2개 이상이면, "오렌지가 2개 이상입니다"라는 문구를 출력한다. 사과가 2개 이상이고 멜론이 있으면, 사과와 멜론이 있습니다라고 문구를 출력하며, 사과가 없거나, 멜론이 없을 경우 각각 "사과가 없습..