JDK의 javac로 인해 컴파일 되어 실행 가능
public static void main(String[] args){}
파일명.java - Test.java --> 코드
class Test{
}
↓ 컴파일 ↓ javac.exe 파일 필요
오류가 없으면
파일명.class 파일 생성 -->실행파일(bytecode 변환)
↓ 실행 ↓ java.exe 파일 필요
확장자는 생략이지지만 파일명.class 실행
OS에 맞게 실행되기 위해서 JVM 필요
모든 사물에는 각자의 기능이 있음
객체(Object) - ex)붕어빵
속성 - 멤버 필드 ex) 밀가루, 팥, 우유
기능 - Method ex)팔린다(), 먹는다()
↓ Java ↓
붕어빵.java
class 붕어빵{
속성
메소드(){}
}
👉 class 안에는 선언만 가능, 기능적인 부분은 메소드에 작성
1) 운영체제에 독립적 - Write Once, Run Anywhere!
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) Camel 표기법 사용
2) 유니코드 지원 (한글 지원)
3) 클래스 이름 첫글자 : 대문자
메소드 이름 첫글자 : 소문자()
변수 이름 첫글자 : 소문자
단, 상수는 모두 대문자. 단어 조합시 _ 사용
final int a = 10; //final 필드
static int b = 10; //상수
정수형 : byte(1byte) - short(2byte) - int(4byte) -> long(8byte)
실수형 : float(4byte) - double(8byte) : 기본형은 double
문자형 : char(2byte) - 한글자 만 저장가능 ex) 'A'
👉 String은 문자열이며 객체. "A"
'A' 와 "A"는 완전 다른 것
논리형 : boolean - true, false 값만 가능한다. 형변환 불가 ex) if(true)
값의 범위에 따라 overflow 발생 가능
byte a = 5, b=3;
byte c = a+b; //컴파일 에러
👉 연산을 할때는 최소 int형 크기가 필요
❗ 위 문장을 형변환(Casting)을 이용하여 byte에 저장 가능
👉 데이터 손실 있을 수 있음
byte c = (byte)(a+b);
작은 타입 👉 큰 타입 : 프로모션(자동)
큰타입 👉 작은 타입 : 형변환(Casting)
객체는 형변환이 불가하지만 상속 관계에 있을 때 형변환 가능
만약 class가 존재한다면 그 class의 이름이 타입이 될 수 있다
class Hello{ }
class Cat{ }
int i; //정수형선언
Hello h; // Hello 형 선언
Cat t ;// Cat 타입 변수 선언
중요! String 은 Object 타입이다. String은 문자열 저장.
대입연산자 : =
같다 : ==
같지않다 : !=
1) 산술연산자
2) 대입연산자
3) 논리연산자 : &&, ||
4) 비트연산자
5) 삼항연산자
6) 증감연산자
if(조건식){ //만약 조건식이 true라면 블럭을 실행해라
실행문장;
}
if(조건식){
//실행문장;
}else{
//실행문장;
}
if(조건식){
}else if(조건식){
}else if(조건식){
}...
if(조건식){
}else if(조건식){
}else if(조건식){
}else{
}
1)
switch(비교대상){
// 비교대상에 표현식이 올수 있고 그 값이 case에 비교된다.
//(byte, short, char, int , java 1.7에서 String 지원)
case 값 : 실행문장 ; break;
case 값 : 실행문장 ; break;
case 값 : 실행문장 ; break;
....
default : 실행문장;
}
2) version16에 추가된 기능
switch (비교대상){
case 값, 값, 값,... : 실행문장 ; break;
}
for( ⓛ초기화; ②조건식; ③증감식 ){
④실행문장;
}
초기화;
while(조건식){
실행문장;
증감식;
}
초기화;
do{
실행문장;
증감식;
}while(조건식);
for(;;){
}
while(true){
}
do{
}while(true);
초기화;
while(조건식){
초기화;
while(조건식){
문장;
증감식;
}
증감식;
}