JAVA/JAVA BASIC

[JAVA] 타입 변환 & 시스템 입출력

아잠만_ 2024. 3. 6. 12:38
public static void main(String[] args) {
	int i1 = 20;
	int i2 = 24;
	String s = ""+ i1 + i2;
	//String s = i1 + i2 + "" 
	//44 왼쪽부터 오른쪽으로 진행되기 때문에 앞에 붙여야함
	System.out.println(s);
}

타입 변환

타입 이름 = (타입) 변환할 값;
public static void main(String[] args) {
	// 국 영 수 점수 3개를 변수 선언 및 저장 후
	// 총점 평균을 구하시오.
		
	int kor = 87;
	int eng = 90;
	int math = 85;
		
	int sum = kor + eng + math;
	double avg = (double)sum/3;
	// double avg = sum/3.0;				
	// (정수/정수)는 타입은 정수로 변하지 않음, 강제로 변환
		
	System.out.println("총점 : "+sum+" 평균 : "+avg);
}
더보기
		//87.3
		int i2 = (int)(avg*10);
		
		// int i2 = (int)avg*10; 
		//870

		avg = i2/10.0;
		System.out.println(avg);
		
		//87.33
		int i2 = (int)(avg*100);
		avg = i2/100.00;
		System.out.println(avg);

자동 타입변환

public static void main(String[] args) {
// short -> int 변환하기
	short a = 10;			
	int b = a;				//자동 타입 변환
		
// int - > short 변환하기
	int c = 5000000;		//short 범위 초과 (overflow)
	short d = (short) c;		
		
// char -> int 변환하기
	char e = 'A';
	int f = e;				//int 값이 더 크기때문에 자동 타입 변환
		
// int -> char 변환하기
		int g = 65;
		char h = (char)g;
		
// byte -> char 변환
	byte i = 10;
	char j = (char)i;		//byte는 음수값을 포함하고 있기때문에 자동타입변환X
		
// char -> byte 변환
	char k = 'a';
	byte l = (byte)k;		
}

Overflow, Downflow

byte b1 = 127;
b1 = (byte)(b1+1);		//byte 범위 -128 ~ 127
System.out.println(b1);

byte b2 = -128;
b2 = (byte)(b2-1);
System.out.println(b2);
-128
127

charAt()

char name = 변환할값.charAt(0);
public static void main(String[] args) {
	String s1 = "abcdef";
		
// String -> char
	char c1 = s1.charAt(0);
	System.out.println(c1);
}
a

시작값을 0으로 시작하기 때문에 쓸 수 있는 값은 "abcdef" 이므로 charAt ~ charAt(5)

String.valueof( )

public static void main(String[] args) {

	// char -> String
	char c2 = '1';
	char c3 = '1';
	String s2 = ""+c2+c3;
	//String s2 = String.valueof(c2)+String.valueof(c3);
}

String -> 정수 타입 변환 parse, valueOf

int name = Integer.parseInt( );
int name = Integer.valueOf( );

byte name = Byte.parseByte( );
byte name = Byte.valueOf( );
public static void main(String[] args) {
	// String -> int
	String s1 = "1234";
	int i1 = Integer.parseInt(s1);
	int i2 = Integer.valueOf(s1);
		
	String s2 = "122";
	byte b1 = Byte.parseByte(s1);
	byte b2 = Byte.valueOf(s1);		
}

문제 1)

int num1, num2 값을 선언한 후
num1 나누기 num2 값에 1000을 곱한 정수부분을 출력하시오.
결과값 ex) 3 2 -> 1500
더보기
public static void main(String[] args) {
	int num1 = 3;
	int num2 = 2;
		
	double div = (double)num1/num2;
	int result = (int)(div*1000);
	System.out.println(result);
    
    // 표현2
    // int result = (int)(((double)num1/num2)*1000);
    
    // 표현3
    // int result = 1000*num1/num2;
}

문제 2)

String 8개 변수를 선언하고 각각을 알맞는 기본타입으로 변환 해보기.
더보기
public static void main(String[] args) {
	String a = "1";
	int a1 = Integer.parseInt(a);
		
	String b = "2";
	byte b1 = Byte.parseByte(b);
	
	String c = "3";
	short c1 = Short.parseShort(c);
		
	String d = "4";
	long d1 = Long.parseLong(d);
		
	String e = "5";
	float e1 = Float.parseFloat(e);
		
	String f = "6";
	double f1 = Double.parseDouble(f);
		
	String g = "7";
	char g1 = g.charAt(0);
		
	String h = "true";
	boolean h1 = Boolean.parseBoolean(h);
}

시스템 입출력

System.out (출력 메소드)

println(); 괄호 안의 내용을 출력하고 행을 바꿈
print(); 괄호 안의 내용을 출력
printf("형식문자열", 값1, 값2, ...); 괄호 안의 첫 번째 문자열 형식대로 내용을 출력
public static void main(String[] args) {
	// System.out.printf("형식지정문자열", 변수리스트);
	//"형식지정문자열"
	//"%[[-/0]n]d 10진 정수
	// - : 완쪽 정렬
	// 0 : 남은 왼쪽 빈공간에 0채움
	// n : 채울 숫자 수
	// 정수 %d, 실수 %f, 문자열 %s
		System.out.printf("%8d\n",1000);
		System.out.printf("%-8d\n",1000);
		System.out.printf("%08d\n",1000);
 }
        1000
1000
00001000
public static void main(String[] args) {
	System.out.printf("자바 점수 : %d, 오라클점수 : %d", 90, 70);
}
자바 점수 : 90, 오라클점수 : 70

System.in (입력 메소드) Scanner

템플릿 저장

window > Preferences > 검색 : temp > Java > Editior > Templates

new > Name : scanTemp

( ${enclosing_type} : 클래스 이름, ${cursor} : 키보드 커서 위치)

Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
${enclosing_type} obj = new ${enclosing_type}();
${cursor}
}

 

스캐너 값 호출

sc.next();
String str = sc.next();
System.out.println("입력된 결과 값 : "+str);

 

 

cf) 메소드 호출

public static void main(String[] args) {
	ScanTemp obj = new ScanTemp();
//	obj.method1();			//method1 호출
	obj.method2();
}

public void method1() {
	System.out.println("메소드1");
}

 

문제3

스캐너 입력 받은 문자열을 정수로 변환 후 10을 더해서 출력
더보기
Scanner sc = new Scanner(System.in);

public static void main(String[] args) {
	ScanTemp obj = new ScanTemp();
	obj.method3();
}

public void method3() {
	System.out.println("정수를 입력하세요.");
	String str = sc.next();
	int result = Integer.parseInt(str)+10;
	System.out.println("출력된 결과 값 : "+result);
}