초급
문제1. 자바에서 지역 변수가 무엇인지 설명하고, 왜 특정 블록 안에서만 접근이 가능한지 이야기해보세요.
: 지역변수란 이름그대로 특정 지역에서만 사용할 수 있는 변수라는 뜻이다.
여기서 말하는 지역은 변수가 선언된 코드 블록({})을 말한다.
지역변수는 자신이 선언된 코드 블록 안에서만 생존하고, 자신이 선언된 코드블록을 벗어나면 제거된다.
따라서 이후에는 접근할 수 없다.
문제2. 자동 형변환과 명시적 형변환의 차이점에 대해 간단히 설명하세요.
- 자동 형변환: 작은 범위의 타입에서 큰 범위의 타입으로의 대입을 할때 자동으로 형변환이 일어나는 것을 말한다.
- 명시적 형변환
: 큰 범위에서 작은 범위의 타입으로 대입을 할때는 직접 형변환을 시켜줘야하므로 타입을 직접 적어줘야한다
: intValue = (int) doubleValue ; // 명시적 형변환
중급
문제1. double형 변수와 int형 변수 두 개를 선언하고, 이들을 더해 결과를 출력하는 코드를 작성하세요. 자동 형변환을 고려하여 작성하세요.
public class scopeEx01 {
public static void main(String[] args) {
double doubleValue = 2.0;
int intValue = 1;
double result = doubleValue + intValue;
System.out.println("result = " + result);
}
}
문제2. 다음 코드에서 왜 y 변수는 if 블록 바깥에서 사용할 수 없는지 설명하세요.
public class ScopeTest {
public void testScope() {
if (true) {
int y = 10;
}
// 여기에서 y를 사용할 수 있을까요? 왜 그런지 설명하세요.
}
}
- 변수 y는 사용할 수 없다. y는 if문 안에서 선언되었기 때문에, y의 스코프는 if문 으로 한정된다.
문제3. 실수를 정수로 명시적 형변환하는 메서드를 작성하세요. 메서드는 double형 매개변수를 받아 이를 int로 변환한 결과를 반환해야 합니다.
public class TypeCasting {
public int castToInteger(double value) {
// 명시적 형변환 코드 작성
}
}
-> 코드 작성 후 출력
public class TypeCasting {
public static void main(String[] args) {
TypeCasting typeCasting = new TypeCasting();
int a = typeCasting.castToInteger(10.5);
System.out.println("a = " + a); // a = 10
}
public int castToInteger(double value){
return (int)value;
}
}
고급
문제1. 변수 a, b를 받아 더한 후, 자동 형변환과 명시적 형변환을 활용하여 다양한 타입(float, int, double)으로 변환해 출력하는 메서드를 작성하세요.
public class TypeCasting2 {
public static void main(String[] args) {
TypeCasting2 casting = new TypeCasting2();
int toInt = casting.castToInteger(50.0,10);
float toFloat = casting.castToFloat(50.0,10);
double toDouble = casting.castToDouble(50.1f,10);
System.out.println("toInt = " + toInt);
System.out.println("toFloat = " + toFloat);
System.out.println("toDouble = " + toDouble);
}
public int castToInteger(double a, int b){
return (int) (a+b);
}
public float castToFloat(double a, int b){
return (float)(a+b);
}
public double castToDouble(float a, int b){
return a+b;
}
}
문제2. 스코프와 생명주기의 차이점을 설명하고, 왜 특정 메서드나 블록 안에서만 변수를 제한해야 하는지에 대해 이야기해보세요.
- 스코프는 변수나 함수가 접근할수 있는 범위를 말하고, 생명주기는 변수나 함수의 생성 후 소멸하는 기간을 말한다.
- 스코프는 코드 구조에 따라 정해지고, 생명주기는 실행 시점에 따라 정해진다.
- 변수를 필요한 범위로 한정해서 사용하는 것이 좋다. 메모리를 잘 관리할수있고 더 유지보수 하기 좋은 코드를 만들수있기 때문이다.
문제3. long과 int 타입을 사용하는 두 개의 변수 num1, num2를 더한 후 결과를 short 타입으로 명시적 형변환하는 메서드를 작성하세요. 결과가 올바르게 저장되지 않는 상황에 대해서도 설명하세요.
public class TypeCastingChallenge {
public short addAndCast(long num1, int num2) {
// 명시적 형변환 코드 작성
}
}
public short addAndCast(long num1, int num2){
return (short) (num1+ num2);
}
- 결과의 합이 short의 최대값인 32,767를 넘어서면 오버플로우가 발생해 제대로된 값이 나오지 않는다.
- short 의 범위 : (-32,768 ~ 32,767)
'스터디 > JAVA' 카테고리의 다른 글
섹션9. 배열 (1) | 2024.11.06 |
---|---|
섹션8. 훈련 (3) | 2024.11.05 |
섹션6. 반복문 (4) | 2024.11.03 |
섹션5. 조건문 미션 (1) | 2024.11.02 |
섹션4. 연산자 미션 (1) | 2024.10.31 |