반응형

#Week 03

 

#ex01

Exam1_1 -> class 컴파일 해보기

Exam1_2 -> 한 소스파일에 여러개의 클래스 블록이 있더라도 class파일은 여러개가 컴파일된다.

Exam2_1 -> class 명과 소스파일명이 같지 않아도 된다.

Exam2_2 -> 단 public class 명은 소스파일명과 같아야 한다.

Exam3 -> 한글이 들어간 소스파일 인코딩 하는 방법(VSC내 터미널에서는 utf8  지원 x)

Exam4 -> 인코딩 한 class 파일 실행하는 방법.

 

#ex02

Exam1 -> 여러줄 주석(traditional comment), 한 줄 주석(end-of-line comment) 사용 법

Exam2 -> 애노테이션에 대한 설명 (ex. @Deprecated ex06 assignment Test04 진행하면서 배웠던거)

Exam3 -> 애노테이션(annotation) 문법, 오버라이드(Override) 문법

 

#ex03

Exam1 -> 리터럴(literal) 자바 언어로 표현한 값 

Exam2_1 -> 정수 리터럴 (10진수, 8진수, 2진수, 16진수 리터럴 사용법)

Exam2_2 -> __ 언더바(자릿수 표시) 리터럴  사용 법

Exam2_3 -> 메모리크기 및 유효 값 범위 리터럴(L,l Integer.MIN_VALUE,Integer.MAX_VALUE, Long.MIN_VALUE)

Exam2_4 -> 2진수로 표현하는 방법 (사인 메그니튜드(Sign-Magnitude) 방식, K-초과(Excess-K))

Exam2_5 -> 1의보수, 2의 보수

Exam3_1 -> 부동소수점 리터럴(e2 , e-5 ...)

Exam3_2 -> 부동소수점 리터럴(f, F, d, D)

Exam3_3 -> 부동소수점 최소값과 최대값(Float.MAX_VALUE, Float.MIN_VALUE)

Exam3_4 -> 부동소수점 리터럴 유효자릿수 (F 7자리, D 15자리)

Exam3_5 -> IEEE754 규칙에 따라 부동소수점 2진수 변환 확인(SUBLIME TEXT 프로그램 hexdump 플러그인 사용)

Exam4_1 -> 문자리터럴( '', \u([\ u] [ucs-2 코드]))

Exam4_2 -> 문자리터럴(유니코드, UCS(Universal Coded Character Set), UTF) 및 (char) 사용

Exam4_3 -> 문자리터럴 명시적 형변환 계산 (int), (char)

Exam5 -> 논리값 리터럴(true, false) 논리값 리터럴 크기 (4바이트 int 저장, 배열 시 1바이트 저장)

Exam6 -> 문자열 리터럴("")

