레퍼런스 타입 레퍼런스 타입 이름 그대로 참조형입니다. 프리미티브 타입의 경우 변수에 직접적으로 값이 들어가는 반면 참조형 타입은 간접적으로 들어갑니다. 값 그 자체가 아니라 주소를 가지게 됩니다. 객체를 근간에 둔 타입입니다. 자바의 정석에서는 원시형은 8개라고 직접적으로 말해주고 있지만 참조형은 그 8개를 제외한 나머지라고 언급하고 있습니다. 대표적으로 배열, 열거, 클래스, 인터페이스 등이 레퍼런스 타입에 속합니다. 저장 위치 원시 타입이 stack 영역에 저장된 것과 달리 레퍼런스는 heap 영역에 저장이 됩니다. int a = 10; String s = "hello world"; int a = 10의 경우 간단하죠. a라는 변수에 10이라는 값이 stack 영역에 저장됩니다. String s는 ..
자바
github.com/whiteship/live-study/issues/2 2주차 과제: 자바 데이터 타입, 변수 그리고 배열 · Issue #2 · whiteship/live-study 목표 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다. 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 github.com 오늘은 2주차 과제의 '프리미티브 타입 종류와 값의 범위 그리고 기본 값' 주제를 다뤄보겠습니다. 자바 공부를 하면서 프리미티브라는 단어를 접한 적이 없는데요. 'primitive' 로 추정이 되며 해당 단어는 '원시의'라는 뜻을 가지고 있습니다. 자바 변수들을 크게 원시 타입과 레퍼런스 타입으로 나눌 수 있는데 오늘..
이번에도 백기선님의 자바 스터디 1주차 주제를 가져왔습니다. 감사합니다. JDK란? JDK(Java Development Kit)는 Java 애플리케이션을 만드는 데 사용되는 소프트웨어 개발 환경입니다. Java 개발자는 이를 Windows, macOS, Solaris 및 Linux에서 사용할 수 있습니다. JDK는 Java 프로그램을 코드화하고 실행하는 데 사용 가능합니다. 동일한 컴퓨터에 둘 이상의 JDK 버전을 설치할 수 있습니다. JDK에는 Java 프로그램을 작성하는 데 필요한 도구(그래서 Kit라고 부름)와 이를 실행하는 데 필요한 JRE가 포함되어 있습니다. 컴파일러, Java 애플리케이션 시작 프로그램, 애플릿 뷰어 등이 포함됩니다. 컴파일러는 Java로 작성된 코드를 바이트 코드로 변환합..
포스팅의 주제는 백기선님의 자바 스터디 1주차 과제에서 가져왔습니다. 자바 공부하기에 좋은 주제들을 제시해주셔서 저도 따라가 보려고 합니다. JVM은 JRE에 속해있고 자바 코드 실행 환경을 제공해주는 가상 머신입니다. 자바 프로그램의 실행 과정을 살펴보겠습니다. 자바 프로그램 실행 과정 프로그램이 사용할만큼의 메모리가 할당되고 이를 JVM이 관리합니다. 자바 컴파일러가 자바 소스코드를 바이트코드(.class 파일)로 변환시킵니다. 그다음 Class Loader를 통해 class 파일들을 JVM에 로딩합니다. 로딩된 파일들을 Execution Engine에서 처리합니다. JVM 구성 요소 자바 프로그램 실행 과정은 전부 JVM에서 일어나는 일입니다. 메모리 관리, Class Loader, Executio..
JIT 컴파일러 JIT 컴파일러는 JVM의 Execution Engine 파트에 속해있습니다. 예전 자바는 인터프리터 방식만을 사용했다고 합니다. 인터프리터의 경우 명령어를 하나씩 실행하는 방식으로 각각의 명령어 단위로 본다면 실행 속도가 빠르지만 큰 덩어리로 본다면 속도가 느린 방식입니다. 중복되는 코드가 있어도 라인별로 실행하기에 다시 인터프리팅하는 과정이 들어가거든요. JIT 컴파일러는 Just In Time 컴파일러로 인터프리터 방식의 단점을 보완하기 위해 도입되었습니다. 실행 시점에 인터프리터 방식으로 기계어 코드를 생성 하면서 그것을 따로 캐싱해둡니다. 나중에 동일한 부분이 호출된다면 캐싱해둔 코드를 불러다가 쓰면 되겠죠. 이러한 경우에는 인터프리터 방식보다 빠르다고 볼 수 있습니다. 저는 여..
자바 가상 머신(Java Virtual Machine, JVM)은 자바로 개발한 프로그램을 컴파일하여 만들어지는 바이트코드를 실행시키기 위한 가상 머신입니다. 자바 가상 머신 대신 JVM이라고 줄여서 언급하겠습니다. Write Once, Run Anywere JVM은 사용 중인 운영체제와 관계없이 그 안에서 실행될 프로그램을 위한 환경을 조성합니다. 이게 무슨 의미냐면 제가 구구단을 출력하는 프로그램을 만들었다고 가정할게요. 저는 Windows 10 운영체제를 사용하고 있는데, Linux나 Mac을 쓰는 사람들에게 배포를 해도 정상적으로 동작합니다. 즉, 운영체제에 독립적으로 실행 가능한 환경을 제공해줍니다. 이게 가능한 이유는 JRE라는 친구가 있기 때문입니다. 각 운영체제마다 적절한 JRE가 설치되어..
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'는..
자바를 제대로 활용하고 있는지 의문이 들어서 복습을 하고 있습니다. 복습하는 도중에 새롭게 알게 된 사실등을 정리하므로 해당 포스팅에서는 많은 내용을 다루지 않습니다. 변수란? 하나의 값을 저장하기 위한 메모리 공간에 이름 붙인 것입니다. int age = 5; 위의 예제에서는 age가 변수가 됩니다. 메모리에서 int형에 해당하는 byte만큼 자리를 배정하고 거기에 age라는 이름을 붙입니다. 그 공간에 5라는 값을 담아주면 되겠죠. 참고로 int는 변수의 타입이고 5라는 상수 값은 리터럴이라고 부릅니다. 자바의 상수를 int age 앞에 final이라는 키워드를 붙이면 상수가 되며 값을 수정할 수 없는 점 유의바랍니다. 선언 위치에 따른 변수 클래스 변수, 인스턴스 변수, 지역 변수 이 세 종류는 선..
프로젝트 목표 실시간으로 환율 값을 얻어서 사용자에게 전송해줄 수 있는 봇을 만드려고 합니다.목표가격에 도달했을 경우에는 알림 메시지를 전송할 예정입니다.이번 글에서는 그 첫 단계인 메시지 전송을 해보겠습니다. 봇 토큰 발급받기 여러분에게 텔레그램 계정이 이미 있다는 가정하에 진행하겠습니다. @BotFather 라는 봇과 채팅하면서 토큰을 받아야합니다. 대화 시작하기 -> /newbot 을 입력해주세요. 그 다음에는 차례대로 봇 이름, 봇 닉네임(유일해야함)을 입력하라고 합니다. 여기까지 진행해주시면 간단한 봇 발급은 끝납니다. 봇 토큰을 발급해주는데 따로 메모해두세요. Chat_id 확인 https://api.telegram.org/bot토큰/getUpdates url를 통해서 확인 가능합니다. 본인이..
제목에 나온 그대로 데이터베이스를 이용해서 로그인 기능을 구현하기 위한 준비를 해볼까 합니다. 데이터베이스 선택 Oracle, Mssql, Mysql 등을 다뤄봤습니다.무엇을 이용해도 상관없지만 개인적으로 Mysql이 자료도 많고 예전 프로젝트에서도 다뤄서 그런지 편하더라구요.그런 이유로 Mysql을 선택했습니다. 테이블 생성하기 User 테이블을 이렇게 생성해봤습니다. 저번에 구현한 로그인 기능으로는 Email과 password만 있어도 충분합니다. 그러나 이메일 앞을 잘라서 고유한 이름처럼 사용하는 게 맞는 걸까..? 란 생각이 들더라구요. 그래서 따로 Nickname을 지정할 수 있도록 컬럼을 추가했습니다. 또한 무엇을 기본키로 만들지가 고민이었어요. 닉네임도 고유하고 이메일도 고유한 값일 텐데 대..