본문 바로가기
Backend/JAVA_Basic

04. JAVA 기본문법 (자료형, 형변환, Wrapper 클래스)

by 개발개발빈이 2022. 5. 27.

 자료형 (Data Type)

    - 기본자료형 : 정수형, 실수형, 문자형, 문자열형, 논리형
    - 참조자료형(reference data type) : 기본자료형을 제외한 모든 타입 (클래스, 인터페이스, 배열 등)

 

기본 자료형 (Primitive Data Type)

        ① 정수형

           - 소수점이 없는 값

           - byte < short < int < long

byte a=1;		// 1바이트 할당
short b=3;		// 2바이트 할당
int c=5;		// 4바이트 할당 (기본)
long d=7;		// 8바이트 할당

System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);

// int c=9;		에러, 변수명은 중복 선언할 수 없다

        ② 실수형

           - 소수점이 있는 값

           - float < double < int < long

float e=1.2f;		// 4바이트 할당, 접미사 f 반드시 추가
double f=3.4d;		// 8바이트 할당, 접미사 d는 생략가능 (기본)

System.out.println(e);
System.out.println(f);

System.out.println(3);		// 정수형 int
System.out.println(3.0);	// 실수형 double

 

        ③ 문자형

           - 홑따옴표 ' 로 감싸고, 문자 1개만 저장할 수 있다

           - char

char ch='R';	// 2바이트 할당
System.out.println(ch);

ch='가';
System.out.println(ch);

// ch='sky'; 에러, 문자 1개가 아님

 

        ④ 문자열형

           - 겹따옴표 " 로 감싼다

           - String : String은 정확히는 class이지만, 기본형처럼 쓰임

String str="KOREA";
System.out.println(str);

str = "A";
System.out.println(str);

str = "";  // 글자개수 0개
System.out.println("#" + str + "#");	

str = " "; // 글자개수 1개
System.out.println("#" + str + "#");

 

        ⑤ 논리

           - 맞다(true), 틀리다(false)

           - boolean

boolean flag=true;
System.out.println(flag);

flag=false;
System.out.println(flag);

System.out.println(true);	// boolean
System.out.println("true");	// String

 

자료형 변환 (Datatype Conversion)

    ① 자동 형 변환

        -  바이트 수가 작은 자료형이 큰 자료형으로 들어갈 때 자동 형 변환

           (정수형 : byte < short < int < long / 실수형 : float < double)

        - 정수형과 실수형이 연산이 되면 자동으로 실수형화 된다

byte a=3;
int b=a;		// 자동형변환
long c=b;		// 자동형변환
// a=c; 에러		

float d=3.4f;
double e=d;		// 자동형변환

System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(e);

int kor=80, eng=75, mat=95; 
System.out.println((kor+eng+mat)/3);		// 83
System.out.println((kor+eng+mat)/3.0);		// 83.33333333333333
System.out.println((kor+eng+mat)/3.);		// 83.33333333333333

 

    ② 강제 형 변환

        - 필요한 곳에서 일시적으로 변환

        - 형식) (자료형)값

System.out.println((int)3.5);				// 3
System.out.println((double)4);				// 4.0
System.out.println((int)2.6+(int)5.7);		// 7 (2+5)
System.out.println((int)(2.6+5.7));			// 8 ((8.3))


// int형과 char형의 형변환

System.out.println(65);
System.out.println((char)65);		// 'A'
System.out.println((char)66);		// 'B'
System.out.println((char)67);		// 'C'

System.out.println(97);
System.out.println((char)97);		// 'a'
System.out.println((char)98);		// 'b'
System.out.println((char)99);		// 'c'

System.out.println((int)'A');		// 65
System.out.println((int)'B');		// 66
System.out.println((int)'C');		// 67

System.out.println((int)'a');		// 97
System.out.println((int)'b');		// 98
System.out.println((int)'c');		// 99

 

ASCII (아스키) 

    - American Standard Code for Information Interchange
    - 문자를 숫자로 기억하기 위한 총 128개의 부호
    - 미국 ANSI에서 표준화한 정보교환용 7비트 부호체계

    - 키보드의 모든 키는 아스키 코드를 가지고 있다

       예) A ↔ 65  B ↔ 66  a ↔ 97  b ↔ 98  ESC ↔ 27

    - 외워두면 좋은 아스키 코드 : 32(공백), 13(엔터), 65(A), 97(a)

System.out.println((int)'+');		// 43
System.out.println((int)'-');		// 45
System.out.println((int)'*');		// 42
System.out.println((int)'/');		// 47

System.out.println((char)43);		// '+'
System.out.println((char)45);		// '-'
System.out.println((char)42);		// '*'
System.out.println((char)47);		// '/'


System.out.println((int)' ');		// 32 (공백)
System.out.println((int)'\r');		// 13 (엔터)

System.out.println("&"+(char)13+"&");		
System.out.println("#"+(char)32+"#");		


System.out.println('A'<'a');		// true (65<97) 
                                    // 오름차순 'A' → 'a'

System.out.println('A'+1);			// 66
System.out.println((char)('A'+1));	// 'B'

System.out.println('a'-'A');		// 32 (97-65)

 

    Q) 임의의 문자가 소문자인지 확인하시오 (소문자 'a' ~ 'z')

char ch='d';		
String result = (ch>='a' && ch<='z') ? "소문자" : "기타";
System.out.println(ch+result);

 

Wrapper(포장) 클래스

    - 기본자료형을 참조형화 해 놓은 클래스들

    - 대부분 java.lang 패키지에 선언되어 있음

    - 기본형처럼 사용가능 + .눌렀을 때 추가적인 기능 이용 가능

boolean boo1=true;  //기본자료형
Boolean boo2=false; //wrapper클래스

System.out.println(boo2.toString()); //wrapper클래스 메소드 적용 가능


int in1=3;     //기본자료형
Integer in2=5; //wrapper클래스

System.out.println(in2.toString());    //"5"
System.out.println(in2.doubleValue());  //5.0

System.out.println(Integer.toBinaryString(15));	//"1111" (2진법으로 변환)
System.out.println(Integer.toOctalString(15));	//"17"   (8진법으로 변환)
System.out.println(Integer.toHexString(15));	//"f"    (16진법으로 변환)

System.out.println(Integer.sum(2, 4));	//6
System.out.println(Integer.max(2, 4));	//4
System.out.println(Integer.min(2, 4));	//2

System.out.println(Integer.parseInt("123"));  //"123" → 123 변환 (★★★ 자주쓰이는 메소드)


char ch1='R';       //기본자료형
Character ch2='m';  //wrapper클래스
Character ch3='a';  //wrapper클래스

System.out.println(Character.isWhitespace(' ')); //공백인지 확인
System.out.println(Character.toLowerCase('R'));
System.out.println(Character.toUpperCase('a'));

 

● Practice 연습문제

    - Character클래스 활용 연습문제

        Q1) 주민번호의 각 숫자의 합을 구하시오 (8+9+1+2+3+0+1+2+3+4+5+6+7)

String jumin="8912301234567";

int hap=0;
for(int i=0; i<jumin.length(); i++) {
    hap=hap+Character.getNumericValue(jumin.charAt(i));
}
System.out.println(hap);

 

        Q2) 대소문자를 서로 바꿔서 출력하시오 (gONE wITH tHE wIND)

String str="Gone With The Wind";					

for(int i=0; i<str.length(); i++) {
    char ch=str.charAt(i);

    if(Character.isUpperCase(ch)) {
        System.out.print(Character.toLowerCase(ch));
    }else {
        System.out.print(Character.toUpperCase(ch));
    }
}

댓글