Language/Java

Language/Java

논리 연산자 &&과 &, ||과 |의 차이

&&과 &, ||과 |의 결과는 같게 나오지만 JVM은 실행을 다르게 한다. &&일 경우에는 앞의 식이 거짓이면 뒤에있는 식은 실행하지 않는다. (한쪽만 거짓이어도 실행할 필요가 없기 때문에) &일 경우에는 앞의 식이 거짓이어도 뒤의 식이 실행된다. ||의 경우에는 앞의 식이 참일 경우에는 뒤의 식이 실행되지 않는다. |가 사용될 경우에는 앞의 식이 참일 경우라도 뒤의 식이 실행된다. 즉, 차이점은 앞의 식의 논리 연산 결과에 따라 뒤에 있는 식을 실행하느냐? 안하느냐?의 차이가 있다. 따라서 결과는 같게 나오지만, 뒤의 식에 수식 등이 들어갈 경우, 수식에 증가, 감소되는 식이 있으면 실행이 되고 안되고에 따라서 문제가 될 수도 있다. boolean 형 타입은 메모리를 얼마나 사용할까? 1byte(8b..

Language/Java

논리 연산자 ^

exclusive-or 또는 XOR 이라고 말한다. 2개의 식의 논리 값이 서로 다를 경우, 참이 된다. 아래의 식이 참이려면 한쪽은 참이고, 한쪽은 거짓이 나와야 한다. a > 10 ^ a < 20 예를 들어, a가 31이라는 값을 가질 경우, true & false가 되니 이때 결과는 참이 나온다. 인용 https://www.youtube.com/watch?v=ndRDxcOnXfw&list=PLHpaQi-LiUCx-vcbcnpU5Tzv2X99WCowN&index=6&ab_channel=%EB%B6%80%EB%B6%80%EA%B0%9C%EB%B0%9C%EB%8B%A8-%EC%A6%90%EA%B2%81%EA%B2%8C%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D%EB%..

Language/Java

변수와 리터럴

기본형 변수 기본형 변수(primitive type)은 값을 가진다. ex) int - 4byte, short-2byte, long-8byte 기본형 타입은 메모리를 확보하고 그 메모리에 값을 저장한다. 즉, int의 경우에는 메모리의 4byte 공간에 값이 할당된다. 참조형 변수 Book b = new Book();에서 Book 처럼 기본형이 아닌 타입은 모두 참조형(Reference Type)이라고 말한다. 기본형이 아닌 타입은 값을 가지지 않고, 값을 참조하게 된다. 리터럴 int i = 1; 에서 1을 정수 리터럴 1이라고 말한다. 즉, 리터럴이란 변수에 입력되는 값을 말한다. 변수의 초기화 클래스 안에 선언된 변수인 field는 초기화를 하지 않아도 사용이 가능하다. 예를 들어, boolean ..

Language/Java

자바 파일 동작원리

System.out.println("Hello") 의 동작원리 System.out은 System이 가지고 있는 out이라는 의미이다. out 필드라고 한다. 즉, System 클래스가 가지고 있는 out 필드는 PrintStream 타입이고, 이 PrintStream은 다양한 println, print 메서드를 가지고 있다. https://docs.oracle.com/javase/8/docs/api/java/lang/System.html System (Java Platform SE 8 ) Sets the system property indicated by the specified key. First, if a security manager exists, its SecurityManager.checkPer..

Language/Java

자바에서 파일 업로드 검증

private boolean isImage(MultipartFile file) throws IOException { boolean result = false; BufferedImage bufferedImage = ImageIO.read(file.getInputStream()); if (bufferedImage != null) { result = true; } return result; } private boolean isSupportedExtension(String ext) { return ext != null && ( ext.equals("png") || ext.equals("jpg") || ext.equals("jpeg") || ext.equals("pdf") ); }

Language/Java

자바에서 파일 다루기 (링크)

https://velog.io/@314_dev/Java-File-Path-%ED%81%B4%EB%9E%98%EC%8A%A4 Java 에서 파일 다루기 자바의 File, Path 클래스를 알아보자 velog.io

