Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java

  1. Java 'Could not find or load main class' 오류 원인과 해결 방법 총정리

    Java 프로그램을 작성한 후에는 javac 명령어로 컴파일해야 하며, 이 과정에서 컴파일 타임 오류가 있다면 화면에 표시됩니다.오류를 모두 수정하고 컴파일에 성공하면 현재 폴더에 클래스 이름과 동일한 이름으로 .class 확장자를 가진 실행 가능한 파일이 생성됩니다.이후 java 명령어를 사용해 프로그램을 실행할 수 있습니다.java 클래스_이름그런데 실행 시점에 JVM이 지정된 이름의 .class 파일을 찾지 못하면 다음과 같은 런타임 오류가 발생합니다.D:\sample>java Example Error: Could not

  2. Java RandomAccessFile로 .txt 파일 읽는 방법 (readLine 활용 예제)

    파일 입출력의 기본 원리일반적인 파일 입출력에서는 데이터를 파일의 시작 지점부터 순차적으로만 읽거나 쓸 수 있으며, 임의의 위치에 곧바로 접근하는 것은 불가능합니다.하지만 Java의 java.io.RandomAccessFile 클래스를 사용하면 파일 내 어느 위치든 자유롭게 이동하면서 데이터를 읽고 쓸 수 있습니다.파일 포인터(File Pointer)란?RandomAccessFile은 마치 대용량 바이트 배열처럼 동작하며, 현재 위치를 가리키는 인덱스 역할의 파일 포인터를 내부적으로 관리합니다. 이 포인터의 위치는 getFilePo

  3. 자바에서 클래스를 abstract와 final로 동시에 선언할 수 없는 이유

    자바에서는 하나의 클래스에 abstract와 final 수정자를 동시에 붙일 수 없습니다. 두 키워드는 서로 정반대의 목적을 가지고 있어 함께 사용하면 컴파일 오류가 발생하기 때문입니다. 각각의 개념과 함께 자세히 살펴보겠습니다.추상 클래스(Abstract Class)란?추상 클래스는 0개 이상의 추상 메서드를 포함하는 클래스입니다. 클래스 안에 추상 메서드가 하나라도 존재한다면, 해당 클래스는 반드시 abstract로 선언해야 합니다.추상 클래스 내부에는 일반 메서드(구현된 메서드)도 포함될 수 있습니다. 다만 이 메서드를 실제로

  4. Java JVM이 할당하는 메모리 영역은 몇 가지일까? 5대 메모리 영역 완벽 정리

    JVM(Java Virtual Machine)은 자바 바이트코드(.class 파일)를 입력받아 이를 한 줄씩 해석하고, 운영체제와 하드웨어가 이해할 수 있는 기계어로 변환해주는 프로그램입니다. 개발자가 작성한 자바 코드가 실제로 실행되기 위해서는 반드시 JVM을 거쳐야 하며, 이 과정에서 메모리 관리 역시 JVM이 담당합니다.클래스 로더(Class Loader)의 역할JVM 내부에는 클래스 로더(Class Loader)라는 모듈이 포함되어 있습니다. 클래스 로더는 프로그램 실행에 필요한 클래스를 불러오고, 연결하고, 초기화하는 역할

  5. Java에서 명령 프롬프트로 JAR 파일 생성하고 실행하는 방법

    자바는 클래스 파일을 하나로 묶어 배포할 수 있도록 JAR(Java Archive)라는 파일 형식을 제공합니다. 일반적으로 JAR 파일에는 애플리케이션이나 라이브러리 실행에 필요한 .class 파일, 이미지, 텍스트 파일, 각종 라이브러리가 포함됩니다. 이 파일 형식은 자바에서 애플리케이션 소프트웨어와 라이브러리를 배포하는 표준 방식으로 사용되며, 자바가 기본으로 제공하는 모든 표준 라이브러리 역시 JAR 형식으로 배포됩니다. JAR 형식의 라이브러리를 애플리케이션에서 사용하려면 해당 JAR 파일을 프로젝트의 현재 폴더(또는 li

  6. 자바(Java) Enum은 클래스를 상속할 수 있을까? 열거형의 상속 규칙 완벽 정리

    자바(Java)에서 열거형(Enum)은 고정된 상수 값들의 집합을 저장하는 특수한 데이터 타입입니다. 예를 들어 요일, 월, 계절처럼 변하지 않는 값을 그룹으로 관리할 때 유용하게 사용됩니다.열거형은 enum 키워드 뒤에 이름을 붙여 다음과 같이 정의합니다.enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }배열과 마찬가지로, 열거형에 포함된 요소(상수)들은 0부터 시작하는 숫자로 식별됩니다. 위 예제에서는 각 요일이 아래 그림과 같이 인덱스

  7. Java Jackson에서 @JsonFormat 어노테이션으로 여러 날짜 형식 매핑하는 방법

    Jackson은 Java 기반 라이브러리로, Java 객체를 JSON으로 변환하거나 JSON을 Java 객체로 변환할 때 유용하게 사용됩니다. Jackson 라이브러리에서는 @JsonFormat 어노테이션을 사용하여 여러 가지 날짜 형식을 매핑할 수 있습니다. 이 어노테이션은 속성 값이 직렬화되는 방식의 세부 사항을 설정하기 위한 범용 어노테이션입니다.@JsonFormat의 주요 필드@JsonFormat에는 세 가지 중요한 필드가 있습니다.shape: 직렬화에 사용할 구조를 정의합니다. (JsonFormat.Shape.NUMBER,

  8. Java 정적(static) 메서드와 정적 블록에 적용되는 제한 사항 총정리

    static 메서드와 static 블록이란?static 메서드는 클래스에 소속되며, 클래스가 메모리에 로드될 때 함께 올라갑니다. 따라서 객체를 생성하지 않고도 클래스 이름만으로 호출할 수 있습니다.반면 static 블록은 static 키워드로 선언된 코드 블록을 의미합니다. 주로 static 멤버 변수를 초기화하는 용도로 사용되며, JVM은 클래스 로딩 시점에 main 메서드보다 먼저 static 블록을 실행합니다.예제 코드public class Sample { static int num = 50; static {

  9. Java에서 EOFException이 발생하는 원인과 처리 방법 완벽 정리

    파일의 내용을 읽는 도중 파일의 끝(End Of File)에 도달하면 특정 상황에서 EOFException이 발생합니다.특히 이 예외는 InputStream 계열의 객체를 사용해 데이터를 읽을 때 자주 발생합니다. 반면 다른 클래스에서는 파일 끝에 도달했을 때 예외 대신 특정 값을 반환하여 파일의 끝을 알려주는 방식을 사용합니다.EOFException이 발생하는 경우DataInputStream 클래스를 예로 들어 보겠습니다. 이 클래스는 readBoolean(), readByte(), readChar() 등 다양한 메서드를 제공하여

  10. 자바(Java) '기호를 찾을 수 없음(cannot find symbol)' 오류의 원인과 해결 방법

    자바 프로그램에서 외부 클래스나 인터페이스(직접 작성한 클래스 또는 JDK에 내장된 클래스)를 사용하려면 import 키워드를 통해 해당 클래스를 현재 프로그램으로 가져와야 합니다. 기호를 찾을 수 없음 오류가 발생하는 원인 클래스를 가져올(import) 때 아래와 같은 문제가 있으면 컴파일러는 "cannot find symbol"(기호를 찾을 수 없음) 오류를 발생시킵니다. 가져오려는 클래스/인터페이스의 경로가 JVM에서 인식되지 않는 경우 import 문에 명시한 클래스 이름이 정확하지 않은 경우 (패키지명

  11. Java URL 연결에서 데이터 읽기·쓰기 핵심 단계 완벽 정리

    java.net 패키지의 URL 클래스는 월드 와이드 웹(WWW)상의 리소스(파일, 디렉터리 또는 참조)를 가리키는 데 사용되는 URI(Uniform Resource Locator)를 표현합니다.이 클래스는 다양한 생성자를 제공하며, 그중 하나는 문자열(String) 매개변수를 받아 URL 객체를 생성합니다. 또한 openStream() 메서드를 사용하면 현재 객체가 나타내는 URL에 대한 연결을 열고, 해당 URL에서 데이터를 읽어올 수 있는 InputStream 객체를 반환받을 수 있습니다.웹 페이지에서 데이터 읽기 단계URL

  12. Java RMI(원격 메소드 호출)로 원격 메소드를 통해 데이터를 주고받는 방법

    RMI는 원격 메소드 호출(Remote Method Invocation)의 약자입니다. 한 시스템(JVM)에 존재하는 객체가 다른 JVM에서 실행 중인 객체에 접근하거나 그 메소드를 호출할 수 있게 해주는 메커니즘입니다.RMI는 분산 애플리케이션을 구축하는 데 사용되며, Java 프로그램 간의 원격 통신을 제공합니다. 관련 기능은 java.rmi 패키지에 포함되어 있습니다.RMI 기반 Java 애플리케이션을 작성하려면 아래 단계를 순서대로 따라야 합니다.1단계 - 원격 인터페이스 정의하기원격 인터페이스는 특정 원격 객체가 제공하는

  13. Java에서 ArrayList를 읽기 전용으로 만드는 방법

    Java에서 ArrayList를 읽기 전용(read-only)으로 만들려면 java.util.Collections 클래스의 unmodifiableList() 메서드를 사용하면 됩니다. 이 메서드는 List 인터페이스를 구현한 객체(ArrayList 등)를 매개변수로 받아, 해당 리스트의 수정 불가능한(unmodifiable) 뷰를 반환합니다. 반환된 리스트에는 읽기 전용으로만 접근할 수 있으므로, 중요한 데이터를 의도치 않은 변경으로부터 안전하게 보호할 수 있습니다. unmodifiableList() 메서드란? Collections

  14. Java에서 Console 클래스로 사용자 입력을 읽는 방법 완벽 가이드

    Console 클래스란?Java의 Console 클래스는 콘솔(키보드/화면) 장치로부터 데이터를 읽고 쓰는 데 사용되는 클래스입니다. 이 클래스는 키보드로부터 한 줄의 입력을 읽어들이는 readLine() 메서드를 제공하며, System.console() 메서드를 호출하여 Console 객체를 얻을 수 있습니다.참고 − IDE와 같은 비대화형(non-interactive) 환경에서 이 프로그램을 실행하면 정상적으로 동작하지 않습니다. Console 클래스는 명령 프롬프트나 터미널과 같은 대화형 환경에서만 사용할 수 있기

  15. Java ArrayList·LinkedList에서 요소 삭제하기: remove() 메서드 완벽 정리

    ArrayList와 LinkedList 클래스는 java.util 패키지의 List 인터페이스를 구현하는 대표적인 컬렉션입니다. 이 인터페이스는 특정 요소를 삭제할 수 있도록 아래와 같이 두 가지 형태의 remove() 메서드를 제공합니다. E remove(int index) boolean remove(Object o) 이 메서드들 중 하나를 활용하면 Java에서 List나 LinkedList에 담긴 원하는 요소를 간편하게 삭제할 수 있습니다. 1. remove(int index) – 인덱스로 요소 삭제하기 E remove(in

  16. Java에서 LinkedList를 배열(Array)로 변환하는 방법 총정리

    LinkedList를 배열로 변환하는 방법 LinkedList 클래스의 toArray() 메서드는 현재 LinkedList 객체를 Object 타입의 배열로 변환하여 반환합니다. 이 배열에는 리스트에 담긴 모든 요소가 첫 번째 요소부터 마지막 요소까지 원래 순서 그대로 포함됩니다. 즉, toArray()는 배열 기반 API와 컬렉션 기반 API 사이를 연결하는 다리 역할을 하는 메서드입니다. 따라서 LinkedList를 배열로 변환하려면 다음과 같은 단계를 거치면 됩니다. LinkedList 클래스를 인스턴스화합니다. add()

  17. Java에서 문자열의 알파벳이 아닌 모든 문자 제거하는 방법

    Java 프로그래밍을 하다 보면 문자열에 포함된 숫자, 특수문자, 공백 등 알파벳이 아닌 문자들을 제거하고 순수한 영문자만 남겨야 하는 경우가 종종 있습니다. 이 글에서는 split() 메서드와 정규 표현식을 활용하여 이를 손쉽게 처리하는 방법을 예제와 함께 소개합니다. split() 메서드란? String 클래스의 split() 메서드는 구분자(delimiter) 역할을 하는 문자열 값을 인수로 받아, 해당 구분자를 기준으로 문자열을 잘라 토큰(단어) 배열로 반환합니다. 예를 들어 공백( )을 구분자로 전달하여 문자열을 분리하면,

  18. 자바(Java)에서 배열(Array)을 ArrayList로 변환하는 3가지 방법

    자바 개발을 하다 보면 정적인 배열(Array)을 동적으로 요소를 추가·삭제할 수 있는 ArrayList로 변환해야 하는 상황이 자주 발생합니다. 이 글에서는 대표적인 세 가지 변환 방법과 각각의 예제 코드, 그리고 어떤 상황에서 어떤 방법을 선택하는 것이 좋은지까지 살펴보겠습니다. 1. 배열의 각 요소를 하나씩 추가하기 (add() 메서드) ArrayList 클래스가 제공하는 add() 메서드는 인자로 전달된 요소를 리스트 끝에 추가합니다. 이 메서드와 반복문을 조합하면 배열을 ArrayList로 손쉽게 변환할 수 있습니다.

  19. Java에서 컬렉션 요소를 조회하는 3가지 방법 완벽 정리

    Java에서는 컬렉션(Collection) 객체에 저장된 요소들을 세 가지 방식으로 조회할 수 있습니다. 각 방법의 특징과 사용 예제를 살펴보겠습니다.1. for-each 루프(향상된 for문) 사용for-each 루프(향상된 for 문)를 사용하면 컬렉션 객체 전체를 순서대로 간단하게 순회할 수 있습니다. 인덱스 관리가 필요 없어 코드가 간결하고 가독성이 뛰어나며, 단순히 모든 요소를 읽을 때 가장 널리 사용되는 방식입니다.예제 코드import java.util.ArrayList; public class RetrievingData

  20. 자바(Java)에서 문자열을 알파벳 순으로 정렬하는 2가지 방법

    자바에서 문자열을 알파벳 순으로 정렬하는 것은 문자열 처리에서 자주 활용되는 기본적인 기술입니다. 이 글에서는 toCharArray() 메서드와 Arrays.sort()를 조합하는 방법과, 정렬 알고리즘을 직접 구현하는 방법, 총 두 가지 방식을 예제 코드와 함께 살펴봅니다. 1. toCharArray() 메서드 활용하기 toCharArray() 메서드는 문자열(String)을 문자 배열(char 배열)로 변환하여 반환합니다. 이 메서드를 사용해 문자열을 알파벳 순으로 정렬하려면 다음 단계를 따르세요. 정렬할 문자열을 준비합니다

Total 1926 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:32/97  20-컴퓨터/Page Goto:1 26 27 28 29 30 31 32 33 34 35 36 37 38