변수=변하는수
변수명은 소문자로 시작해야한다. 특수문자($,_제외),숫자로 시작하면 오류남.
키워드는(static, void 등) 변수명으로 사용불가
2진수 음수로 바꾸기 - 자리를 0↔1 바꿔주고 마지막에 1을 더해준다. = 2의보수법
int num1=-10; //10앞에 -가 붙으면 2의보수법을 취해서 (앞에 0101 덩어리가 붙어서)나타난다.
정밀도
float f = 0.123456f;//소숫점 6자리까지
double d = 0.123456789012345d;//소숫점 15자리까지
실무에서는 소숫점이 나온다면 둘째자리에서 반올림해야 좋다. 오류때문에
타입
왜정수와 실수로 나눠놨을까? 왜 오차가 생길까? 왜 정수와 실수로 나눠놨을까? 실수는 왜 오차가 생길까?
-실수하고 정수는 2진수로 표현하는 방법이 다르기때문에
-유한한 실수를 무한한 메모리에 넣어야 하기 때문에 가장 가까운 수로 나타난다.
short끼리 더했을때 값은 오류?
class Hello{ public static void main(String[] args) { byte num1 =11; byte num2 =22; int result = num1+num2; System.out.println(result); //자바는 32bit(4byte)를 전제로 만듦. //선이 32개있는데 int는 32개고 short는 16개임 //선이 32개면 무조건 32개를 다 써서 보내야함(하드웨어 특성) //따라서 byte,short끼리의 연산은 다 오류남 //해결 short result = (short)(num1+num2);//형변환 System.out.println(result);//오류 사라짐
상수란? 변하지않는 값
final int num1 = 10; 같이 쓰이는것.
★★상수 활용법★★
값을 변경시키면 안되는 값은 무조건 상수로 넣는다.
상수는 무조건 대문자로 적어준다
class Hello{ public static void main(String[] args) { final int MAX_SIZE = 100; final char CONST_CHAR = '상'; final int CONST_ASSIGNED; CONST_ASSIGNED = 10; System.out.println("상수1:"+MAX_SIZE); System.out.println("상수2:"+CONST_CHAR); System.out.println("상수3:"+CONST_ASSIGNED); //선언= int num; //초기화= num = 10; 값을 새로 넣는것. final double PI = 3.14; //PI = 3.1415; //오류-why?상수는 값을 한번 대입하게 되면 //그 다음에 그 값을 못바꾼다.(변수와 차이점) //변수는 초기화할 수 있어도 상수는 초기화X //선언= int num; //초기화= num = 10; 값을 새로 넣는것. } }
리터럴(Literals)-자료형(8개)을 기반으로 표현이 되는 상수
정수는 무조건 int형으로 인식하게 한다.
ex) int num1 = 5+7; 연산은 cpu가 함. 따라서 5+7조차도 cpu로 가야함. 메모리를 잡아서 5를 cpu에보내고 7을 보내서 cpu가 계산함.
System.out.println(21억초과되는 연산); //오류남 -해결- System.out.println(22345678901l); 끝에 알파벳l붙이기
0B //10진수
0 //8진수
0x //16진수
실수형상수 - 뒤에d또는f를 넣는다.
3.4e3 = e3이 10의 3승 = 3400.0 //3.4e-3도 가능 =0.0034
이스케이프 시퀀스(escape sequences)
'\b' 백스페이스 문자
'\t' 탭 문자
'\"' ""안에 ""넣어도 오류X
'\n' 개행문자(엔터)
'\r' 캐리지리턴. 스크린커서의 위치를 현재 줄의 처음으로 옮긴다. 개행하지 않는다. 이 기호 다음에 오는 문자를 덮어 쒸운다.
class Hello{ public static void main(String[] args) { System.out.println("AB"+'\b'+'C'); System.out.println("AB"+'\t'+'C'); System.out.println("AB"+'\n'+'C'); System.out.println("AB"+'\r'+'C'); } }
자료 형 변환
데이터타입이 다른것끼리 연산을하면? 더 큰 byte값, 실수값(소수점 보존하는쪽)을 갖고있는 자료형으로 자동형변환된다.
class Hello{ double pi = 3.14; //int result = pi; //오류남 int result = (int)pi; //해결 System.out.println(result);//강제 형변환 //결과값 3 } }
명시적 형 변환 - 강제형변환
class Hello{ public static void main(String[] args) { int a = 3; int b = 4; //double result =a/b; //결과값 0.0 -int끼리 나눈값에 double로 형변환 해준거라서. double result =(double)a/b; System.out.println(result); //해결.한 놈을 double로 형변환해준다. 0.75 } }
오늘의 문제
1.키워드란 무엇인가?
=자바의 예약어 static, void 등 변수명으로 사용불가한 것.
2.2의 보수법이란?
- 보수(complement)란 두 수의 합이 진법의 밑수가 되게 하는 수를 말한다.
(10진수에서 6의 보수는 4, 7의 보수는 3)
- 컴퓨터에서는 음의 정수를 표현하기 위해서 2의 보수법을 사용한다.
2의 보수는 양수 2진수의 1의 보수를 구한 뒤 거기에 1을 더해 음수를 표현하는 방법을 말한다.
이 때 8비트를 넘어가는 맨 앞자리의 수는 전산적으로 버려주게 된다. 이진수의 1의보수는 비트를 반전시켜 얻을 수 있다. (0→1, 1→0)
3.컴퓨터에서 음의 정수 표현방법에 대하여 설명하시오.
2진수값을 0↔1로 바꿔주고 마지막에 1을 더해준다.
4.-5가 컴퓨터에서의 2진수 값을 나타내시오.
011
5.실수에서 오차가 생기는 원인은 무엇인가?
실수하고 정수는 2진수로 표현하는 방법이 다르기때문에
6.실수의 표현법은(고정소수법, 부동소수법)을 설명하시오.
1.0124(고정소수점)
3.4e3 -> 3.4 x10^3 (부동소수점) = 3400.0
7.정밀도란 무엇인가요?
계산값의 정확도 float는 소수점 6자리까지, double은 소수점15자리까지 나온다.
8.상수란 무엇이며 변수와의 차이는?
변하지않는 값. 변수는 변하는 값
9.초기화란 무엇인가?
값을 새로 넣는 것.
10.리터럴이란 무엇인가요?
자료형(8개)을 기반으로 표현이 되는 상수
11.아래의 내용이 에러가 나는 이유와 수정방법은?
System.out.println(3147483647 + 3147483648);
이유:int값의 범위를 초과함.
수정방법:long형으로 형변환한다.
System.out.println(3147483647L + 3147483648L);
12.자동 형변환과 명시적 형변환에 대하여 설명하시오.
자동형변환 - 더 큰 byte값, 실수값(소수점 보존하는쪽)을 갖고있는 자료형으로 자동형변환되는 것.
명시적 형변환-자동 형변환이 안되어서 강제형변환 하는것
13.아래의 에러가 나는 이유를 설명하고 수정하시오.
int a = 3; int b = 4; double result = a / b; System.out.println(result);
설명:결과값 0.0 int끼리 나눈값에 double로 형변환 해준거라서.
수정:double result = (double)a/b;
14.이스퀘이프 시퀀스의 종료를 나열하고 기능을 설명하시오.
'\b' - 앞에 있는 글자 지움
'\t' - 탭 문자
'\"' - ""안에 ""넣어도 오류X
'\n' - 개행문자-엔터
'\r' - 다음에 오는 문자를 덮어 씌운다.
15.아래의 출력결과를 확인하고, 130이 나오는 이유를 설명하시오.
System.out.println('A' + 'A');
int형보다 낮은거에 대해서는 하나의 정수형 타입으로 인식한다.
char타입이 들어와도 그 자체를 int로 인식한다.(자동형변환)
'A'의 아스키코드 값이 65여서
'코딩 > 수업 정리' 카테고리의 다른 글
자바 자습 (0) | 2020.11.28 |
---|---|
20.11.27 Fri [005] (0) | 2020.11.27 |
20.11.26 Thu [004] (0) | 2020.11.26 |
20.11.24 Tue [002] (0) | 2020.11.24 |
20.11.23 Mon [001] (0) | 2020.11.23 |
댓글