- [운영체제 독립성]
자바 프로그램은 자바가 설치된 모든 운영체제에서 실행할 수 있기에 자바 개발자는 특정 운영체제에 맞추어 개발하지 않아도 된다. (운영체제 호환성 문제 해결)- [객체 지향 언어]
자바는 C언어에 객체 지향적 기능을 추가하여 만든 C++과는 달리, 처음부터 객체 지향 언어로 개발된 프로그래밍 언어이다.
JVM : Java Virtual Machine
자바로 개발한 프로그램을 운영체제에 종속받지 않고 컴파일하여 만들어지는 바이트코드를 실행시키기 위한 가상머신이다.JDK : Java Development Kit
자바 개발자에게 무료로 배포하는 소프트웨어
자바 컴파일러 등의 개발도구와 JRE로 구성되어 있어 자바 프로그램을 만들기 위해서는 설치가 꼭 필요하다. |JRE : Java Runtime Environment
자바가 실행될 수 있는 최소한의 파일들이 설치되어 있는 환경
자바 파일을 컴파일하기 위한 도구는 포함되지 않는다. |
Java 언어의 장단점에 대해 설명해주세요.
[장점]
[단점]
Java의 컴파일 과정과 실행과정에 대해 설명해주세요.
자바 프로그램은 컴파일과 실행 단계를 거친다. 자바가 제공하는 컴파일러인 javac
를 사용해서 개발자가 작성한 소스 코드를 컴파일 한다. 컴파일을 진행하며 자바 소스 코드를 바이트코드로 변환하여 자바 가상 머신(JVM)에서 더 빠르게 실행될 수 있게 최적화하고 문법 오류도 검출한다. 이 과정을 거치며 자바 가상 머신이 인식할 수 있는 .class
파일이 생성된다. 이후, 자바가 제공하는 java
라는 프로그램을 사용해 자바 가상 머신은 .class
파일을 실행시켜 프로그램을 작동시킨다.
컴파일을 왜 해야 할까요?
개발자가 작성한 소스 코드를 컴퓨터가 이해할 수 있는 언어(기계어)로 바꿔야 한다.
컴파일 된 파일은 어디에 저장이 되어있을까요?
자바 가상 머신에 저장되어 있다.
변수를 선언하면 컴퓨터의 어디에 저장이 되는걸까요?
변수는 메모리에 저장되고, 데이터 타입에 따라 메모리 공간이 할당된다.
변수 초기화가 필요한 이유는 무엇인가요?
컴퓨터에서 메모리는 여러 시스템이 함께 사용하는 공간이기 때문에 어떠한 값들이 계속 저장된다. 변수를 선언하면 메모리상의 어떤 공간을 차지하고 사용하는데, 그 공간에 기존에 어떤 값이 있었는지는 아무도 모른다. 따라서 초기화를 하지 않으면 이상한 값(쓰레기 값)이 출력될 수 있다.
java : variable a might not have been initialized 는 어떤 오류인가요?
변수를 초기화하지 않고 사용할 경우 발생한다. (컴파일러)
자바 문법이 맞지 않았을 때 발생하는 에러는 무슨 에러인가요?
컴파일 에러가 발생한다.
리터럴(literal) 이란 무엇인가요.
개발자가 직접 입력한 고정된 값이다. 예를 들어 int a = 10;
에서 10
을 말한다.
int의 범위는 대략 어떻게 되나요?
대략 21억
long 변수의 리터럴을 선언할 때 주의할 점은 무엇인가요?
숫자 뒤에 대문자 L 또는 소문자 l 모두 가능하지만, 숫자 1과 착각할 수 있어서 소문자 l은 권장되지 않는다.
변수는 어떤 표기법을 지향하나요.
Camel Case
Java에서 제공하는 원시 타입들에 무엇이 있고, 각각 몇 바이트를 차지하나요?
byte | 128 ~ 127 (1byte, 2⁸) |
---|---|
short | 32,768 ~ 32,767 (2byte, 2¹⁶) |
int | -2,147,483,648 ~ 2,147,483,647 (약 20억) (4byte, 2³²) |
long | 9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (8byte, 2⁶⁴) |
float | 대략 -3.4E38 ~ 3.4E38, 7자리 정밀도 (4byte, 2³²) |
double | 대략 -1.7E308 ~ 1.7E308, 15자리 정밀도 (8byte, 2⁶⁴) |
boolean | true , false (1byte) |
char | 문자 하나 (2byte) |
전위 연산자와 후위 연산자의 차이가 있을까요?
전위(Prefix) 증감 연산자는 증감 연산자를 피연산자 앞에 둘 수 있다. (++a
) 이 경우에는 증감 연산이 먼저 수행한 후 나머지 연산이 수행한다.
후위(Postfix) 증감 연산자는 증감 연산자를 피연산자 뒤에 둘 수 있다. (a++
) 이 경우에는 다른 연산이 먼저 수행된 후 증감 연산이 수행된다.
a=0, b=1 일 때, b = ++a; 와 b = a++ 의 차이점을 알려주세요. ( print(a , b)를 했을 경우)
++a의 경우, 전위 증감 연산자로 증감 연산이 먼저 수행된 후, 나머지 연산이 수행되어 a = 1, b =2를 가집니다.
a++의 경우, 후위 증감 연산자로 다른 연산이 먼저 수행된 후, 증감 연산이 수행되어 a = 1, b =2를 가집니다.
Java에는 어떤 반복문이 있는지 말하고, 각각의 반복문의 특징에 대해 설명해주세요.
while | 조건에 따라 코드를 반복해서 실행할 때 사용한다. |
---|---|
do-while | 조건에 상관없이 무조건 한 번은 코드를 실행한다. 따라서 최초 한번은 코드 블럭을 꼭 실행해야 하는 경우에 사용한다. |
for | 주로 반복 횟수가 정해져 있을 때 사용한다. |
스코프가 필요한 이유에 대해 설명해주세요.
스코프가 없다면 같은 이름을 가진 변수의 충돌이 일어날 수 있고, 또한 함수 내에서 선언한 변수들과 함수 외에서 선언한 변수들 간의 에러에 대한 고려 조건이 발생할 수 있다.
접근 범위, 즉 스코프라는 개념을 만듦으로써 비효율적인 메모리 사용을 막을 수 있고, 코드 복잡성을 줄이는 코드를 만들어 유지보수에 도움을 줄 수 있다.
java : cannot find symbol은 어떤 오류인가요?
변수 이름을 찾을 수 없다는 컴파일 오류이다.
묵시적 형변환이란 무엇이며, 언제 일어날 수 있을까요?
개발자가 직접 형변환을 하지 않아도 직접 형변환이 이루어진다.
작은 범위에서 큰 범위로 캐스팅을 할 때 이루어진다.
명시적 형변환은 언제 해주어야 하나요?
개발자가 직접 형변환을 해줘야 한다.
큰 범위에서 작은 범위로 캐스팅할 때 이루어진다. (오버플로우 문제 발생)
error: incompatible types 은 어떤 에러인가요?
형변환을 할 수 없을 때 발생한다.
→ 호환되지 않는 유형