자바 vs 자바스크립트 & 형변환

heeezni·2025년 4월 29일
0

Java 문법

목록 보기
2/14
post-thumbnail

Java vs Javascript

Javascript

  • 인터프리터 (Interpreter) 언어
    브라우저에 탑재되어 있으므로 html 실행 시 함께 실행
    따라서 실행부라는 개념이 없음

<단점>
실행할 때마다 자료형 포함 문법검사 수행 그러다 보니 할 일이 많음. 매번 수행하므로, 속도 느림.

<장점>
초보자들도 접근하기 쉬움.
(Js는 데이터의 종류를 신경쓸 필요가 없음)
사용이 간편하여, 결과를 바로 확인할 수 있는 분야에 활용도 높음.
ex) 데이터 분석에서의 파이썬 등
js는 html을 바로 제어 가능

Java

  • 컴파일 기반 언어 (c,c++,java,c# 등)

<단점>
실행 전 컴파일 과정이 번거로울 수 있음
초보자들에게 진입장벽이 높음
(반드시 변수 선언할 때 자료형의 종류를 결정지어 줘야 함)

<장점>
일단 한 번 자료형 및 문법 검사(compile)가 끝나면 그 결과물을
바이너리 파일(.exe)로 저장해놓고,
이 후 두 번 다시 문법검사 수행하는 것이 아니라 컴파일 결과물로 생성된 기계어를 실행하기 때문에
이 시점부터는 인터프리터 언어에 비해 속도가 훨씬 빠름

Java

  • 클래스명명 규칙: 두 단어의 조합일 경우, 카멜백 기법으로 작성
  • 파일명 규칙: Java는 클래스명과 파일명이 반드시 일치해야 함

좋은 습관 - 파일명 저장 시 직접 작성x, 복사해 쓰기

  • 실행할 수 있는 클래스로 정의하려면(=java.exe의 대상이 되려면)
    반드시 main 매서드 정의해야함
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; 이렇게 강제형변환 필요
    char는 short보다 표현 범위가 넓은 부분이 있음
    → 일부 char 값은 short(음수 포함)로 변환할 수 없음
    → 이렇게 하면 프로그래머가 손실을 감수하겠다는 의도를 명확히 표현한 것이기 때문에 컴파일가능

<참고>
short: -32,768 ~ 32,767 (-2¹⁵ ~ 2¹⁵ - 1) (signed 16-bit=2byte)
char: 0 ~ 65,535 (0 ~ 2¹⁶ - 1) (unsigned 16-bit=2byte)


profile
아이들의 가능성을 믿었던 마음 그대로, 이제는 나의 가능성을 믿고 나아가는 중입니다.🌱

0개의 댓글