Java

레퍼런스 타입 레퍼런스 타입 이름 그대로 참조형입니다. 프리미티브 타입의 경우 변수에 직접적으로 값이 들어가는 반면 참조형 타입은 간접적으로 들어갑니다. 값 그 자체가 아니라 주소를 가지게 됩니다. 객체를 근간에 둔 타입입니다. 자바의 정석에서는 원시형은 8개라고 직접적으로 말해주고 있지만 참조형은 그 8개를 제외한 나머지라고 언급하고 있습니다. 대표적으로 배열, 열거, 클래스, 인터페이스 등이 레퍼런스 타입에 속합니다. 저장 위치 원시 타입이 stack 영역에 저장된 것과 달리 레퍼런스는 heap 영역에 저장이 됩니다. int a = 10; String s = "hello world"; int a = 10의 경우 간단하죠. a라는 변수에 10이라는 값이 stack 영역에 저장됩니다. String s는 ..
· Java
이번에도 백기선님의 자바 스터디 1주차 주제를 가져왔습니다. 감사합니다. JDK란? JDK(Java Development Kit)는 Java 애플리케이션을 만드는 데 사용되는 소프트웨어 개발 환경입니다. Java 개발자는 이를 Windows, macOS, Solaris 및 Linux에서 사용할 수 있습니다. JDK는 Java 프로그램을 코드화하고 실행하는 데 사용 가능합니다. 동일한 컴퓨터에 둘 이상의 JDK 버전을 설치할 수 있습니다. JDK에는 Java 프로그램을 작성하는 데 필요한 도구(그래서 Kit라고 부름)와 이를 실행하는 데 필요한 JRE가 포함되어 있습니다. 컴파일러, Java 애플리케이션 시작 프로그램, 애플릿 뷰어 등이 포함됩니다. 컴파일러는 Java로 작성된 코드를 바이트 코드로 변환합..
· Java
JIT 컴파일러 JIT 컴파일러는 JVM의 Execution Engine 파트에 속해있습니다. 예전 자바는 인터프리터 방식만을 사용했다고 합니다. 인터프리터의 경우 명령어를 하나씩 실행하는 방식으로 각각의 명령어 단위로 본다면 실행 속도가 빠르지만 큰 덩어리로 본다면 속도가 느린 방식입니다. 중복되는 코드가 있어도 라인별로 실행하기에 다시 인터프리팅하는 과정이 들어가거든요. JIT 컴파일러는 Just In Time 컴파일러로 인터프리터 방식의 단점을 보완하기 위해 도입되었습니다. 실행 시점에 인터프리터 방식으로 기계어 코드를 생성 하면서 그것을 따로 캐싱해둡니다. 나중에 동일한 부분이 호출된다면 캐싱해둔 코드를 불러다가 쓰면 되겠죠. 이러한 경우에는 인터프리터 방식보다 빠르다고 볼 수 있습니다. 저는 여..
· Java
컴파일러를 통해 자바 클래스 파일이 자바 바이트 코드로 변환되고 이를 JVM이 실행시킵니다. 여기서 바이트 코드란 무엇인지에 대해서 정리해보겠습니다. 바이트 코드란? 바이트 코드는 가상 머신에서 돌아가기 위한 표현 방법입니다. 컴파일러에 의해 변환된 명령어 코드가 1바이트라서 바이트 코드라고 부른다고 합니다. 어떤 플렛폼에도 종속되지 않고 실행될 수 있는 가상 머신용 코드라고 보시면 됩니다. 바이트 코드는 다시 실시간 번역기 또는 저스트 인 타임(just-in-time, JIT) 컴파일러에 의해 바이너리 코드로 변환됩니다. 바이너리 코드와의 차이점 바이너리 코드는 기계가 이해할 수 있도록 구성된 이진 코드입니다. 여기서 차이점이 생깁니다. 바이너리 코드는 기계(CPU)가 읽을 수 있는 형태인 반면 바이트..
· Java
자바 가상 머신(Java Virtual Machine, JVM)은 자바로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시키기 위한 가상 머신입니다. 자바 가상 머신 대신 JVM이라고 줄여서 언급하겠습니다. Write Once, Run Anywere JVM은 사용 중인 운영체제와 관계없이 그 안에서 실행될 프로그램을 위한 환경을 조성합니다. 이게 무슨 의미냐면 제가 구구단을 출력하는 프로그램을 만들었다고 가정할게요. 저는 Windows 10 운영체제를 사용하고 있는데, Linux나 Mac을 쓰는 사람들에게 배포를 해도 정상적으로 동작합니다. 즉, 운영체제에 독립적으로 실행 가능한 환경을 제공해줍니다. 이게 가능한 이유는 JRE라는 친구가 있기 때문입니다. 각 운영체제마다 적절한 JRE가 설치되어..
· Java
char형 변수를 int형으로 변환하고 싶을 때, '5'-'0' 이런 식으로 '0'을 빼준 적 있지 않으신가요?? 그 원리에 대해서 알아봅시다. 산술변환이란? "연산 전에 피연산자의 타입을 일치시키는 것" 만약에 float 타입과 int타입이 있다면 int 타입을 float 타입으로 자동 형변환 해줍니다. int i=10; float f=20.0f; float result=f+(float)i; //float result=f+i; 와 동일함 int -> float의 경우(작은 값 -> 큰 값) //형변환 명시를 안해줘도 자동으로 해줍니다. 또한 int타입보다 작은 타입들은 자동으로 int로 변환이 됩니다. 앞의 char타입인 '5' - '0'의 경우 char 타입이 int로 자동 변환됩니다. 문자 '5'는..
· Java
자바를 제대로 활용하고 있는지 의문이 들어서 복습을 하고 있습니다. 복습하는 도중에 새롭게 알게 된 사실등을 정리하므로 해당 포스팅에서는 많은 내용을 다루지 않습니다. 변수란? 하나의 값을 저장하기 위한 메모리 공간에 이름 붙인 것입니다. int age = 5; 위의 예제에서는 age가 변수가 됩니다. 메모리에서 int형에 해당하는 byte만큼 자리를 배정하고 거기에 age라는 이름을 붙입니다. 그 공간에 5라는 값을 담아주면 되겠죠. 참고로 int는 변수의 타입이고 5라는 상수 값은 리터럴이라고 부릅니다. 자바의 상수를 int age 앞에 final이라는 키워드를 붙이면 상수가 되며 값을 수정할 수 없는 점 유의바랍니다. 선언 위치에 따른 변수 클래스 변수, 인스턴스 변수, 지역 변수 이 세 종류는 선..
· TechTalk
프로젝트 목표 실시간으로 환율 값을 얻어서 사용자에게 전송해줄 수 있는 봇을 만드려고 합니다.목표가격에 도달했을 경우에는 알림 메시지를 전송할 예정입니다.이번 글에서는 그 첫 단계인 메시지 전송을 해보겠습니다. 봇 토큰 발급받기 여러분에게 텔레그램 계정이 이미 있다는 가정하에 진행하겠습니다. @BotFather 라는 봇과 채팅하면서 토큰을 받아야합니다. 대화 시작하기 -> /newbot 을 입력해주세요. 그 다음에는 차례대로 봇 이름, 봇 닉네임(유일해야함)을 입력하라고 합니다. 여기까지 진행해주시면 간단한 봇 발급은 끝납니다. 봇 토큰을 발급해주는데 따로 메모해두세요. Chat_id 확인 https://api.telegram.org/bot토큰/getUpdates url를 통해서 확인 가능합니다. 본인이..
· TechTalk
Execution failed for task ':compileJava'. > Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'. IntelliJ에서 자바 8버전을 사용하다가 11로 업그레이드 하려다가 마주친 에러 메시지입니다. IDE에서 11버전이 아닌 8버전을 참조하고 있는 것으로 예상됩니다. 해결 방법 File - Project Structure로 들어가서 설정 확인을 해봅시다. Platform Settings의 SDKs에 11버전을 등록해줍시다. 그 다음 Project Settings의 Project SDK를 11버전으로 변경해주세요. 이럼에도 불구하고 Gradle 환경에서 Spring을 이용하려는 분이 동일한 에러 메..
moongomi
'Java' 태그의 글 목록 (3 Page)