Java 11

파일을 복사하는 4가지 방법

파일 이동을 위해 파일을 복사하려고 보니 가장 기본적인 I/O방법인 inputStream, outputStream에서 아파치 라이브러리를 사용하는 것까지 여러 가지 방법이 존재했다. 지금 프로젝트에선 FileInputStream을 사용하고 있지만, 다른 방법도 정리해보았다. 1. FileInputStream, FileOutputStream 가장 흔하고 많이 쓰이는 방법으로, FileInputStream으로 읽고 FileOutputStream으로 쓰는 방법이다 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io...

Language/Java 2022.05.16

쓰레드(Thread)의 기본개념

프로그램과 프로세스 우리가 프로그램을 실행하려고 하면, 실행을 위해 운영체제에서 메모리 공간을 할당받아오게 되며, 그 공간에 프로그램이 올려져 실행되게 된다. 즉 프로세스는 실행중인 프로그램, 혹은 그 작업이라고 할 수 있다. 간단히 말해 프로그램은 저장장치에 저장되어있는 정적인 상태이고, 프로세스는 실행을 위해 메모리에 올라와있는 동적인 상태이다. 프로세스의 상태에는 5가지가 존재한다. 생성 상태(create status) : 프로세스가 메모리에 올라와 실행 준비를 완료한 상태 준비 상태(ready status) : 생성된 프로세스가 CPU를 얻을 때까지 기다리는 상태 실행 상태(running status, execute status) : 준비 상태에 있던 프로세스 중 하나가 CPU를 얻어 실제 작업을..

Language/Java 2022.05.10

이클립스 에러 - ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module

에러메시지 : ClassFormatError accessible: module java.base does not "opens java.lang" to unnamed module 나는 java11을 설치하고 Build Path에서도 계속 자바 11버전으로 연결해주었는데도 불구하고 , 해당 에러가 떳다. 당연히 run되지도 않았고.. 해결 : eclipse.ini를 확인하니 vm이 다음과 같이 되어있었다. 한마디로 java 16 버전이란 소리. 확인해보니 openjdk16이다 다운받고, 사용하고있는 java 11로 설정해주었다. 에러해결! 참고 : https://haenny.tistory.com/62 [Error] Springboot Gradle Task :compile.Java Error (자바 경로를 찾..

Tool/Eclipse 2021.09.30

이클립스 에러 - Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int)

가장 흔하게 발생하는 에러로, 빌드 문제라고 많이 뜨는데 나의 경우에는 롬복을 설치 한 후 적용이 되지 않아서였다 lombok은 설치 후에도 적용되는데 시간이 좀 걸린다고 한다. lombok이 설치되면 이렇게 Help-About Eclipse IDE를 들어가봤을때 끝에 Lombok이 뜬다 그런데 롬복 다운받아 설치했음에도 뜨지 않았다; 기다려봤지만 계속 그대로.. 롬복 다운받고 Specify location이 제대로 적용되지 않은 것이라고 판단, 이클립스에서 다시 다운받아주기로 했다. Help-Install New Software 에서 lombok을 다운받는다 next 해주다 finish 하면 끝 설치된 소프트웨어를 확인해보자 분명히 설치되어있다. 그런데 eclipse.ini를 보니 처음에 설치한 lom..

Tool/Eclipse 2021.09.29

이클립스 에러 - Could not fetch model of type 'BuildEnvironment' using connection to Gradle distribution

이클립스에서gradle project import시 Could not fetch model of type 'BuildEnvironment' using Gradle distribution 에러가 발생했다 원인 : java, gradle 다운 후 시스템 환경설정에서 path설정해주었음에도 불구하고, 경로를 잡지 못했다. 환경변수 설정만 마냥 믿고 다른 방법만 열심히 찾았는데, 좀 더 면밀히 살펴야겠다 해결 : import 시 직접 지정해주었다. 그리고 gradle distribution에서 gradle wrapper로 되어있었는데 specific gradle version로 선택하고 높은 버전으로 올렸다(6.8을 권한다고 나왔기때문..) 그리고 해결! 참고 : https://stackoverflow.com/..

Tool/Eclipse 2021.09.28

Is Java “pass-by-reference” or “pass-by-value”? | Stack Overflow 정리

본 내용은 Stack Overflow의 한국어 번역이 아니며, 개인적인 공부를 위해 Stack Overflow 질의를 정리한 내용입니다 질문 자바는 'pass-by-refence'인가요, 'pass-by-value'인가요? I always thought Java uses pass-by-reference. However, I've seen a couple of blog posts (for example, this blog) that claim that it isn't (the blog post says that Java uses pass-by-value). I don't think I understand the distinction they're making. What is the explanation? ..

Language/Java 2020.12.13

How do I compare strings in Java? | Stack Overflow 정리

본 내용은 Stack Overflow의 한국어 번역이 아니며, 개인적인 공부를 위해 Stack Overflow 질의를 정리한 내용입니다 질문 Java에서 문자열을 어떻게 비교해야 합니까? I've been using the == operator in my program to compare all my strings so far. However, I ran into a bug, changed one of them into .equals() instead, and it fixed the bug. Is == bad? When should it and should it not be used? What's the difference? 저는 문자열 비교를 위해 지금까지 ==를 사용해왔습니다. 그런데 버그가 났습니다..

Language/Java 2020.12.11

String.intern() 이란? 언제 사용하는가?

우리는 String 문자열 비교 시 흔히 equals()를 사용하지만, 메모리나 속도를 고려해 == 연산자를 사용하는 경우를 보게 됩니다. 이 때에 사용되는 메서드가 intern()인데요. intern() 은 무엇이고 어떻게 쓰일까요? 그전에 String pool에 대한 이해가 필요합니다. String pool 이란? Pool 하면 보통 수영장 풀, 풀장 등을 떠올리실 텐데요. 이처럼 String pool 하면 string이 존재하는 영역을 생각하시면 될 것 같습니다. 같은 String이지만 생성 방식에 따라 차이가 있어 문자열 비교 시 혼란을 주기도 하는데요. 다음 예제를 통해 설명해보겠습니다. String a = "apple"; String b = new String("apple"); String c..

Language/Java 2020.12.10

Object.equals()와 equals() 의 차이

equals()의 사용 public class Equals { public static void main(String[] args) { String a = null; String b = "aa"; System.out.println(a.equals(b)); // NullPointException 발생! } } 우리는 흔하게 문자열을 비교할 때 equals()를 사용합니다. 그러나 위의 예시처럼 a가 null일경우, null 에러가 발생합니다. 따라서 equals()를 사용할때는, 다음과 같이 null 예외처리를 해줘야 합니다 public class Equals { public static void main(String[] args) { String a = null; String b = "aa"; if(aa..

Language/Java 2020.12.09