728x90 [JAVA]/JAVA 기본45 자바 프로그램은 어떻게 실행되는걸까?(+ 코틀린) 💡 자바 프로그램이 실행되는 전체 흐름과, 실행 중일 때 JVM이 어떻게 메모리를 다루는지를 간단하게 정리해보려고 합니다. 1. 개발자의 코드 작성과 실행우리가 IDE를 통해 작성한 코드 파일이 .java 확장자로 저장됩니다. 2. .java 파일에서 .class 파일로 컴파일우리가 실행할 자바 코드는 모두 JVM 위에서 동작합니다.JVM이 읽고 실행할 수 있으려면 JVM이 이해할 수 있는 바이트코드로 변환이 필요합니다.따라서 우리가 작성한 자바 파일(.java)은 실행 전에 반드시 컴파일 과정을 거칩니다.JDK에 포함된 javac라는 컴파일러가 .java 파일을 읽고, 바이트코드(Bytecode)로 변환해 .class 파일을 만들어줍니다.대부분의 IDE(IntelliJ, Eclipse 등)는 우리가 .. 2025. 5. 1. 자바에서 중복 요소를 남김없이 모두 제거하는 방법 💡 자바에서 리스트의 중복 요소를 제거하는 대표적인 방법에는 두 가지가 있다. 1. Set을 이용한 중복 제거 List list = new ArrayList(Arrays.asList("A", "B", "A", "C", "B")); Set setWithoutDuplicates = new LinkedHashSet(list); List listWithoutDuplicates = new ArrayList(setWithoutDuplicates); System.out.println(listWithoutDuplicates); // 출력: [A, B, C] Set은 자바 컬렉션 프레임워크의 인터페이스 중 하나로 중복된 요소를 허용하지 않고 순서를 보장하지 않는 자료구조이다. 중복을 허용하지 않기 때문에 동일한 요소가 .. 2024. 3. 21. 자바의 Object 클래스와 equals(), hashCode() 메서드에 대해 알아보자 Object 클래스 자바에서 모든 클래스가 공통으로 가지는 상위 클래스이다. 다르게 말하면 자바의 모든 클래스는 Java.lang.Object 클래스의 하위 클래스이다. 객체를 표현하는 데 필요한 메서드를 제공한다. 클래스가 명시적으로 상위 클래스를 상속하지 않을 경우 컴파일러가 자동으로 Object 클래스를 상속하게 된다. 따라서, 하나의 클래스가 다른 클래스를 상속받는다고 하더라도 올라가다 보면 그 맨 위는 Object 클래스인 것이다. Object Class의 메서드 메서드 명 역할 clone() 객체를 복제하여 새로운 인스턴스를 생성 equals(Object obj) 해당 객체와 매개변수로 전달된 객체를 비교하여 동일한지 여부를 반환 hashCode() 해당 객체의 해시코드 값을 반환 toStri.. 2023. 8. 17. 자바에서 대용량 엑셀 데이터를 읽어들이는 ExcelParser를 만들어보자. https://suzuworld.tistory.com/301 자바 프로젝트에서 엑셀 데이터를 읽어들이는 방법(Apache POI Workbook , Sax Parsing) 💡 엑셀 데이터를 자바 프로젝트에 업로드하는 방법을 정리한다. 나는 2 가지 방법을 사용하였고 이를 간단하게 정리하겠다. Apache POI Apache POI는 아파치 소프트웨어 재단에서 만든 라이브러리로 suzuworld.tistory.com 지난 글에서 엑셀 데이터를 자바 프로젝트에 불러와 다루는 방법에 대해 간단히 살펴보았다. 당시에는 한 개의 엑셀 데이터를 csv 파일로 변환하는 작업만 하면 됐기 때문에 SAX 방식에 대해 제대로 살펴보지 않았는데 이번에 회사의 신규 프로젝트에서 엑셀 데이터를 파싱 할 일이 또 생겨 관련 내용.. 2023. 8. 11. 정적 팩토리 메서드의 특징과 사용법을 예제로 이해하기 정적 팩토리 메서드(Static Factory Method) 개발자가 직접 구성한 Static Method를 사용하여 생성자를 호출하고, 그 생성자로 객체를 생성하는 디자인 패턴이다. 백문이 불여일타이니 직접 상황을 만들어보고 코드를 짜보자. 클라이언트로부터 요구사항을 전달받았다. Member에 대한 정보를 받아 DB에 저장하는 간단한 프로젝트를 만들라는 것이다. 아주 간단해 보이니 바로 만들어보자. MemeberController @RequestMapping @RestController public class MemberController { private final MemberService memberService; public MemberController(MemberService memberSer.. 2023. 6. 20. Comparable과 Comparator.comparing() 간단 정리 Comparable 인터페이스 객체의 순서를 정의하는 데 사용한다. 클래스의 개체를 고유한 속성에 따라 비교하여 정렬할 수 있다. java.lang 패키지에 정의되어 있으며 compareTo()라는 단일 메서드를 포함한다. Comparable을 구현하면 Arrays.sort() 또는 Collections.sort()와 같이 Java에서 제공하는 정렬 알고리즘을 사용하여 해당 클래스의 객체를 쉽게 정렬할 수 있다. 자기 자신과 매개변수 객체를 비교한다. 사용 예시 public class Person implements Comparable { private String name; private int age; // Constructor and other methods @Override public int c.. 2023. 6. 14. NPE와 Optional에 대해 간단히 알아보기 NullPointerException(NPE) 자바로 개발할 때 가장 많이 접하게 되는 런타임 예외이다. null인 개체에 액세스 하거나 작업을 수행하려고 할 때 발생한다. 다른 말로 유효하지 않은 인스턴스나 메모리 위치를 참조하여 발생하는 에러이다. NPE가 터지는 예 일반적으로 초기화되지 않은 변수를 사용하려고 시도하는 경우 객체를 사용하기 전에 null 값을 제대로 확인하지 않은 경우 객체 참조를 잘못 처리하는 경우 정리 위의 예와 같이 프로그램에 논리적 결함이 있을 때 개발자에게 알려주는 역할을 한다. NPE가 발생하지 않게 코드에서 적절한 null 검사 및 에러 처리가 가능하다. 그중 하나가 이 글에서 알아볼 Optional이다. Optional Java8에 추가된 기능으로 null이 올 수 있.. 2023. 6. 13. BindingResult에 대해 간단히 알아보기 BindingResult 클라이언트로부터 전달받은 사용자의 입력 데이터에 대한 유효성 검사를 용이하게 하기 위해 Spring에서 제공하는 기능이다. 검증 오류가 발생하면 그 오류 내용을 보관하는 역할을 하는 객체이다. 입력 데이터의 유효성 검사에 실패하면 ConstraintViolationException이 발생되고 이때 에러 정보를 BindingResult에 저장하게 된다. BindingResult 의 사용 예시 @PostMapping("/register") public String registerUser(@ModelAttribute("user") @Valid User user, BindingResult bindingResult) { if (bindingResult.hasErrors()) { // Ha.. 2023. 6. 13. 이전 1 2 3 4 ··· 6 다음 728x90