본문 바로가기

:D/JAVA

java 기초 개념 문법

1. 자바 : .java -> 컴파일러 -> .class ->JVM이 실행
자바 : 객체 지향 언어
* 자바의 특징 
플랫폼 독립성 (자바는 플랫폼에 종속적이지 않고 독립적)
객체지향
멀티스레드 (일꾼이 여러명)
가비지컬렉션

jre는 실행할 때 필요한 것들이 깔려있음 (자바 응용프로그램으로 만들어진 것을 실행할 때 필요한 것)


2. 자바 가상 기계 (JVM : Java Virtual Machine)
소프트웨어, 서로 다른 플랫폼(Windows, OS X)에서 자바 프로그램이 실행되는 동일한 환경을 제공한다.

C 언어
소스파일(.c) -> 컴파일러 -> .obj -> 링커 -> 라이브러리찾기 -> 플랫폼마다 각각

Java 
소스파일(.java) -> 컴파일러 -> .class 파일 -> .class 파일 실행 -> JVM 메모리 로딩 -> 실행 중 다른 리소스, JDK클래스 파일이 필요하면 JVM이 해당 클래스 파일 로딩/실행(그때 그때마다 필요한 파일을 로딩/실행 시켜줌)

3. 자바 플랫폼 
JDK (Java Development Kit : 자바 응용 프로그램)
JDK : 자바 컴파일러, JRE, 라이브러리, 샘플 소스 (개발에 필요한 것들)
JRE : 자바 응용 프로그램이 실행될 때 필요한 소프트웨어들(JVM등) 담고 있다.
일반 사용자들은 JRE만 있으면 되고 개발할 때는 JDK까지 필요하다.
JDK 1.5 버전 부터 문법이 완전히 변경됨. 5버전까지는 베타 실사용은 6부터
(우리는 JDK 1.8)

Java API : 남이 만들어 놓은 클래스
API 문서

4. 변수 variable
1) 변수 : 변하는 수 ("하나의" 값을 저장할 수 있는 공간)
마지막 대입값만 남는다.
2) 변수의 타입 : 변수를 만들 때 정해놓은 타입의 맞는 값만 대입 가능.
3) 변수의 명명규칙 : 소문자로 시작, 공백 X, 특수문자 _ $ 만 허용,
키워드 X, 대소문자 구분, 숫자로 시작 X, 의미있는 이름으로, 블럭 내 {} 안에 같은 이름의 변수 X ,
카멜표기법(currPositionAbc), 스네이크표기법(curr_position_abc)
5. 데이터  타입 data type
[기본형]
문자 : char
숫자 :  정수 : byte, short, int, long
실수 : float, double
논리 : boolean (대입값 : true / false)

# 메모리 단위
1 bit = 0 or 1
1 byte = 8bit
bit < byte < KB < MB < GB < TB < PB < EB < ZB < YB

1) 기본형 Primitive type : 8가지
논리형 : boolean  : 1byte : true(1) / false(0) 둘 중 하나의 값만 갖는다. (실제 차지하는 값은 1bit)
문자형 : char (캐릭터) : 2byte : 한글자 저장
정수 : 음수 / 양수 (소수점 없는 수들)
byte  : 1byte : -128 ~ 127
short  : 2byte : -32768 ~ 32767
* int  : 4byte : 약 -21억 ~ 약 21억 -1
long : 8byte : 많이~

실수 : 소수점 붙어있는 숫자들
float  : 4byte : 소수점 8자리까지 (F까지 써야 float으로 인지함 기본 소수는 float)
* double  : 8byte : 소수점 16자리까지 (기본 운영체제(더 정확))

데이터 표시
문자 : 'a' : 홑따옴표로 묶기
문자열 : "hello"  : 겹따옴표로 묶기
숫자 : 10 (int) 10.123 (double)

2) 참조형 Reference type 
배열에 대한 레퍼런스, 클래스에 대한 레퍼런스, 인터페이스에 대한 레퍼런스....
-> 데이터가 저장되어있는 실제 메모리상의 주소를 저장하는 변수
문자열 : String :  저장공간 X 

6. 변수의 선언과 사용
1) 변수 선언 : 해당 크기의 메모리를 점유할 것이다~~

데이터타입 변수명;
    int       score; -> 정수를 저장할 score 라는 이름의 방을 하나 만들게~~~

2) 값 대입 (저장 : 변수 선언 후 )

변수명 = 값;
score = 100;

= 대입 연산자 : 오른쪽에 있는 (연산을 마친) 값을 왼쪽 변수에 대입한다