□ 형변환 (casting)
○ 개념 = 데이터의 타입을 다른 형태로 변경시키는 기법
실수->정수
정수->실수
클래스->다른 클래스

○ 기본자료형 형변환
-- 종류 = 묵시적 형변환, 명시적 형변환
-- 묵시적 형변환 >> 작은 데이터를 큰 범위로 바꿀때 사용.
명시적 형변환 >> 큰 데이터를 작은 데이터로 바꿀때 사용. 명확하게 적어줘야함
실수가 소수점을 포함하므로 더 큰 데이터 // 정수는 실수보다 더 작은 데이터
int a = 3 int b = 3.2;
b = a ; >> 묵시적 형변환
a = (int)b; >> 명시적 형변환
○ 문자열을 정수로 바꿀때는 Integer.parseInt( )
문자열을 실수로 바꿀때는 Double.parseDouble( ) 메서드
반대로 수치값을 문자열로 바꾸고 싶을때는 String.valueOf( )
○ 래퍼런스형(객체형) 형변환
-- 종류 = 업캐스팅, 다운캐스팅
-- 래퍼런스형 업캐스팅(자동적) = 사전에 상속관계가 진행되어야 가능!
변수의 데이터 타입은 부모, 실제 객체는 자식인 경우를 말함
자식클래스가 부모클래스 타입으로 형변환한다.

-- 다운캐스팅 = 업캐스팅된 것을 다시 강제적으로 명시해서 원래 타입으로 되돌리는 것! (안된것은 불가능)

고양이는 동물이다 (o)
동물은 고양이다 (x) 동물은 고양이만 있는게 아니므로 다운캐스팅 안됨. 런타임 오류!
고양이는 동물이다 -> 동물은 고양이다 (다운캐스팅 가능)


이런 식으로 Main에 같은 이름의 메소드를 적어줄 경우 자동으로 업캐스팅이 진행됨
□ Wrapper 클래스를 이용한 형변환
○ 개념
프리미티브 타입(단순 자료형)의 자료를 레퍼런스형 타입으로 변환하는 것
Wrapper클래스 프리미티브 타입으로
Integer int
Byte byte
Float float형
Double double
Chaacter character
Boolean boolean
int num1 = 1; -->> Integer w_int = new Integer(num1);
○ parse*** 메소드, value of 메소드
String str1 = "100"; -->> 문자열
String str2 = "100";
int sum = Integer.parseInt(str1) + Integer.parseInt(str2);
syso(sum); -->> 이런식으로 하면 200이 출력됨
Integer sum = Integer.value of(str1) + Integer.value of(str2);
syso(sum.intValue()); -->> 이런식으로 하면 200이 출력됨
parse*** 메소드는 리턴타입이 프리미티브 타입이고
value of 메소드는 리턴값이 레퍼런스 타입임 (그래서 sum이 integer임)
○ 숫자를 문자열로 바꾸기
-- int i = 1234;
String str = Integer.toString(i);
○ 문자열을 숫자로 바꾸기
-- String str = "1234";
int i = Integer.parseInt(str);
Integer.parseInteger(str) int형 정수로 변환
Float.parseFloat(str) float형 부동 소수로 변환
Double.parseDouble(str) double형 부동 소수로
○ replace 함수
-- replace() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수이다.
String replace(CharSequence target, CharSequence replacement)
-- replaceAll() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수이다.
String replaceAll(String regex, String replacement)
○ 특정문자열 확인 메소드
-- 문자열이 특정 문자열로 시작하는지 확인하는 메서드
???.startsWith(searchString, length ) >> searchString : 검색할 문자열 , length : 문자열 중 어디까지 검색할지. 선택 요소로 없으면 전체 문자열 검색함
-- 문자열이 특정 문자열로 끝나는지 확인하는 메서드
string.endsWith( searchString, length )
-- 문자열이 특정 문자열을 포함하는지 확인하는 메서드
string.includes( searchString, length )
○ substring함수와 contains 함수
-- substring()은 문자열 안 인덱스 위치에 문자열이 일치할때 일치하는 특정 부분을 뽑아낼 경우에 사용
String a = "Hello Java";
Syso(a.substring(0, 4)); // Hell 출력
-- contains()는 문자열 안에 해당 문자열이 있을때 예외처리를 하기 위해 자주 사용 >> 문자나 문자열을 포함하는지 확인 후 true,false를 반환 (대소문자 구분함)
○ toLowerCase(); 소문자로 변경
toUpperCase(); 대문자로 변경
○ charAt(int index);
입력받은 인자값(index) 의 위치에 있는 문자를 뽑아내는 함수
○ 다양한 예제
int a = 65;
syso( (char)a ); // A
char b = 'A';
syso( (int)b ); // 65
syso( b+2 ); // 67
syso( String.valueOf(b)+2 ); // A2
syso( b+""+2 ); // A2
syso( (int)'9' ); // 57
syso( (int)'7' ); // 55
syso( '9'+'7' ); // 112
syso( '9'-'7' ); // 22
String c = "99";
syso( c+2 ); // 992
syso( Integer.parseInt(c)+2 ); // 101
syso( 50+2 ); // 52
syso( 50+""+2 ); // 502
char [] d = {'a','b','c'};
syso( new String(d) ); // abc
char [] e = "abc".toCharArray();
syso( e[2] ); //c
syso( "AbCdefgHIJKLmnopq".toUpperCase() ); // ABCDEFGHIJKLMNOPQ
syso( "AbCdefgHIJKLmnopq".toLowerCase() ); // abcdefghijklmnopq
String f;
f = Integer.toBinaryString(16); //2진법 변환
syso(f); //10000
f = Integer.toOctalString(16); //8진법 변환
syso(f); //20
f = Integer.toHexString(16); //16진법 변환
syso(f); //10
syso( 0.02 ); //0.02
syso( 2/100 ); //0
syso( (double)2/100 ); //0.02
syso( 100*2/100 ); //2
syso( 2/100*100 ); //0
syso( (double)(2/100) ); //0
6. 이클립스 형변환
0.01MB
'Java' 카테고리의 다른 글
Java (10) - 단축키 및 기타자료 (0) | 2022.06.14 |
---|---|
Java (9) - JDBC를 이용하여 Java와 DB연동하기 (0) | 2022.06.10 |
Java (7) - MVC 패턴 (0) | 2022.06.08 |
Java (6) - 메소드 상속 기능 / 상속의 특징 /상속 과정에서의 추상화 (추상 클래스와 추상 메소드, 추상 클래스의 특징) / 인터페이스 / 추상 클래스와 인터페이스 비교 (0) | 2022.06.07 |
Java (5) - 메소드의 개념과 기본구조 (리턴타입) / 생성자메소드 / 메소드 생성 및 사용 방법 / 메소드의 오버로딩과 오버라이딩 / 메소드에 ArrayList 사용하기 / Setter와 Getter / (0) | 2022.06.03 |