basicJAVA/100. 연습문제

Exam 01

unemo 2020. 10. 12. 19:25
반응형
package z_exam;

public class Exam_01 {
	public static void main(String[] args) {
		
	/*
	[2-1] 다음 표의 빈 칸에 8개의 기본형(primitive type)을 알맞은 자리에 넣으시오
	
		 			1byte	2byte	4byte	8byte
		 	논리형	boolean	
		 	문자형			char
		 	정수형	byte	short	int		long
		 	실수형					float	double
		 	
		 	
	[2-2] 다음의 문장에서 리터럴, 변수 ,상수, 키워드를 적으시오
	
			int i = 100;
			long l = 100L;
			final float PI = 3.14f;
			
			- 리터럴 : 100, 100L, 3.14f 
					리터럴은 "값"이니까
			- 변수 : i, l, PI(오답)
					PI는 상수. 상수도 변수의 한 종류니까
			- 키워드 : int, long, final, float
					키워드=reserved word 예약어! 보라색으로 보이는게 예약어 
			- 상수 : PI
			
			
	[2-3] 다음 중 기본형(primitive type)이 아닌 것은?
	
			1. int
			2. Byte
				java는 대소문자를 구별한다. byte가 기본형이고 Byte는 아님
			3. double
			4. boolean
	 
	 
	[2-4] 다음 문장들의 출력 결과를 적으세요
	
			System.out.println("1"+"2"); 
				String+String=String "12"
				
			System.out.println(true+"");
				boolean+String=String+String=String
				"true"+""="true"
				
			System.out.println('A'+'B'); //오답
				char(2byte) + char(2byte) 니까 4byte
				4byte보다 작은건 그냥 int로 변환이 된다고 했으니까
				문자'열'이 아닌 문자와 문자와의 덧셈은 int형으로 변환 후 덧셈
				char+char=int+int=65+66=131
				
			System.out.println('1'+2);
				char+int(기본형이니까)= char(2byte)+int(4byte) 
				더 큰쪽타입인 int로 변환후 덧셈
				char+int= int+int= 49+2 = 51
			
			System.out.println('1'+'2');
				char + char = 
			
			System.out.println(4+24.3715F);
				int+float=더 큰 쪽을 따라가는게 일반적인 계산= float+float
				4f+24.3715f=28.3715f
			
			System.out.println('A'+3.14); (오답 double이 대표형이니까 double로)
				char+float=더큰쪽을 따라가는게 일반적인 계산 = float+float
				'A' > float형태로 > 65.0
				65.0 + 3.14 = 68.14f
				
			System.out.println('J'+"ava");
				char+String= 더큰 String을 따라가야함.String은 웬만한거 다 String으로 바꿈
				String + String = "J" + "ava" = "Java"
				
			System.out.println(true + null);
				boolean + null = 오류
				왜? null은 참조형 변수에만 할당될수있고, 다른타입끼리의 연산을할때 사용하는 형변환은
				기본형끼리만 사용가능하기때문에 오류가 난다. (오답. 연산은 기본형들끼리만 가능해서
				특이하게 string만 참여가능한것.오류)
			
			
	[2-5] 키워드가 아닌 것은? (모두 고르시오)
	
			키워드 = reserved word= 예약어 = 보라색으로 뜨는 것
			
			1. if 
				예약어가 맞다
				
			2. True 
				대소문자를 구분하므로 true가 예약어. 2번은 키워드가 아니다
			
			3. NULL 
				역시 대소문자 구분, null이 예약어. NULL은 키워드가 아니다
			
			4. Class 
				예약어가 아니다. 대소문자 구분하므로  class가 키워드
			
			5. System 
				예약어가 아니다. 예약어는 클래스명으로 사용할수없음 System은 앞글자가 대문자인 클래스명
				
			
	[2-6] 다음 중 변수의 이름으로 사용할 수 있는 것은? (모두 고르시오)
			
			1.$ystem
				특수문자중 _와 $는 변수명으로 사용가능하다. 가능
				
			2.channel#5
				특수문자는 _와 $만 사용가능하므로 #가 들어갔으므로 불가
				
			3.7eleven
				변수명에 숫자가 들어가도 되지만 첫글자는 숫자로 할 수 없으므로 불가
				
			4.If
				예약어인 if와 대소문자가 달라 겹치지는 않지만, 개발자들끼리의 약속으로
				클래스명만 첫글자를 대문자로 할수있으므로 변수이름으로는 불가
				(오답) 그냥 됨
			
			5.자바
				변수명은 한글로 하지않는게 개발자들과의 약속이다.
				
			6.new
				소문자이긴 하지만 new라는 예약어가 이미 존재하기때문에 변수명으로는 불가
				
			7.$MAX_NUM
				변수명에 사용가능한 특수문자만 들어갔지만 ($,_)
				모두 대문자로 쓰고 단어사이를 언더바로 구분하는건 변수의 한 종류인
				상수에게 적용된다. 변수명으로는 불가 
			
			8.hello@com
				특수문자는 _와 $만 가능하므로 변수명으로 불가
				
				
	[2-7] 참조형 변수(reference type)과 같은 크기의 기본형(primitive type)은? (모두 고르시오)
			[hint] 참조형 변수의 크기는 4byte이다.
			
		
			1. int
				int는 4byte이다. 답이다.
				
			2. long
				long은 8byte이므로 다르다
			
			3. short
				short는 2byte이므로 다르다
			
			4. float
				float는 4byte이므로 답이다.
			
			5. double
				double은 8byte이므로 다르다.
				
				
	[2-8] 다음 중 형변환을 생략할 수 있는 것은? (모두 고르시오)
			
			byte b = 10;
			char ch = 'A';
			int i = 100;
			long l = 1000L;
			
			1. b = (byte)i;
				int(4byte)형태인 i가 더 작은 byte(1byte)로 대입되어야하므로
				형변환은 생략될 수 없다.
			
			2. ch = (char)b;
				byte(1byte)형태인 b가 char(2byte)형태로 대입되어야 하므로
				더 큰형태로의 대입이지만 byte에서 char는 화살표가 이어져있지 않기때문에
				cast연산자는 생략될수없다.
			
			3. short s = (short)ch;
				char(2byte)형태인 ch가 같은 크기의 byte로 대입되어야한다.
				하지만 byte>short>int>long방향의 화살표와
				char>int 방향의 화살표는 이어지지않으므로
				(화살표방향으로 가는건 생략가능)
				cast연산자는 생략할수없다.
			
			4. float f = (float)l;
				long(8byte)를 float(4byte)에 대입해야 하므로 
				cast연산자를 생략할 수 없다.
				
			5. i = (int)ch;
				char(2byte)를 int(4byte)에 대입해야 하는데
				char>int이므로 cast 연산자를 생략가능하다.
				
				
	[2-9] char 타입의 변수에 저장될 수 있는 정수 값의 범위는?
			
			char = 2byte = 16bit 
			char는 문자형으로 음수값을 표현할 필요가 없다.
			따라서 0~2^16-1까지 저장가능하다.
			
			
	[2-10] 다음 중 변수를 잘못 초기화 한 것은? (모두 고르시오)
			
			1. byte b = 256;
				byte의 표현범위 : byte = 1byte = 8bit. 
				byte는 정수형으로 음수값까지 표현해야하므로
				-2^7~2^7-1까지 표현할 수 있다.
				=-128~127까지가 byte의 표현범위
				따라서 정수 256은 byte가 표현할 수 없다.
				
			2. char c = '';
				char는 문자형. 한글자 단위의 문자를 나타낸다.
				문자가 0개이거나 2개도 표현할 수 없으므로
				공백없이 ''인 값은 char로 표현할 수 없다.
				
			3. char answer = 'no';
				char는 문자형이고 한글자 단위의 문자를 나타낸다.
				no는 두 글자이므로 문자가 아니라 문자'열'이 된다.
				따라서 char로 표현할 수 없다.
				
			4. float f = 3.14
				3.14같은 실수의 기본 표현형은 double이다. 따라서
				float를 쓰려면 3.14뒤에 f를 붙여줘야한다. (대문자F로하자)
				float f = 3.14f; <세미콜론도 없었다!
				
			5. double d = 1.4e3f;
				1.4e3f는 1.4e3이라는 16진수값이 float형으로 표현된것이므로
				float(4byte)를 double(8byte)에 대입하려면
				따로 cast연산자를 써주지 않아도 된다.
				
				
					
			
			
	*/
		byte b = 10;
		char ch = 'A';
		int i = 100;
		long l = 1000L;
		
		
		System.out.println('1'+2);
		System.out.println(4+24.3715F);
		System.out.println('A'+3.14);
		System.out.println('J'+"ava");
		//System.out.println(true + null);
		i = ch;
		double d = 1.4e3f;
		
		
	}

}
반응형

'basicJAVA > 100. 연습문제' 카테고리의 다른 글

Exam 04  (0) 2020.10.20
Exam_03 추가과제  (0) 2020.10.16
Exam_03  (0) 2020.10.16
Exam 02  (0) 2020.10.12