1. 나머지 연산자 % 를 사용하지 말고 나머지를 구하는 연산식은?
public static void main(String[] args){
int x = 10;
int y = 3;
int z = x/y;
System.out.printf("%d를 %d로 나눈 나머지 : %d\n", x, y, x-(z*y));
}
2. &, |, ^ 의 결과 예측. 왜 결과가 그렇게 나오는지 분석.
int ff = 4 & 5
int gg = 4 | 5
int hh = 4 ^ 5
4 = 0000 0100
5 = 0000 0101
& = 0000 0100
& 연산자는 두 비트 모두 1일때 1을 반환하기 때문에 두 비트 모두 1인 부분만 1이 반환되어서
0000 0100 으로 출력이 되고 10진수로 다시 변환하면 결과값은 4이다.
| = 0000 0101
| 연산자는 두 비트중 하나라도 1이 있으면 1을 반환하기 때문에 1이 있는 부분들이 1을 반환하여서
0000 0101로 출력이 되고 결과값이 5가 나오게 된다.
^ = 0000 0001
^연산자는 두 비트가 달라야 1이 반환되므로 유일하게 다른 끝자리만 1이 반환되어서
0000 0001로 출력이 되고 결과값이 1이 나오게 된다.
3. 다음 문장을 보고 결과를 예측. 결과의 원인 또는 이유를 명시.
int a = 4;
int b = 5;
int c = ++a + ++b;
int d = ++a + b++;
int e = a++ + b++;
int f = ++a + ++b;
int g = f;
g *= a;
int c = 11
a는 선증가이기 때문에 a의 값 4에서 5로 먼저 증가하게 되고 b 역시 선증가 이기때문에
6으로 증가한 다음 계산이 되어 두 값의 합은 11이다.
int d = 12
d에서도 a는 선증가이기 때문에 c로 인해 증가한 5에서 한번 더 증가한 6이 되고 b같은 경우는
후 증가이기 때문에 그대로 6인 상태로 결과값이 먼저 나온다.
a=6, b=6이기 때문에 결과값은 12가 되고 결과값 도출 후 b는 7로 증가한다.
int e = 13
a,b모두 후 증가기 때문에 d의 연산이 끝난 후 증가한 b값인 7을 더해서 13의 결과가 나오고
결과 도출 후 a,b모두 1씩 증가시켜 a=7, b=8이 된다.
int f = 17
a,b모두 선 증가 이므로 a=8, b=9가 되어 17이 된다.
int g = 136
g의 값은 f의 값 바로 밑에서 f의 값과 같은 17로 처음 도출된다.
그러나 그 아래에서 g *= a 로 g값과 a값을 곱해야 하므로 17 * 8 = 136이 최종 g의 값이다.
*=는 연산자 왼쪽과 오른쪽을 곱한 뒤 왼쪽의 값에 대입시키는 것이다.
4. 프레임워크란?
랄프존슨 교수는 프레임워크를 "소프트 웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이
가능하게끔 일련의 협업화 된 형태로 클래스들을 제공하는 것" 이라고 정의했다.
프레임워크는 라이브러리와 달리 애플리케이션의 틀과 구조를 결정할 뿐 아니라,
그 위에 개발된 개발자의 코드를 제어한다.
프레임워크는 구체적이며 확장 가능한 기반 코드를 가지고 있으며, 설계자가 의도하는 여러
디자인 패턴의 집합으로 구성되어 있다.
사용자와 실제 구현하고자 하는 기능 사이에, 사용자로 하여금 구현하고자 하는 기능을
쉽게 제공해주는 중간계층이며 라이브러리랑 비슷한 점이 있다.
그런데 구분해서 프레임워크라고 나누는 이유는 프레임워크에는 라이브러리의 뼈대가 되는
클래스들과 그 클래스들의 관계로 만들어진 일종의 '설계의 기본 틀'이 추가된다는 점이다.
설계의 틀이라는 말은 '확장 가능한 기반코드나 재사용 가능한 형태의 협업화된 클래스들'
이라는 말과 같은 뜻이다.
라이브러리 같은 경우는 설계를 대신 해주지 않고 개발자가 필요한걸 가져다 쓰는 대상이지만
프레임워크는 프레임워크의 제작자가 만들어 놓은 '기반코드'라는 것이 있다.
이 코드 혹은 클래스들은 차후 사용자들에 의해 확장 될 것을 충분히 고려해서 만들어졌기 때문에
이 기반을 가지고 살을 덧붙여 자기만의 프로그램을 완성해 나가면 되는 것이다.
정리하자면 설계의 기반이 되는 부분을 기술한 확장 가능한 기반코드와 사용자가 이 코드를
자기 입맛대로 확장하는데 필요한 라이브러리, 이 두가지 요소가 통합되어 제공되는 형태를 말하며,
사용자가 이를 이용해 일정 수준 이상의 품질을 보장받는 코드를, 비교적 빠른 시간에 완성 및
유지보수 할 수 있는 환경을 제공해 주는 솔루션으로 '기본설계나 라이브러리는 제공이 되니
개발자는 하고싶은 기능 구현에만 전념' 이라는 취지에서 만들어 진것이다.
5. tools vs framework vs IDE 차이점
tools같은 경우는 장치나 시스템에 보다 쉽게 엑세스 하기 위해 사용할 수 잇는 도구 그룹이다.
코드 라이브러리가 아닌 응용프로그램이다.
framework는 하나에 집중된 기능이 아닌 많은 서비스를 제공하는 큰 라이브러리 또는
라이브러리 그룹이다.
종종 작업의 일부를 수행하기 위해 라이브러리 코드는 사용하는 응용프로그램을 작성하는 대신
자신의 코드를 작성하는 완전한 기반을 제공한다.
IDE는 통합개발환경이다.
응용프로그램 컴파일 및 디버깅에 대한 추가지원을 제공하는 텍스트 편집기 이다.
'JAVA' 카테고리의 다른 글
별찍기, 구구단, 화폐단위 계산 (1) | 2020.04.28 |
---|---|
메모리구조 용어정리 (1) | 2020.04.28 |
빌드(Build) (1) | 2020.04.28 |
변수, 상수, 연산자, 초기화, 대입, 선언 (0) | 2020.04.28 |
메모리구조 (0) | 2020.04.28 |