공부/Java 12

[공부/Java] Java와 Kotlin

자바 객체 지향 방법론을 사용하며 여러 운영체제에서 실행될 수 있는 언어 자바의 특징 멀티 플랫폼 : JVM만 설치되어 있으면 어떤 운영체제에서도 애플리케이션을 작동시킬 수 있음 메모리 관리 : GC가 사용하지 않는 자원을 자동으로 반환 OOP : 객체 지향 방법론을 사용해 객체라는 단위로 나누고 객체들끼리 상호작용하는 방식 멀티 스레드 : Thread 클래스와 Runnable 인터페이스를 이용해 멀티 스레드를 구현 동적 로딩 : 필요한 시점에 구현한 클래스를 로딩할 수 있음 코틀린 개발자의 편의성, 간결하고 효율적인 코드 작성, 객체지향 프로그래밍과 함수형 프로그래밍의 장점을 절묘하게 조화시킨 언어 코틀린이 생겨난 배경 JetBrains라는 회사에서 만든 제품들이 70%이상 자바로 작성되어 있었는데, ..

공부/Java 2022.12.28

[공부/Java] 고정 소수점과 부동 소수점, 왜 컴퓨터는 소수 계산을 정확하게 못할까?

고정 소수점 (Fixed Point) 10진수를 2진수로 바꾼후 그걸 소수점이 정해진 곳에 넣는 방식이다. 맨 앞 1자리는 부호 비트(sign bit)라 해서 0이면 양수, 1이면 음수를 의미한다. 소수점의 위치는 미리 정해두고, 비트를 채워넣고 남은 공간은 0으로 채워준다. 이런 고정 소수점 방식은 구현하기는 편리하지만 사용한느 비트 수 대비 표현 가능한 수의 범위 또는 정밀도가 낮기 때문에 실수를 다룰 필요가 있는 범용 시스템에서는 거의 안 쓰이고, 높은 정밀도가 필요 없는 소규모 시스템에서는 간혹 쓰인다. 부동 소수점 (Floating Point) 2진수로 변환한 결과를 그대로 넣지 않고 몇가지 과정을 거친다. 정규화 (Normalization) 2진수를 1.xxx * 2^n 꼴로 변환하는 것을 말..

공부/Java 2022.12.28

[공부/Java] Runtime Data Area

Runtime Data Area는 JVM의 메모리 영역으로 자바 애플리케이션을 실행할 때 사용되는 데이터들을 적재하는 영역이다. 이 영역은 크게 Method Area, Heap Area, Stack Area, PC Register, Native Method Stack으로 나뉜다. Method Area JVM이 실행되면서 생기는 공간이다. 모든 쓰레드가 공유하는 메모리 영역으로 클래스, 인터페이스, 메소드, 필드, Static 변수 등의 바이트 코드가 저장되는 공간이다. 이 영역 안에는 Runtime Constant Pool이라는 공간도 있는데 '상수'정보가 저장된다. Class Area, Code Area, Static Area로 불려진다. Heap Area 모든 쓰레드가 공유하며, new 키워드로 생성..

공부/Java 2022.12.28

[공부/Java] static이란?

일반적으로 우리가 만드는 class는 static 영역에 생성된다. static 키워드로 만든 정적 변수와 정적 메소드의 경우는 프로그램이 종료되기 전까지 사용이 가능하다. 또한 static이라는 키워드를 통해 static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만 GC(Garbage Collector)의 관리 영역 밖에 존재해 static을 자주 사용하면 프로그램 종료시까지 메모리가 할당된 채로 존재해 시스템 퍼포먼스에 악영향을 주게 된다. Static이 저장되는 위치 Permanent vs. Metaspace Permanent JDK 8 이전까지 존재했던 메소드 영역 클래스 내부의 메타 데이터들을 저장하는 영역 Heap영역에 속하며 클래스, 메소드 메타 데이터, 정적 객체..

공부/Java 2022.12.28

[공부/Java] JVM, JRE, JDK

자바 가상 머신 (JVM, Java Virtual Machine) 각기 다른 플랫폼에 설치해 동일한 자바 실행 환경을 만들어주는 소프트웨어 Java는 JVM 덕분에 플랫폼에 종속적이지 않지만, JVM 자체는 플랫폼에 종속적이라 운영체제에 맞는 JVM을 설치해줘야 함 응용 프로그램을 구성하는 클래스 파일(.class)의 바이트 코드를 JVM 환경에서 실행 JVM은 자바 실행 환경인 JRE에 포함되어 있어 현재 사용하는 컴퓨터 운영체제에 맞는 자바 JRE가 설치되어 있다면 자바 가상 머신이 설치되어 있다는 의미 JVM을 사용함으로써 하나의 바이트 코드(.class)로 모든 플랫폼에서 동작할 수 있다는 것이 가장 큰 장점이다! JVM 동작 방식 1. 자바로 개발된 프로그램을 실행하면 JVM은 OS로부터 메모리..

