<단점>
실행할 때마다 자료형 포함 문법검사 수행 그러다 보니 할 일이 많음. 매번 수행하므로, 속도 느림.
<장점>
초보자들도 접근하기 쉬움.
(Js는 데이터의 종류를 신경쓸 필요가 없음)
사용이 간편하여, 결과를 바로 확인할 수 있는 분야에 활용도 높음.
ex) 데이터 분석에서의 파이썬 등
js는 html을 바로 제어 가능
<단점>
실행 전 컴파일 과정이 번거로울 수 있음
초보자들에게 진입장벽이 높음
(반드시 변수 선언할 때 자료형의 종류를 결정지어 줘야 함)
<장점>
일단 한 번 자료형 및 문법 검사(compile)가 끝나면 그 결과물을
바이너리 파일(.exe)로 저장해놓고,
이 후 두 번 다시 문법검사 수행하는 것이 아니라 컴파일 결과물로 생성된 기계어를 실행하기 때문에
이 시점부터는 인터프리터 언어에 비해 속도가 훨씬 빠름
좋은 습관 - 파일명 저장 시 직접 작성x, 복사해 쓰기
class DataType {
public static void main (String[] args) //메인메서드
System.out.println("Hello World");
}
}
Java에서는 비슷한 자료형 간에는 서로 형변환이 가능
문자: char 한 문자를 담을 수 있다 ex) char x ='a';
숫자: 정수 byte<short<int<long
1 2 4 8
실수 float<double
4 8
논리값: boolean 1
(java에서는 true=1, false=0 아님)
class DataType2{
public static void main(String[] args){
byte b=5;
short s=7;
byte x=8;
}
}
b=x;
컴파일 가능
대입 연산, 뿐만 아니라 일반적으로 연산자가 동작하기 위해서는 연산 대상이 되는 데이터는 자료형이 동일해야 함
s=b;
컴파일 가능 (자동 형변환)
이 코드는 연산대상이 되는 피연산자들이 동일하지 않기 때문에 java 컴파일러가 자료형을 동일하게 변환시킴
즉, 개발자가 처리한 것이 아니라 컴파일러에 의한 형변환
<자동 형변환>
1) 같은 종류의 자료형 (같은 숫자라는 가족)
2) 작은 것을 큰 자료형에 대입하고 있으므로, 데이터 손실 발생 x
b=(byte)s;
컴파일 가능 (강제 형변환)
개발자가 데이터의 손실을 감안해서라도 원하는 같은 종류의 자료형으로 변환하는 것을 강제형변환 이라고 함
이때 사용되는 ()를 cast 연산자
라고 함
<강제 형변환>
앞에 ( ) 'cast 연산자'로 자료형을 동일하게 맞춰주기
※주의: 형변환이 강제이던 자동이던 언제나 같은 종류끼리만 지원
class DataType2{
public static void main(String[] args){
char c='B'; //컴파일 타임에 java가 귀찮음을 감수하고 유니코드 찾아봄
char d='한'; //컴파일 타임에 java가 귀찮음을 감수하고 유니코드 찾아봄
char k=96; //개발자가 유니코드를 찾아서 직접 넣어준 것으로 생각하여 고마워함
//(96이 문자에 해당하는 유니코드라고 생각함)
}
char m=-30; // char형은 사실상 숫자형은 맞으나,
//여기 담을 수 있는 수는 아스키 포함한 유니코드를 담기 위한 용도이다.
//키고드 체계에서는 음수 지원x 에러 발생
}
s=k;
컴파일 에러 (s는 short k는 char)s=(short)k;
이렇게 강제형변환 필요<참고>
short
: -32,768 ~ 32,767 (-2¹⁵ ~ 2¹⁵ - 1) (signed 16-bit=2byte)
char
: 0 ~ 65,535 (0 ~ 2¹⁶ - 1) (unsigned 16-bit=2byte)