Exam7 -> 이스케이프 문자(escape character) (\n(=0x0a), \r(=0x0d), \f(=0x0c), \t(=0x09), \b(=0x08), \'(=0x27), \"(=0x22), \\(=0x5c)

 

#ex04

Exam1_1 -> 변수 선언

Exam1_2 -> 여러개 변수 선언 방식

Exam1_3 -> 변수에 값 할당

Exam1_4 -> 변수 선언시 값 할당

Exam1_5 -> 여러개 변수 선언 및 값 할당

Exam1_6 -> 여러개 변수 값 할당 및 선언 혼합

Exam1_7 -> 변수 값 변경

Exam2_1 -> 변수 선언 위치

Exam2_2 -> 변수 선언 오류

Exam2_3 -> 변수 중복 선언 오류

Exam3_1 -> 변수 사용 (다른 도구에 값 전달)

Exam3_2 -> 변수 사용 (다른 변수에 값 저장)

Exam3_3 -> 변수 사용 (변수 값 저장않고 사용(출력 등) 불가능)

Exam3_4 -> 변수 사용 (변수 값 저장 않고 사용(다른 변수에 저장 등) 불가능)

Exam4_00 -> 변수의 종류(자바 원시 타입 변수(primitive variable), 래퍼런스 변수(reference variable)

Exam4_11 -> 변수에 맞는 메모리 준비(정수)

Exam4_12 -> 변수에 맞는 메모리 한계(정수)

Exam4_13 -> 변수가 다른 메모리 저장(값의 크기에 상관없이 같거나 큰 크기의 메모리이어야 한다.)

Exam4_21 -> 4바이트 부동소수점 변수 및 유효자릿수 7자리

Exam4_22 -> 8바이트 부동소수점 변수 및 유효자릿수 15자리

Exam4_23 -> 4바이트, 8바이트 부동소수점

Exam4_24 -> 4바이트, 8바이트 부동소수점 유효자릿수 확인

Exam4_25 -> 부동소수점 합산으로 인해 유효자릿수 넘어가는 경우 확인

Exam4_26 -> 4바이트 부동소수점에 8바이트 부동소수점 값 넣기 // 불가능

Exam4_31 -> UCS-2 char는 2바이트 메모리

Exam4_32 -> char에 문자 저장하는 방법

Exam4_33 -> 문자리터럴을 char와 int 변수에 넣었을 때

Exam4_34 -> 명시적 형변환을 통해 문자 출력하기

Exam4_41 -> 논리값 리터럴 4바이트

Exam5_1 -> 배열 선언 방법 : 메모리종류[] 메모리이름 = new 메모리종류[개수]

                데이터타입[] 변수명 = new 데이터타입[개수];

Exam5_2 -> 배열 메모리에 접근 법 : 배열변수[인덱스] = 값;

Exam5_3 -> 배열 선언문 분석 (배열 레퍼런스와 배열 인스턴스)

Exam5_4 -> 배열 래퍼런스만 별도로 선언 가능

Exam5_5 -> 배열 인스턴스 주소를 다른 래퍼런스에 담을 수 있다. int arr2 = arr1

Exam5_6 -> 배열 메모리의 기본 값 (정수 : 0, 부동소수점 : 0.0, 논리 : false, 문자 : '\u0000', 주소 : null)

Exam5_7 -> 배열 메모리 초기화 ( int arr2[] = new[]{100, 90, 80, 70, 60} )

Exam5_8 -> 배열 인스턴스와 가비지

Exam6_1 -> 상수 사용 법(final int, final float)

Exam7_1 -> 변수의 종류(인스턴스 변수, 클래스 변수, 로컬변수, 파라미터)

Exam7_2 -> 변수별 사용 범위

Exam8_1 -> 변수 중복 선언 불가/가능 범위(인스턴스 변수, 클래스 변수)

Exam8_2 -> 변수 중복 선언 불가(로컬 변수)

Exam9_1 -> 형변환 (정수 -> 부동소수점) 유효자릿수 확인

Exam9_2 -> 형변환 (부동소수점 -> 정수) // 불가능

Exam9_3 -> 형변환 (부동소수점 -> 정수) // 명시적 형변환을 통한

Exam9_4 -> 형변환 (명시적) // 큰 메모리 값과 작은 메모리 값에 저장

Exam9_5 -> 명시적 형변환이 불가능한 경우

 

#ex05

Exam1_1 -> 산술연산자 소개

Exam1_2 -> 산술연산자 우선순위 ()   >    *, /, %   >   +, -

Exam1_3 -> JVM의 산술 연산 // 4바이트 정수로 변환해서 계산

Exam1_41 -> 연산 결과 타입 // int + int = int , float + float = float 단, float은 유효자릿수 확인

Exam1_42 -> 연산 결과 타입 // int + int = long //연산 후 데이터타입을 늘리는 건 해결이 안된다.

Exam1_43 -> 연산 결과 타입 // 연산 전 데이터 타입을 늘리는 방법은 해결이 된다.

Exam1_5 -> 암시적 형변환 // byte short 계산시 int로 변환해서 계산 한다.

Exam1_6 -> 암시적 형변환과 연산 우선순위

Exam1_7 -> 명시적 형변환 // 큰 값을 작은 데이터 타입에 넣을때는 앞자리가 다 잘린다.

Exam2_1 -> 관계 연산자 (<, <=, >, >=, ==, !=)

Exam2_2 -> 부동소수점 비교 (EPSILON)

Exam3_1 -> 논리연산자 (&&, ||, !(not), ^(XOR; exclusive-OR)

Exam3_2 -> 논리연산자 (&, |)

Exam3_3 -> 논리연산자 (&와 && 차이)

Exam3_4 -> 논리연산자 (|와 || 차이)

Exam3_5 -> 비트연산자 (&, |, ^, ~)

Exam3_6 -> 조건문과 비트연산 int r2 = 10 & 20; // OK , int r = 10 && 20; // 불가능

Exam4_1 -> 비트 이동 연산자 (<<)

Exam0411 -> 비트 이동의 유효 범위 

                  // int 값에 대한 비트 이동은 0~31 long은 0~63까지이다.

                  // 유효범위를 벗어나면 int는 하위 5비트 long은 하위 6비트만 유효하다.

                  // 공식) n << s

                  // n이 int 타입이라면, s & 0b11111 = 비트이동

                  // n이 long 타입이라면, s & 0b111111 = 비트이동

                  // ex) 3 << 33

                  // n = 00000000 00000000 00000000 00000011 = 3

                  // s = 00000000 00000000 00000000 00100001 = 33

                  // 비트이동 => s & 0b11111

                  //      00000000 00000000 00000000 00100001 = 33

                  //      00000000 00000000 00000000 00011111 // 하위 5비트만 유효하다고 얘기함.

                  //      ----------------------------------------------                 

                  //      00000000 00000000 00000000 00000001 = 1

                  // 즉 int 계산시 3 << 1 이나 3 << 33의 결과나 3 << 65의 결과 모두 같다. (32배수)

                  // long 계산시 3 << 1 이나 3<<65의 결과가 같다. (64배수)

Exam4_2 -> 비트 이동 연산자 (>>)

Exam4_3 -> 비트 이동 연산자 (>>>)

Exam4_4 -> 비트 이동 연산자 (비트연산자 응용1 : i 변수에 들어있는 값을 순서대로 1바이트씩 출력하는 법)

Exam4_5 -> 비트 이동 연산자 (비트연산자 응용2-1 : 바이트에 false/true 저장하기)

Exam4_6 -> 비트 이동 연산자 (비트연산자 응용2-2 : 저장한 false/true 값 불러오기)

Exam5_1 -> 조건연산자 (? :)

Exam6_1 -> 증감연산자 : 후위(post-fix) 증가 연산자

Exam6_2 -> 증감연산자 : 후위(post-fix) 감소 연산자

Exam6_3 -> 후위 증감 연산자 i = i++; 확인

Exam6_4 -> 후위 증감 연산자 우선순위 ++, --   >   *, /, %   >    +, -   >   =

Exam6_5 -> 증감 연산자 : 전위(pre-fix) 증가 연산자

Exam6_6 -> 증감 연산자 : 전위(pre-fix) 감소 연산자

Exam6_7 -> 전위 증감 연산자 i = ++i; 확인

Exam6_8 -> 전위 증감 연산자 우선순위 (++y)++; // 오류

Exam7_1 -> 할당 연산자 (+=  -=  *=  /=  %=  &=  |=  ^=  <<=  >>=  >>>=)

 

#ex06

Exam1_1 -> if 조건문

Exam1_2 -> if 조건문엔 {} 사용 가능

Exam1_3 -> if문의 조건은 boolean 데이터여야만 한다. if(a == 100) //가능 if(a = 100) //불가능

Exam1_4 -> else는 if문 없이 단독으로 사용 불가능

Exam1_5 -> else는 가장 가까운 if문에 소속된다. // {}를 사용하면 {}적용하고나서, 가장 가까운 if문

Exam1_6 -> if ~ else if if ~ else if ~ else if ~ else // else if는 한줄에 쓰자

Exam2_1 -> switch 사용법

Exam2_2 -> case를 사용하여 if문보다 간단하게 정리 가능 // 단 조건에 맞아야 함.

Exam2_3 -> case의 값은 int 정수(byte,short,int,char), 문자열, 특별한 상수 Enum 타입만 가능

Exam2_4 -> enum으로 상수를 변수 선언하여 변수를 상수처럼 사용할 수 있다. // 추후 자세히 설명

Exam3_1 -> while 반복문 사용법

Exam3_2_1 -> while문 continue 사용법 // 조건에 맞지 않는 애들은 건너뛰고 계속 반복한다.

Exam3_2_2 -> while문 break 사용법 // 즉시 가장 가까운 반복문을 종료하고 나간다.

Exam3_3 -> break 라벨 사용법 // 라벨을 사용하여 원하는 반복문(2개 이상)을 즉시 종료하고 나간다.

Exam3_4 -> do while문 // do를 먼저 실행 while 조건에 맞으면 반복 (while - 0번 실행 do while - 1번 실행)

Exam4_1 -> for 반복문 사용법

Exam4_2 -> for문 변수 사용 범위 // 반복문 안의 변수는 반복문 벗어나면 사용 불가

Exam4_3 -> for문과 배열 // for (String name : names) // 배열 끝날때까지 계속 넣어줌.

Exam4_4 -> for문과 컬렉션 API

 

#ex07

Exam1_1 -> method // 명령어를 기능 단위로 관리하기 쉽게 별도로 분리하여 묶어 놓은 것.

Exam1_2 -> 메소드(=function) 사용 후

Exam1_3 -> 메소드를 사용하여 리팩토링을 하는 이유 

Exam2_1 ->  파라미터 선언// 함수 블록을 실행할 때 외부로부터 받은 값을 저장할 변수 선언.

                 아규먼트(argument)? // 파라미터 변수에 넘겨주는 값

Exam2_2 -> 파라미터 // 아규먼트를 받는 변수

Exam2_3 -> 메소드 // 메서드 블록을 실행한 후 값을 리턴하는 메서드. // 값은 한개만 리턴 가능

                여러 개의 값을 리턴하고 싶다면, 배열에 담거나 객체에 담아서 리턴

Exam2_4 -> 여러개의 아규먼트를 이용하여 메서드 확인

Exam2_5 -> 가변 파라미터 // [리턴타입=void자리] 메서드명(타입... 변수) {...} 

                가변 파라미터는 배열에 담지 않은 낱개의 값을 받을 수 있고, 배열을 받을 수도 있다.

                //아규먼트가 아닌 여러개의 낱개의 값이다.

Exam2_6 -> 배열파라미터 // void 메서드명(String(or int)[] 변수) {...}

                 배열파라미터는 배열에 담지 않은 낱개의 값을 받을 수 없다.

Exam2_7 -> 배열 파라미터는 여러개의 아규먼트를 넘겨 받을 수 있다.

Exam3_1 -> call by value // 자바에서는 primitive data type에 메모리 주소를 넘기는 방법이 없다.

                 다른 메소드를 만들어서 변수 a와 b의 값을 바꿔주더라도

                 메인 메소드의 a와 b 변수와 다른 변수라서 바뀌지 않는다. // 해결법이 Exam3_3

Exam3_2 -> call by reference // 배열 인스턴스(메모리)를 넘기는 것이 아니라 주소를 넘기는 것이다.

Exam3_3 -> call by reference // 메인 메소드에서 a와 b 변수의 값을 바꾸려면 객체에 담아서 넘기면 된다.

                 Myobject라는 class 설계도를 만들고, 해당 오브젝트의 주소를 담고 있는 레퍼런스를 통해

Exam4_1 -> JVM 메모리 구동 1 // Method Area, heap, Stack // 변수가 선언된 메소드 확인하기

Exam4_2 -> JVM 메모리 구동 2 // 배열과 new가 선언된 경우 영역 확인하기

Exam4_3 -> 레퍼런스(인스턴스의 주소)를 이용하여 변수 사용하는 법

Exam4_4 -> stack 메모리 사용

Exam4_5 -> 재귀호출에서 사용하는 값은, 다른 변수라고 생각 // 새로운 레퍼런스와 새로운 아규먼츠를 생성한다)

Exam4_6_1 -> 스택 오버플로우 오류

Exam4_6_1 -> 스택 오버플로우 오류2

Exam5_1 -> 메소드 // public static void main(String[] 변수명은상관없다)

Exam5_2 -> 아규먼트 // java -cp bin Exam05_2 aaa bbb cccc

 

# Class의 용도

1. 사용자 정의 데이터 타입 // 메모리 구조 설계

2. 메서드 분류 // 서로 관련된 일을 하는 메서드를 유지보수하기 쉽게 분류

반응형

+ Recent posts