본문 바로가기

개발기술/Java

(12)
Java 코딩구현심화 - 스트림,람다식 특수 클래스 : 내부클래스내부클래스 : 클래스 in 클래스 (클래스 안에 선언한 클래스)class Outer {class Inner {}}  내부 클래스에서 외부클래스의 유효범위안에 들어가기 때문에 인스턴스 생성없이도 외부 클래스 인스턴스 멤버에 접근가능하나, 외부에서는 내부 클래스에 접근 불가함. 내부클래스가 외부클래스 '안에서만' 사용되는 클래스이기에, 굳이 바깥에 분리하여 둘필요가 없어 외부클래스의 멤버처럼 내부클래스를 캡슐화를 진행하는 개념이다. ex) Outerclass.Innerclass var = new Outer().new Innter() 원래 클래스에는 default와 public 밖에 사용되지 않는데, 내부클래스는 모든 접근제어자를 사용가능. 내부클래스의 종류 인스턴스 클래스 (inst..
Deep Dive into 디버깅 주체적인 디버깅의 필요성  추상적으로 이해하고 있는 프레임워크나 라이브러리가 구체적으로 어떻게 동작하고 있는지 이해하기 위해서는 프로그래밍의 흐름을 Line By Line으로 이해하는 것이 필수적이다. 코드의 이해에서 가장 동기부여가 되는 상황은 에러발생상황 해결일 때가 많다. 단순히 구글링이나 GPT에 알아보는 것도 방안이지만, 스스로 이해의 증진이라는 관점에서 주체적인 디버깅은 필수불가결이다. Step 1: Analyze the Error LogLook at the Error Message:The error message often gives a clue about what went wrong. It might indicate a NullPointerException, a validation fail..
Java 쓰레드 관리 쓰레드 개념정립 스레드는 어떻게 생성되는가?   자바에서는 모든 것과 마찬가지로 스레드도 객체로 다룬다. 자바는 실행 시점에 `main` 이라는 이름의 스레드를 만들고 프로그램의 시작점인 `main()` 메서드를 실행한다.  스레드를 생성하는 코드는 main 스레드는 main 메서드 내에서 정의된 것처럼, 새로운 스레드 객체를 생성한 후 , 스레드의 start() 메서드를 시작한다. 그러면, JVM이 OS system call을 통해 새로운 스레드를 위한 별도의 스택 공간을 할당한다. 새로운 스레드는 이어서 스레드 인스턴스 내에 정의되어 있는 `run()` 메서드를 실행하여 정의된 작업을 실행한다. 여기까지가 스레드의 start() 동작이다. main 스레드는 새로운 스레드의 start() 메소드를 동작..
Java Dependency - Marven, Gradle, exteral libraries(Lombok etc) DependencyAdding a dependency refers to including external libraries or modules that your project requires to function correctly. In the context of Java projects, dependencies are often managed using build tools like Maven or Gradle. These tools help automate the process of downloading, configuring, and managing the libraries your project needs.Maven is a build automation tool used primarily for..
Java 언어의 이해 Java의 특징"Programmers Write Once, Run Anywhere(WORA)"JVM이라는 Java 가상머신 위에서 동작하기 때문에 환경에 종속되지 않고 동작시킬 수 있음Java의 장점- 간결한 객체지향 언어- Garbage Collection을 통한 메모리 관리- 플랫폼에 종속적이지 않고, 한번 컴파일 된 프로그램은 어느 운영체제나 환경에서 동일하게 실행을 보장- 많은 오픈소스 프레임워크를 통해 생산성증가 Java의 단점- 처리속도가 중요한 프로그램에는 맞지 않음- 최근 나오는 프로그래밍언어에 비해 간결하지 못함- 하드웨어를 직접 컨트롤할 수 없음- GUI가 많은 프로그램에는 적합하지 않음 Java의 동작원리  작성된 Java소스코드는 JDK에 포함되어있는 컴파일러를 통해서 클래스파일(바..
Java 코딩구현 - I/O System 입력과 출력 (I/O) : 전체 구조데이터가 하나의 어플리케이션에서 다른 매체로 전송될 때 반드시 Byte Serialization이라는 것을 거쳐야한다. 그리고 수산하는 매체는 이 데이터의 meta 데이터를 활용하여 Deserialization을 통해서 사용가능한 데이터로 변환하는 과정이 필요하다.          In Java, the input/output (I/O) system is a crucial part of programming that deals with reading data from and writing data to different sources like files, networks, or other external devices.StreamsStreams are at the co..
Java 코딩구현 기초 - 데이터타입 변수데이터를 저장하는 메모리 공간에 붙여준 이름변수를 만들기 위해서는 1. 변수선언(데이터형 변수이름; int a ) 2. 변수에 값 초기화 (변수명 = 데이터값, a=10)를 할 수 있으며 동시에 혹은 따로 모두 가능하다.**참고**: 지금 학습하는 변수는 지역 변수(Local Variable)라고 하는데, 지역 변수는 개발자가 직접 초기화를 해주어 야 한다. 나중에 배울 클래스 변수와 인스턴스 변수는 자바가 자동으로 초기화를 진행해준다.기본형(Primitive Type) vs 참조형 (Reference Type)자바의 변수 데이터 타입을 가장 크게 보면 기본형과 참조형으로 분류할 수 있다. 사용하는 값을 직접 넣을 수 있는 기본 형, 그리고 메모리의 참조값을 넣을 수 있는 참조형으로 분류할 수 있다...
Java 범용 library java.math packageBigInteger, BigDecimal::  Represents arbitrary-precision integers with no upper or lower boundsConstructorBigInteger(String val/integer): Creates a BigInteger instance from a string representation of an integer.BigDecimal(String val/double val): Creates a BigDecimal instance from a double value.Operations:add(BigInteger val), subtract(BigInteger val), multiply(BigInteger val), d..