자바는 오라클에서 인수한 이후로 라이센스를 냈다. 그래서 한동안 침체기가 있었는데 호환성, 레거시와 같은 IT 특성상 자바를 쓰지 않을 수 없는 상황이 계속되었다. 결국 자바를 배우는 이유를 여기서 알 수 있었다. "자바는 백엔드 대표 언어다"
java 소스코드를 컴파일하고 실행해주는 kit
JAVA 5.0
JAVA 8.0
JAVA 9.0
java로 만들어 웹브라우져에서 동작하는 언어
이를 실현하기 위해 Framework들이 개발되었다!-> 프레임워크를 활용한 개발을 배워야 하는 이유
라이브러리는 실행의 주체를 개발자가 가지고 있다. 실행의 흐름을 개발자가 정한다.
프레임워크는 실행의 흐름을 스스로 가지고 있다. 즉, 개발자가 실행의 흐름을 가지지 못한다.
1) 운영체제에 독립적이다.
JVM(Java Virtual Machine)이 운영체제에 독립적일수 있도록 해준다.
2) 객체지향언어이다.(Object Oriented Programming)
"OOP is A, P , I , E" A - Abstraction (추상화) P - Polymorphsim(다형성) I - Inheritance(상속) E - Encapulattion(캡슐화-은닉)
3) 상대적으로 배우기 쉽다. - C에 비해서...
4) 다양한 API제공한다.(Aplication Programming Interface)
5) 가비지 콜렉터(Garbage Collector : GC)
사용하지 않는 메모리 공간을 자동으로 제거, 개발자가 직접 메모리 관리 안함.
1) 클래스의 첫글자는 대문자로 시작
2) 메소드, 변수의 첫글자는 소문자로 시작
3) 메소드는 항상 () 괄호가 붙는다.
4) 단어와 단어가 조합 될 때 낙타 표기법 ex) Class JavaExam
5) 상수는 모두 대문자로! (단어 조합 시 사용) ex) static final int JAVA_EXAM
6) 첫글자는 영문, , $로 시작, 두번째부터 숫자 가능, 예약어 사용 불가
변수 : 데이터를 저장하는 공간, 한가지 타입과 값만 저장 가능하다. 또한 값 변경이 가능하다.
1) primitive type = 기본형(8가지)
정수형 : 크기에 따라 byte(1byte) -> short(2byte) -> int(4byte) -> long(8byte) : 기본형은 int
실수형 : float(4byte) -> double(8byte) : 기본형은 double
문자형 : char(2byte) : 한글자 만 저장가능 ex) 'A'
※ String은 문자열, 객체이다. ex) "A"
논리형 : boolean - true, false 값만 가능한다.
※ 연산을 하기 위해선 최소 32비트의 저장공간이 필요하다.
※ 캐스팅은 크기 비교가 베이스기 때문에 boolean, 객체에서는 불가능하다. 단, 객체간 상속관계는 object down casting이 일어날 수 있다.
byte a = 5; b = 3;
byte c = a + b; // 컴파일 에러 -> byte에 담을 수 없음
byte c = (byte)(a+b)// 위 문장을 형변환(Casting)을 이용해서 byte에 저장할 수 있다! 다만, 데이터 손실은 있을 수 있다.
// 작은 타입 -> 큰 타입으로 변환하는 promotion은 자동이나, 큰 타입 -> 작은 타입으로 변환하는 Casting은 캐스팅 연산자가 필요
class가 존재한다면 그 class의 이름이 타입이 될 수 있다.
class Hello{ }
class Cat{ }
변수선언
int i; //정수형선언
Hello h; // Hello 형 선언
Cat t ;// Cat 타입 변수 선언
// 중요: String 은 Object 타입이다. !!!
class String { }
연산자 | 기호 |
---|---|
대입연산자 | = |
같다 | == |
같지 않다 | != |
비교연산자 | >,< |
1) 조건문
2) 반복문
// for문 구조
for( 초기화 ; 조건식 ;증감식 ){
실행문장;
}
// 실행 순서 : 초기화 -> 조건식 true -> 실행문 -> 증감식
// while문 구조
초기화;
while( 조건식 ){
실행문장;
증감식;
}
// for문과 다르게 실행문이랑 증감식의 위치를 바꾸어 실행 순서를 바꿀수 있다!
// 이중 while문 구조
초기화;
while(조건식){
초기화;
while(조건식){
문장;
증감식;
}
증감식;
}
// do while문 구조
초기화;
do{
실행문장;
증감식;
}while( 조건식 );
// 이중 do while문 구조
초기화;
do{
초기화;
do{
문장;
증감식;
}while(조건식);
증감식;
}while(조건식);
※ 반복문 안에서 반복을 제어하는 키워드 2가지 : break, continue
컴파일이란? 실행파일을 만드는 작업 (소스코드를 검증하고, 컴퓨터가 읽을 수 있는 바이트코드로 변환하는 과정)
1) 컴파일
javac HelloExam.java -> 오류가 없으면 HelloExam.class 생성
2) 실행
java HelloExam.class 실행
동작 원리 구조도
자바는 코딩순서와 실행순서는 다르다!
컴파일은 순차적으로 진행, 실제 실행은 호출 순서로 진행 (메인메소드를 시작점으로!)