Language/Java

ThreadLocal

✏️ 개요 동시성 문제 여러 쓰레드가 동시에 같은 인스턴스의 필드 값을 변경하면서 발생하는 문제를 동시성 문제라고 한다. 스프링 빈처럼 싱글톤 객체의 필드를 변경하여 사용할 때, 이러한 동시성 문제를 조심해야 한다. 동시성 문제는 지역 변수에서는 발생하지 않는다. 지역 변수는 쓰레드마다 각기 다른 메모리 영역이 할당된다. 동시성 문제가 발생하는 곳은 같은 인스턴스의 필드, 또는 static 같은 공용필드에 접근할 때 발생한다. ThreadLocal 해당 쓰레드만 접근할 수 있는 특별한 저장소를 말한다. 즉, 각 쓰레드마다 별도의 내부 저장소를 제공한다. 자바는 언어차원에서 쓰레드 로컬을 지원하기 위한 java.lang.ThreadLocal 클래스를 지원한다. 📌 사용법 값 저장: ThreadLocal.s..

Language/Java

Heap과 Priority Queue

✏️ Heap 개요 heap은 최솟값 또는 최댓값을 빠르게 찾아내기 위해 완전이진트리 형태로 만들어진 자료구조이다. 이진트리(binary tree)란 모든 노드의 최대 차수를 2로 제한한 것이다. 완전이진트리(complete binary tree)란 마지막 레벨을 제외한 모든 노드가 채워져있으면서 모든 노드가 왼쪽부터 채워져있어야 한다. 마지막 레벨을 제외한 모든 노드가 채워져있어야 한다. 모든 노드들은 왼쪽부터 채워져있어야 한다. 포화이진트리(perfect binary tree)란 마지막 레벨을 제외한 모든 노드는 두 개의 자식노드를 갖는다라는 조건을 가진다. 🔎 Heap 특징 Heap의 핵심 특징은 부모 노드가 항상 자식 노드보다 우선순위가 높다는 것이다. 즉, 모든 요소들을 고려하여 우선순위를 정할..

Language/Java

메모리 구조 및 특징

✏️ 개요 자바 프로그램이 실행되면, JVM은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리한다. JVM의 메모리 공간은 크게 정적 영역(Static or Method), 스택 영역, 힙 영역으로 구분되고, 데이터 타입(자료형)에 따라 각 영역에 나눠서 할당되게 된다. 컴퓨터의 메모리는 사용할 수 있는 공간이 한정되어 있다. 따라서 메모리 설계가 잘되어있는 프로그램에 비해 그렇지 않은 프로그램은 속도 저하 현상이나 튕김 등의 현상이 일어날 확률이 크다. 그래서 자바 애플리케이션에서 메모리를 효율적으로 사용하기 위한 메모리 구조와 특징에 대한 이해가 필요한 것이다. 🔎 JVM 구동 방식 자바 컴파일러에 의해 자바 파일이 클래스 파일(바이트 코드)로 컴파일된다. 클래스 ..

Language/Java

Comparable과 Comparator

✏️ 개요 Comparator는 두 매개변수 객체를 비교하는 것이고, Comparable은 자기 자신과 매개변수 객체를 비교하는 것이다. Comparable: 기본 정렬기준을 구현하는데 사용 Comparator: 기본 정렬 기준외에 다른 기준으로 정렬하고자 할 때 사용 📌 정리 결론은 둘다 정렬의 기준을 위해 사용되지만 Comparable은 자기 자신과 파라미터로 들어오는 객체를 비교하는 것 Comparator는 자기 자신의 상태가 어떻던 상관없이 파라미터로 들어오는 두 객체를 비교하는 것 즉, 비교한다는 것은 같지만 비교 대상이 다르다. 인용 https://dding9code.tistory.com/68 Comparator 와 Comparable - JAVA 처음 이 개념을 접했을 때는 뭐지.. 인터페이..

kimjingyu
'Language/Java' 카테고리의 글 목록 (4 Page)