[Java] 변수 자료형 서식문자 형변환
저번 시간에는 IDE인 이클립스 포톤 버전을 설치하고 프린트를 출력해봤는데요.
이번 시간에는 여러 가지를 더 써보겠습니다~
*컴파일러의 해석 방향
컴파일러는 C언어에서의 비쥬얼 스튜디오처럼 위에서 아래로 좌에서 우로 읽습니다. 뭐 당연한 소리같지만, 사실 앞으로 복잡하고 다양한 코드를 짤 때에 항상 유의하여야 할 사항입니다!
*출력메소드
메소드가 뭐라했죠? 네! 뒤에 괄호가 붙으면 일단 메소드로 보자고 했죠~ 출력메소드는 말그대로 출력하는 메소드입니다. ㅋㅋ
1. 오류가 발생한 부분을 구체화 시키기 위한 목적
- 비쥬얼 스튜디오와 다르게 이클립스는 오류가 있어도 일단 그전까진 콘솔에서 출력을 해주더라고요.. 그래서 이를 이용해서 각각의 메소드사이에 출력메소드를 넣어주면 어디에서 오류가 발생한 것인지 알 수 있겠죠?
2. 값을 확인하기 위한 목적
- 말 그대로 어떤 타입의 변수에 올바른 값이 들어가 있는지 확인하기 위해 쓰입니다.
*변수(저장공간)
앞으로 변수는 저장공간이라 부르겠습니다. 우리가 흔히 수학에서 하는 것, x=10 이라는 문장이 있다고 합시다. 이것은 x는 10과 같다라는 뜻으로 쓰이지만 컴퓨터에서는 조금 다릅니다. 변수는 저장공간이기 때문에 이 공간 안에 어떠한 값이 필요합니다. 그래서 컴퓨터에서 x= 10은 x라는 저장공간에 10이라는 값을 대입시킨거죠. 그래서 ‘=’ 라는 문자를 대입연산자라고 합니다.
자료형(type)
자료형 type byte 값
정수형 int 4 -156, 0, 88
실수형 float 4 0.0F, 1.5F
double 8 0.0
문자형 char 2 ‘A’, ‘안’, ‘s’, ‘0’
문자열 String ? “A”, “a”, “1”, “신동희”
int부터 char는 우리가 C언어에서 봤던 그것 맞습니다 ㅎㅎ 다만 자바에서는 실수가 8바이트인 double 타입이 기본형이므로 float을 쓸 때에는 숫자 뒤에 F를 붙입니다.
그리고 뉴페이스 String을 보실 수가 있습니다. C언어는 문자열이라 하면 따로 자료형 타입이란 개념보단 배열의 의미였죠? 여기에는 String이라고 문자열이 따로 있습니다. 다만 String은 대문자죠? 그렇다면.. 예 맞습니다! 클래스네요 ^^
*변수의 선언
자료형 변수명 = 값; 아까 봤던 x = 10; 같은 겁니다.
자료형 변수명; 아니면 이런 식으로 변수명만 해서 선언을 할 수 있는데 웬만하면 초기값을 주는게 좋습니다. 왜냐하면 초기값이 없으면 본문에서 사용할 때 연산에 오류가 날 수 도 있기 때문입니다.
*변수 선언 시 RAM
int x = 10;
x라는 이름의 저장공간이 RAM에 만들어 지고 이를 할당한다고 말합니다.
할당된 x 저장공간에 10이 들어간 것입니다.
*주소(해시코드)
메모리(RAM)에 저장공간을 할당하면 고유한 값인(중복이 없는) 주소가 생성됩니다. C언어는 포인터라고 했지만, 여기선 해시코드라고 하나보네요.
사용
1
2
3
4
int x = 10;
x = 20;
System.out.println(x+9);
x = x + 8;
이런식으로 하면 됩니다. 처음에 10값으로 초기값을 주고 20을 대입했습니다. 그 후에 출력 메소드로 x+9를 출력하도록 했습니다. 값은 29가 나오겠지요? 그 밑에 x = x +8은 출력메소드 뒤에 있으니 출력은 되지 않겠네요.
*변수 선언 시 주의사항
같은 이름의 변수로 선언할 수 없습니다.
반드시 초기화를 해줍니다.
되도록 선언부에 한꺼번에 선언합니다.(상단)
*변수명 주의사항
문자부터 작성해야 합니다.
특수문자를 사용할 수 없습니다. (_제외)
되도록 소문자만 사용합니다.
공백을 사용할 수 없습니다. ( good_boy)
goodBoy : 카멜 표기법
명사를 사용합니다..
number,age,name … 변수 확인의 편의를 위한것입니다.
*서식문자(format)
반드시 따옴표 안에서 작성합니다.
%d : 10진수(decimal)
%o : 8진수(octal)
%x : 16진수(hexadecimal)
%f : 실수(float)
%c : 문자(character)
%s : 문자열(string)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public static void main(String[] args) {
int age=10;
float weight = 10.5F;
double height = 10.5;
char hangle = '\uAC30';
String alpha = "ABC";
System.out.printf("나이 : %d살\n", age);
//서식문자 %f에서 소수점을 자를 때 반올림된다.
System.out.printf("몸무게 : %.2fkg\n",weight);
System.out.println(height);
System.out.println(hangle);
System.out.println(alpha);
}
printf는 서식문자를 사용할 수 있는 출력메소드입니다. printfln은 제어문자 \n(줄바꿈)이 메소드에 포함되어 있는 것입니다.
나머진 다 이해할 수 있는데 중간에 ‘갰’이건 뭔가요? C언어는 아스키코드를 사용하는 반면 자바는 유니코드를 사용합니다. 유니코드란 모든 언어(영어,한국어)들의 문자하나를 2byte 로 고정하고 사용하는 것입니다. 그래서
1
char hangle = '\uAC30';
이 문자형 변수를 보면 역슬래시 u 후에 AC30이 보이는데 이게 유니코드입니다. 그리고 그 코드의 문자값은 ‘갰’ 인겁니다.
*제어 문자
반드시 따옴표 안에서 작성한다.
”\n” : 줄바꿈(new line)
”\t” : 위 아래 줄 간격 맞추어 띄기(tab)
”\”” : 큰 따옴표 표현
”\’” : 작은 따옴표 표현
”\\” : \표현
*형변환
- 자동 형변환
정수 + 정수 = 정수
정수 + 실수 = 실수
3 + 0.0 = 3.0
- 강제 형변환(Casting)
(자료형)값
(int)3.9
이것은 C언어랑 비슷하군요.
1
2
3
4
5
6
7
8
9
10
public static void main(String[] args) {
//자동 형변환
System.out.println(10/3);
System.out.println(10/3.0);
System.out.println("==================");
System.out.println(10/3);
System.out.println((double)10/3);
}
첫번째는 10나누기 3인데 정수로 표현하겠군요. 이때 소숫점은 그냥 버려집니다. 그래서 3이 나오죠 그 다음엔 3.0이므로 정수와 실수의 연산이 있으면 그 결과는 실수로 나옵니다.
네번째는 정수와 정수의 연산인데 10에 (double)이 앞에 있네요. 강제로 형변환을 실수로 한겁니다. 역시 값은 3.33333으로 나오겠네요 ^^
이번 시간엔 여기까지 하도록 하겠습니다~
Comments powered by Disqus.