일단 씻고 나가자
23.03.03 본문
2023. 03. 03 금요일
- [Java] String format을 사용하는 방법? 무조건 n의 자리를 맞추려면 어떻게 설정?
: String.format( “”, var) 형태로 사용한다.
“” 안에는 문자열과 뒤의 변수 내용을 출력할 그릇이 필요한데, 그 그릇은 %를 쓰고 변수형에 따라 다르게 사용한다. (ex. 정수라면 %d, 문자열이라면 %s)
출력되는 내용을 오른쪽으로 n의 자리로 맞추려면 (n이 2일 때 3 -> 03으로 출력해줌) 빈공간을 채울 값을 먼저 쓰고 총 몇 자리인지 작성 후 변수형을 써주면 된다.
(ex. 3자리를 맞추며 빈자리는 0으로 정수형으로 쓰려면 %03d)
* 왼쪽 자리로 맞추려면 숫자 앞에 –를 붙이면 된다.
* 이때 값이 자릿수를 초과한다고 해도 잘리지 않고 잘 출력된다.
* 소수점 n자리 미만을 제거 및 n+1 자리에서 반올림 하려면 %.nf 로 쓰면 됨.
+ 이유는 모르겠지만 %13d 의 경우 빈자리가 1로 채워지지 않고 공백이 13칸 나온다. 나중에 찾아보자.
- 대문자 A와 소문자 a의 아스키코드는?
: A(65) / a(97)
- 자바 프로그램의 작성/실행 과정 (컴파일 과정)?
컴파일러는 코드를 컴퓨터가 읽을 수 있도록 번역해주는 기기.
각 운영체제별 JVM이 번역된 바이트 코드를 읽어서 실행.
- 업캐스팅과 다운캐스팅에 대한 설명과 조건?
: 부모 레퍼런스에 자식 객체를 담는 것이 업캐스팅이며, 반대는 허용되지 않음.
업캐스팅된 객체를 다시 자식 레퍼런스에 담는 것을 다운캐스팅이며, 명시적 형변환이 요구.
- 추상 클래스란 무엇이며 왜 사용되는지, 조건과 특징?
: abstract 키워드를 사용하여 class 앞에 사용되는 클래스.
반드시 구현해야 하는 부분에 대해 명시적으로 표시하기 위해 사용된다.
abstract class 클래스명{} 처럼 사용되며, 반드시 하나 이상의 추상 메소드가 있어야 한다.
추상 클래스 자체는 불완전한 클래스이기 때문에 객체 생성이 불가능하다.
또한 추상 클래스의 뒤에는 중괄호가 붙을 수 없다. ( abstract void func(); )
추상 클래스는 추상 클래스를 별도의 구현 없이 상속 받을 수 있고, 업캐스팅이 가능하다.
- 인터페이스의 특징 3가지?
상수와 추상메소드로만 구성돼있다. (final로 선언하지 않아도 자동 상수가 된다.)
extends로 상속 이후 implements로 구현 가능하다.
implements 다중 구현이 가능하다. (ex. implements inter1, inter2 ..)
- 내부 클래스란 무엇이며 특징과, 내부 클래스 종류 4가지의 설명과 선언 방식?
: 내부 클래스란 클래스 안에 존재하는 클래스를 말한다.
내부 클래스에선 외부 클래스 멤버에 접근 가능하지만, 역은 안 되며
Outer.this.var = 같은 방식으로 접근한다.
인스턴스 클래스(instance class)
클래스 내부에 다른 클래스를 선언해놓음.
Outer.Inner 변수명 = new Outer().new Inner();
정적 클래스(static class)
클래스 내부에 static 클래스를 선언해놓음.
static 선언이 됨과 동시에 메모리에 바로 올라가므로, Outer의 변수에 접근할 수 없다.
(Outer은 static이 아니므로)
Outer.Inner 변수명 = new Outer.Inner(); // static이라 외부 객체를 생성할 필요는 없다.
지역 클래스(local class)
메소드 안에서 정의되며, defaut, final, abstract로만 선언 가능하고 해당 메소드 안에서만 객체 생성이 가능하다. (메소드 실행이 끝나면 지역 클래스가 메모리에서 사라짐).
public void func() { class Local {..} Local local = new Local() }
익명 클래스(anonymous class)
선언과 동시에 객체가 생성되며 일회용이고, 이름이 없음.
Anonymous 변수명 = new Anonymous() { @Override 구현해야 할 함수() {..} };
- 컴퓨터에서 실수를 표현하는 방법과 종류 두 가지 설명?
: 정수부에 관한 부분은 2를 나누며 역순으로 표현하고, 소수부는 2를 곱해가며 정수 부분을 제거하며 정방향으로 표현한다. 나머지가 0일 때 종료한다.
(ex. 0.625의 경우 0.25 * 2 = (0).5 / 0.5 * 2 = (1).0 따라서 0.01)
1. 고정 소수점 (Fixed Point)
소수점이 찍힐 위치를 미리 정해놓고 소수를 표현하는 방식.
표현이 단순하지만 표현의 범위가 너무 적다.
부호(1 bit) + 정수(15 bit) + 소수(16 bit)
2. 부동 소수점 (Floating Point)
가수(실수의 실제 값)와 지수(크기를 표현. 가수의 어디쯤 소수점이 있는지)부로 표현하여,
1.xx * 2^n 의 모형으로 정규화를 진행한다. (이때 n은 소수점이 이동한 칸수이고 정수부는 무조건 1이 되어야 하며, 정수부가 0일 땐 오른쪽으로, 1 이상일 땐 왼쪽으로 이동한다.)
이때 전체 수의 음,양의 여부는 부호 비트가 확인하지만 지수의 음수 여부는 확인할 수 없기 때문에 무조건 1이 되는 정수부는 hidden bit라 하고 작성하지 않으며, bias 수로 127을 더한 값을 사용한다. (이렇게 되면 지수가 양수일 경우 지수부의 첫 숫자는 1이 되며, 음수일 경우 0이 된다.)
https://gsmesie692.tistory.com/94
- MVC란 무엇이며 과거와 어떤 차이?
: Model(넘겨줌), View(화면), Controller(뒷 단) 세 가지의 준말이며 과거에는 View와 Controller가 한 화면에서 실행됐지만 (ex. JSP) 최근엔 두 부분을 나누어 처리한다.
- MVC를 사용했을 때의 spring에서 동작 방식을 설명?
: Controller 코드 부분에서 Model 클래스의 addAttribute(“내용”, 키 변수)를 이용하여 값을 전달하면, View(html) 부분에서 ${키 변수}를 이용하여 Model에서 키에 해당하는 값을 보임.
Controller에서 return한 이름의 파일을 resource/templates에서 찾아서 랜더링 후 출력.
정적일 때는 변환이 없었지만, Thymleaf가 처리 후 html부분을 알맞게 변환하여 보여준다.
- cmd에서 폴더를 생성하는 명령어, 파일 리스트 출력 명령어, git을 초기화하는 명령어?
: mkdir, dir, git init