공부/Java 2022.12.24

[공부/Java] JVM 구성 - Class Loader, Execution Engine, Garbage Collector

JVM의 구성요소 Class Loader Class Loader는 바이트코드(.class)를 읽어들여서 클래스 객체를 생성하는 역할을 담당한다. class 로딩은 Run-Time에 일어난다. 개발자가 new라는 예약어로 객체를 생성하는 코드를 처음 실행할 때 JVM은 만들 클래스를 Class Loader로 .class 파일을 최초로 메모리에 load한다. 최종적으로 Runtime Data Area의 Method Aread에 배치된다. Class Loader의 기술적 특징 Hierarchical : Class Loader 간에 계층형 구조를 가짐. 'bootstrap' Class Loader가 가장 최상위 Delegate load reqeust : 계층형 구조를 가지고 있어 어느 시점에 Class 로딩요청..

공부/Java 2022.12.24

[공부/Java] 자바의 main() 메소드, 예외, 예외 처리, try-catch-finally, 예외 클래스

main() 메소드 자바 응용 프로그램의 실행 시작 메소드 public static void main(String[] args){} main()메소드의 인자 전달 c:> java Hello 3 5.7을 수행하면 Hello class의 main메소드의 args에 3과 5.7이 전달됨 args[i]로 배열 형태로 접근 가능 이클립스에서 main 메소드의 인자 전달 Run -> Run Configurations -> Arguments 탭에서 Program arguments 칸에 값을 넣으면 args로 넘어감 자바의 예외 컴파일 오류 문법에 맞지 않게 작성된 코드 컴파일 시 발견 예외(Exception) 오동작이나 결과에 악영향을 미칠 수 있는 실행 중 발생한 오류 ex) 정수를 0으로 나누는 경우, 배열보다 ..

공부/Java 2022.07.11

[공부/Java] 자바의 배열, 선언, 생성, 초기화, 인덱스, 치환, 공유, 크기, for-each문, 리턴

배열 인덱스와 인덱스에 대응하는 데이터들로 이루어진 자료 구조 같은 타입의 데이터들이 순차적으로 저장 배열의 선언과 생성 배열 선언 데이터타입 배열이름[]; 배열 생성 배열이름 = new 데이터타입[배열크기]; 선언과 함께 초기화 int intArray[] = {0,1,2,3,4,5,6}; //초기화된 값의 개수만큼의 배열 생성 2차원 배열 배열이름 = new 데이터타입[배열크기1][배열크기2]; int intArray[][] = {{0,1,2,3}, {4,5,6,7}}; 데이터타입 배열이름 [][]; '배열이름'은 배열에 대한 레퍼런스 변수를 의미 배열 인덱스와 원소 접근 C와 마찬가지로 배열의 인덱스를 통해 원소에 접근 가능 0

공부/Java 2022.07.11

[공부/Java] 자바 키보드 입력 - Scanner

System.in 키보드로부터 직접 읽는 자바의 표준 입력 스트림 키 값을 문자가 아닌 바이트로 리턴하므로 응용프로그램이 문자 정보로 변환해줘야 함 Scanner java.util.Scanner 클래스 System.in에게 키를 읽게 하고, 읽은 바이트를 다양한 타입으로 변환하여 리턴해주는 클래스 공백 문자 ('\t', '\f', '\r', '\n' , ' ' )로 구분되는 아이템 단위로 읽음 키보드 입력 처리 과정 키보드 입력 -> 바이트 표준 입력 스트림 -> 바이트 스트림 -> Scanner -> 문자로 변환 -> 자바 응용 프로그램 Scanner의 주요 메소드 메소드 설명 String next() 다음 토큰을 문자열로 리턴 byte nextByte() 다음 토큰을 byte타입으로 리턴 short ..

공부/Java 2022.07.04

[공부/Java] 자바의 데이터 타입, 리터럴, var, 상수, 타입 변환, 수식연산자, 조건문, 반복문

기본 타입 실제 데이터 값을 저장하는 타입 기본 타입 메모리 사용 크기 값의 범위 boolean 1byte true / false char 2bytes '\u0000' ~ 'uFFFF' byte 1byte -128 ~ 127 short 2bytes -32,768 ~ 32,767 int 4bytes -2,147,483,648 ~ 2,147,483,647 long 8bytes -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 float 4bytes 1.4E-45 ~ 3.4028235E38 double 8bytes 4.9E-324 ~ 1.7976931348623157E308 boolean 자바가 데이터를 다루는 최소 단위가 1byte라서 낭비여도 그냥 1byte..

공부/Java 2022.07.04
728x90