///////
Search

자바소개, 변수

날짜
2022/09/20
태그
자바

01. introduce

자바 소개

TIOBE : 점유율 조사 사이트
C언어 + C++ 다음으로 점유율이 높은 자바
한국은 자바민국
자바 뒤를 따르는 파이썬과 자바스크립트
창시자 : 제임스 고슬링
<br>

자바의 폭풍 성장을 도운 요인

인터넷과 웹의 발전
플랫폼 호환성 문제 해결
플랫폼 독립적인 언어
<br>

컴파일러 역할

개발자가 작성한 소스코드를 CPU가 처리할 수 있도록 번역
<br>

프로그램 종속성이란?

각각 OS에서 제공하는 함수가 다르기에 소스코드가 각 OS에 따라 달라진다. 각각의 OS마다 컴파일을 달리해줘야 한다.
<span style='background-color: green'>자바는 플랫폼 독립성이다. 종속성이 아니다!</span> OS단 위에 JVM(각 OS에 맞게 개발된) 을 얹어 플랫폼 독립성을 구현 하였다. 우리는 고슬링 아저씨가 만든 JVM 만 OS에 맞게 설치만 한다면 Write Once!! Run Anywhere!! 단점으론 당연히 속도저하

OpenJDK 설치하기

설치 확인하기

cmd에 아래 입력 javac java -version
Plain Text
복사

환경변수

시스템 부팅 시, OS가 환경편수를 쭉 읽어들인 후 메모리에 올려놓기 때문에 언제 어느 위치에서 실행시켜도 실행된다.

자바 실행 원리

자바를 실행하면 일어나는 일

javac 컴파일러가 내가 작성한 .java 소스 코드를 JVM이 알아먹을 수 있는 0101덩어리로 번역하여 .class 파일을 만들어 주었다.

02. 변수

변수

변수 선언

해당 타입 만큼 메모리에 공간을 잡아라
메모리 할당 명령
선언과 초기화는 동시에 이루어질 수 있다

변수 선언 후의 메모리

int num; num = 256;
Plain Text
복사
메모리를 할당하라는 명령이기에
메모리엔 주소가 있다.
메모리를 관리하는 주체는 OS 이다.

변수명 규칙

int appleNum = 10;
Plain Text
복사
1.
대소문자는 구분되며 길이 제한은 없다.
2.
자바 예약어는 사용할 수 없다. (ex. class, boolean, try, catch ···)
3.
camelCase가 관례로 사용된다.
4.
특수문자는 _ $ 만 사용 가능하고 첫번째 글자에 숫자는 올 수 없다.

변수 사용과 메모리 할당 예제

int num1; //변수 선언 num1 = 10; //변수 초기화 int num2 = 10; //변수 선언과 초기화를 동시에 int num3 = num1 + num2; //변수를 사용한 연산 System.out.println(num1 + " + " + num2 + " = " + num3); //결과 출력
Plain Text
복사

데이터 타입

1byte = 8bit
오버플로우 발생할 가능성 항상 인지할 것

데이터 타입을 나눈 이유

컴퓨터는 2진수밖에 이해를 할 수 없다
음의 정수는 컴퓨터에게 어떻게 알려주어야 할까? 2의 보수법을 사용
실수는 컴퓨터에게 어떻게 알려주어야 할까? 부동 소수점, 표준 IEEE 754 방법을 사용

실수계산에서 오차가 발생하는 이유

double num = 0.1; for(int i = 0; i < 1000; i++) { num += 0.1; } System.out.println(num); // 결과 // 100.09999999999859
Plain Text
복사
십진법에서도 1/3을 정확하게 표현할 수 없다. 이진법에서도 정확하게 표현할 수 없는 수가 있을 것이다.
메모리는 유한, 실수는 무한 무한을 유한에 담기위해서 미리 일정 구간으로 사용할 값을 정하고 연산된 값에서 가장 오차가 적은 근사값으로 저장된다.

문자코드

char ch1 = '헐'; char ch2 = '확'; char ch3 = 54736; // 문자 '헐'의 유니코드 값 char ch4 = 54869; // 문자 '확'의 유니코드 값 char ch5 = 0xD5D0; char ch6 = 0xD655; System.out.println(ch2 + " " + ch2); System.out.println(ch3 + " " + ch4); System.out.println(ch5 + " " + ch6);
Plain Text
복사
문자와 숫자가 일대일 매칭
UTF-8 통일됨

boolean

int num1 = 10; int num2 = 20; System.out.println(num1 < num2);
Plain Text
복사
결과값으론 true가 반환
CPU는 연산이 끝나면 8개의 자료형 中 하나로 값을 반환
기본 타입
메모리 크기
저장 범위
byte
1 btye
-128~127
char
1 btye
0~65535
short
2 btye
-32768 ~ 32767
int
4 btye
<span style='background-color:green'>-21억 ~ 21억</span>
long
8 btye
float
4 btye
double
8 btye
boolean
1 btye
true, false