|
|
형변환이란 값의 자료형을 원하는 자료형으로 변환하는 작업을 말한다.
형변환에는 JVM이 판단해서 행하는 자동 형변환과
프로그래머가 의도적으로 일으키는 명시적 형변환이 있다.
|
|
int a = 300
long money = a;
위 코드는 long형 변수 money에 int형 값 300을 할당하려 한다.
long형 변수 money에 저장되는 값은 long형이여야 한다. 이 경우 JVM은 할당하기 전에 300을 long형으로 자동으로 변환한다.
자동 형변환은, 작은 자료형에서 큰 자료형 방향으로 변환이 일어나므로, Up-Casting이라 한다.
byte --> short --> int --> long --> float --> double
long --> float 방향에 주목하자. 비록 float이 4바이트 영역의 메모리를 차지하지만 실수이므로 long에서 float으로 자동 형변환된다.
다음 예를 보자.
float x = 10L;
JVM은 long형 값 10을 float형의 값 10으로 자동 형변환시킨다.
int x = 10;
int y = 4;
int z = x / y;
z에는 2.5가 아니라 2가 할당된다.
이유는 x와 y가 모두 int형 값이므로 연산 결과 역시 int형이여야 하기 때문이다.
int x = 3 + 3.5 + 4;
컴파일 에러!
3.5는 double형 값이고, 3과 4는 int형 값이다.
int를 포함하여 자료형이 int 이상의 값들이 참여하는 산술 연산에서는 값들 중 가장 큰 자료형으로 나머지 값들의 자료형이 변환된다. 따라서 위 코드에서 3과 4는 연산이 실행되기 전에 double형으로 변환된다.
|
|
float f = 1.1; //컴파일 에러!
변수에 값을 대입할 때 값의 자료형이 변수의 자료형보다 크면 컴파일 에러가 발생한다.
다음 코드는 double형 값의 자료형을 float형으로 의도적으로 바꾸는 코드이다.
float f = (float) 1.1;
다음 예를 보자.
byte b = (byte) 258;
b엔 2가 할당된다.
int x = 10;
int y = 4;
double z = x / y;
z가 2.5가 되려면 연산에 참여하는 x 나 y를 double로 명시적 형변환한다.
double z = (double) x / y;
또는
double z = x / (double) y;
|
|
자바 프로그램에서 문자열을 사용
자바에서 문자열을 표현하는 방법은 String 클래스로부터 String 객체를 생성하여 사용하는 것이다.
원래 String 클래스는 자바 API에 존재한다. "Hello"라는 문자열이 필요하다고 하면 아래처럼 코딩해야 한다.
char arrayOfHello = {'H','e','l','l'.'o'};
String greetings = new String(arrayOfHello);
그런데 자바에서는 다음과 같이 문자열 리터럴을 제공한다.
String hi = "hello";
문자열은 자주 사용되므로, 문자열을 마치 기본 자료형처럼 사용할 수 있도록 배려한 것이다.
문자열 관련 메소드
문자열형 자료를 숫자형 자료로 변환
String msg="123";
int a;
a=Integer.parseInt(msg);
기타 자료형을 문자형 자료로 변환
String.valueOf("값");
문자열과 문자열 비교
String s1="hello";
String s2="Hello";
if(true ==s1.equals(s2)) System.out.println("참말임");
문자열과 문자열 비교 대문자 무시
String s1="hello";
String s2="Hello";
if(true ==s1.equalsIgnoreCase(s2)) System.out.println("위에서 속았지?");
복잡한 문자열을 처리하는 StringBuffer클래스
stringBuffer str=new StringBuffer();
☞ 전체 문자열 길이 구하기
int length = str.length();
☞ 3번째 문자 구하기
char key = str.charAt(2);
☞ 끝자리에 'abcd'추가하기
str.append("abcd");
※ 그냥 String에서도 가능하다.
String txt="abc";
txt+="def";
☞ 3번째에 'b'를 첨가하기
str.insert(2,'b');
☞ StringBuffer를 String형으로 변경하기
String test = str.toString();
'컴퓨터프로그래밍 > JAVA' 카테고리의 다른 글
오버라이딩(overrriding), 오버로딩(overloading) (0) | 2016.04.22 |
---|---|
자바의 상속 (0) | 2016.04.20 |
패키지 (0) | 2016.04.16 |
한글깨짐 방지 (0) | 2014.06.12 |
12_배열예제(1등구하기) (0) | 2013.11.04 |