- 1+2 = 3
- x+y = 3
우리는 '1+2=3' 하면 매우 쉽게 와 닿는다. 하지만!
'x+y=3' 하면 은근히 어렵게 느껴지면서 생각이 많아진다.
ㄴ(그냥 1자리에 x가 들어간 것 뿐이고 2자리에 y가 들어간 것뿐인데 말이다.)
프로그램을 만들었는데 1+2=3 이라는 계산밖에 안되는 프로그램이라면
아무도 사용하지 않을 것이다.
변수(variable)가 들어갈 수 있기에 프로그램은 가치가 있고 매우 유용하다.
- 상수란 변하지 않는 값을 말한다.
더 넓은 범위로 리터럴(Literal) 이라고 하는데
문자 뜻 그대로의 값을 의미한다.- 5와 7은 ‘정수형(int) 리터럴’
- 3.3과 4.5는 ‘실수형(double) 리터럴’
● final(최종) 상수
ㄴ프로그래머가 임의로 만드는 상수이며, final 상수 이름은 대문자를 이용해서 만든다.
▼▽ 아래의 표가 바로 기본 자료형이다 ▼▽
이 뜻은 다음과 같다.
byte는 -127~+128까지만 계산이 가능하다고 생각하면 된다.
1바이트(byte) = 8비트(bits)와 같다.
우리 옛날에 8비트 게임, 8비트 게임하는데 유래가 여기서 나온 것이다.
Quiz. 돌발 퀴즈!
1바이트와 2바이트의 차이는 몇배일까요?
많은 사람들은 1x2는 2니까 2배 라고 생각하겠지만,
1바이트와 2바이트의 차이는 사실 엄청나다.
1바이트당 0부터 255까지 총 256개의 수치를 표현할 수 있는데,
2바이트면 512개의 수치를 표현할 수 있는 것이다.
CPU는 참으로 2를 좋아하는 거 같다.
1바이트 = 8비트 = 2 x 2 x 2비트
2바이트 = 16비트 = 2 x 2 x 2 x 2비트
4바이트 = 32비트 = 2 x 2 x 2 x 2 x 2비트
X. 3바이트? = 24비트 = 2 x 2 x 2 x (3비트?)
ㄴ2의 배수로 표현되지 않는 3바이트는 처리 단위로 사용되지 않는다
<없다는 뜻>
다시 돌아와서 > >
- 그럼, short와 byte는 왜 필요한가?
MP3파일, 동영상 파일이나 게임같이 연산보다
데이터의 양이 중요한 경우 데이터의 디테일이 중요한 분야에서는
short과 byte를 활용한다.
- 이제 문자형 타입을 알아본다.
바로 char 형이다. 크기는 2바이트이며
- 특징은 문자 한글자만 대입할 수 있고,
- 반드시 ' ' (싱글쿼테이션,작은따옴표)를 사용한다.
ex) char ch1 = ‘A’;
▲ ch1라는 문자형 변수 선언과 동시에 그 변수를 A라는 값으로 초기화한다.
우리는 아스키코드를 통해 알파벳을 숫자로 표현할 수 있다.
문자 'A'를 표현하면 65이다.
그 외의 문자는 유니코드(2byte)로 표현한다.
이로써 우리는 왜 프로그래밍을 할 때 한글을 잘 안 쓰는지를 추리해보면 알 수 있다.
한글은 바로 유니코드이다. 더 큰 메모리 용량을 사용하기 때문도 있다.
- 이제 논리형 타입을 알아본다
바로 참과 거짓을 표현하기 위한 자료형 boolean 형이다.
크기는 1바이트이다.
- 특징은 true, false 두 가지 값만 가진다. 참이냐? 거짓이냐?
코딩에서는 스위치로도 많이 쓰인다.
ex) 응용: 짠! 버튼을 누르면 true가 되고 true가 될 때
메롱~ 을 출력하는 액션을 실행한다.
- 이제 문자열 타입을 알아본다
바로 String 형이다.
복수 개의 문자를 모아놓은 것이 문자열이며
String은 문자열을 저장하기 위한 클래스 (기본 자료형은 아니다)
나중에 ※ 메소드 스택 힙 영역 이야기를 하면서 다룰 에정이다.
코드 작성 시 “(더블 쿼테이션)을 사용한다.
▶ 나중에 자세히 다룰 예정
★ String str1 = new String(“안녕하세요”);
ㄴstr1이라는 스트링 타입의 주소값(참조값) 변수를 생성하고
그 안에 "안녕하세요"를 넣는다.
- num1과 num2를 double 선언과 동시에
1.0000001과 2.0000001로 초기화하고 둘을 더하시오.- num3을 long으로 선언하고 22억으로 초기화 하시오.
- num4를 정수형으로 2147483647로 선언과 동시에 초기화하고
1을 더한 값을 출력하시오- 1+2의 값이 2가 맞는지 아닌지 참 거짓을 출력하시오.
- 대문자A와 소문자 a를 문자형 변수로 선언과 동시에 초기화하고
둘을 더하여 정수로 출력해보시오- 국어 95 영어 5 수학 100을 kor, eng, math로 선언과 동시에 초기화를 하고
총점을 구하시오.- 문자열 "장점이 있으면"과 "단점이 있고"와 "단점이 있으면"과 "장점이 있다" 를
각각 선언하고 모두 한 줄에 출력하시오.
▲△ 한번 직접 풀어보세요 ▲△
/* 1번 문제: num1과 num2를 double 선언과 동시에
1.0000001과 2.0000001로 초기화하고 둘을 더하시오.*/
double num1 = 1.0000001;
double num2 = 2.0000001;
System.out.println(num1+num2);
//실수는 크고 작다를 비교하는데 주로 사용한다.
결과: 3.0000001999999997 //오차없이 표현이 불가능하다 (실수형 계산기 단점)
/* 2번 문제: num3을 long으로 선언하고 22억으로 초기화 후 출력하시오.*/
// 정수형 계산기는 int 형밖에 없으므로
// 숫자 뒤에 반드시 L을 넣어서 long이라는 것을 선언해주어야 인식 가능
long num3 = 2200000000L; // L을 넣어줘야 에러가 안남
System.out.println(num3);
결과: 2200000000
/*3번 문제 : num4를 정수형으로 2147483647로 선언과 동시에 초기화하고
1을 더한 값을 출력하시오*/
int num4 = 2147483647;
System.out.println(num4+1);
//int가 표현할 수 있는 가장 큰 수는 2147483647이다.
//이 숫자를 초과할 경우 int가 표현할 수 있는 첫번째 숫자(음수)로 돌아온다.
결과: -2147483648
/*4번 문제 : 1+2의 값이 2가 맞는지 아닌지 참 거짓을 출력하시오.*/
// num5를 boolean 타입 선언과 동시에 연산 확인
boolean num5 = (1+2==2);
System.out.println(num5);
결과: false // 1+2==3이지 2가 아니다.
/*5번 문제 : 대문자A와 소문자 a를 문자형 변수로 선언과 동시에 초기화하고
둘을 더하여 정수로 출력해보시오*/
char ch1 = 'A'; //아스키코드 65이다.
char ch2 = 'a'; //아스키코드 97이다.
// 더한 값을 int 정수형으로 바꾼다.
System.out.println((int)ch1+ch2);
결과 : 162
/*6번 문제 : 국어 95 영어 5 수학 100을 kor, eng, math로 선언과
동시에 초기화를 하고 총점을 구하시오.*/
//int 변수가 여럿일때 이렇게 묶어서 선언하는게 좋다
int kor=95, eng=5, math=100;
System.out.println(kor+eng+math);
결과 : 200
/*7번 문제 : 문자열 "장점이 있으면"과 "단점이 있고"와
"단점이 있으면"과 "장점이 있다" 를 각각 선언하고 초기화하면서
모두 붙여서 띄어쓰기를 추가하여 한 줄에 출력하시오.*/
String str1 = "장점이 있으면"; // 스트링 선언 및 초기화
String str2 = "단점이 있고";
String str3 = "단점이 있으면";
String str4 = "장점이 있다";
//문자열은 연산이 불가능하므로 +는 앞 문자열과 뒷 문자열을 잇는다
//공백을 표현하기 위해 " "를 추가했다.
System.out.println(str1+" "+str2+" "+str3+" "+str4+".");
결과 : 장점이 있으면 단점이 있고 단점이 있으면 장점이 있다.
그럼 다음 포스팅 때 봐요~ 자바(JAVA) 공부는 계속 됩니다.