문자열과 형변환 (23.04.17)

·2023년 4월 17일
0

Java

목록 보기
3/35
post-thumbnail

📝 문자열

컴퓨터에서 “사과“, “맛있어요“ 등과 같은 단어나 문장
“”로 묶여 있으면 문자열로 인식하며 Java에서는 String 객체를 이용하여 저장함

✏️ 문자열 초기화

String str = “사과”;
String str = new String(“사과”);
String str = “사과” + “냠냠”;
String str = new String(“사과” + “냠냠”);
String str = “사과” + 123 + 45 + “먹기”; // 다른 자료형 + "문자열" -> 문자열
String str = 123 + 45 + “사과“ + “먹기”; // "문자열" + 다른 자료형 -> 문자열

📝 형변환 (Casting)

값(Data)의 자료형을 바꾸는 것 (boolean 제외)

  • 종류: 자동 형변환 / 강제 형변환
  • 형변환이 필요한 이유는 무엇일까?

컴퓨터는 기본적으로 같은 자료형끼리만 연산이 가능하여, 다른 자료형과 연산 시 오류가 발생한다. 이러한 상황을 해결하기 위해서 필요한 기술이 형변환이다.

💡 자동 형변환

: [값의 범위]가 큰 자료형과 [값의 범위]가 작은 자료형의 연산 시
작은 자료형이 큰 자료형으로 컴파일러에 의해 자동적으로 변환되는 것

		int num1 = 10;
		double num2 = 3.5;
		
		System.out.println("자동 형변환 결과 : " + (num1 + num2));
		// 원래 에러가 발생해야 되지만 "자동 형변환" 덕분에 발생하지 않음
		
		int i1 = 3;
		double d1 = i1; // double은 실수만 저장할 수 있는 자료형
						// 정수가 대입되는 연산이 수행되면

		System.out.println("i1 : " + i1);
		System.out.println("d1 : " + d1);
		
		System.out.println(d1 + num2); // double + double
		
		// int -> long 형변환
		int i2 = 2_100_000_000; // 21억
		long l2 = 10_000_000_000L; // 100억
		long result2 = i2 + l2;
		// int + long -> long + long = long
		
		System.out.println("result2 : " + result2);
		
		// char -> int 형변환
		char ch3 = 'V';
		int i3 = ch3; // 대입도 연산이다!
					  // int 변수 = char 값
					  //           -> int 자동 형변환
		
		System.out.println("i3 : " + i3);
		
		char ch4 = '각';
		int i4 = ch4;
		
		System.out.println(i4);
		
		// long -> float 자동 형변환
		long l5 = 123456789123456789L;
		float f5 = l5 * 100; // long 범위를 초과
		// float = long * int
		// float = long * long
		// float = long 결과
		// float = float(자동 형변환)
		
		System.out.println(f5); // -6.1010652E18 (오버플로우)
		
		// 오버플로우 현상은 컴퓨터가 미리 예측할 수 없다.
		// -> 개발자가 미리 예측을 해야 함
		
		int i6 = 2147483647; // int의 최대값
		int result6 = i6 + 1;
		System.out.println(result6); // -2147483648

💡 강제 형변환

기존 자료형을 원하는 자료형으로 강제 변환 시키는 것

1. 값의 범위가 큰 자료형을 작은 자료형으로 변환할 때
2. 출력되는 데이터의 표기법을 변화시키고 싶을 때

✏️ 강제 형변환 방법

자료형을 변환시키고 싶은 값 또는 변수 앞에 (자료형)을 작성해 준다.

		double temp = 3.14;
		int num = (int)temp; // Type mismatch: cannot convert from double to int

		System.out.println("temp : " + temp);
		System.out.println("num : " + num);
		// 실수 -> 정수형 변환 시 소수점 버림 처리(데이터 손실 발생)
		
		
		// int -> byte 강제 형변환
		int iNum = 290;
		byte bNum = (byte)iNum; // Type mismatch: cannot convert from int to byte
		
		System.out.println("int -> byte 강제 형변환");
		System.out.println("before : " + iNum);
		System.out.println("after : " + bNum);
		// 같은 정수형끼리의 변환 시에도
		// 값의 범위 차이 때문에 데이터 손실이 발생한다.
		
		// char -> int 강제 형변환
		char ch = 'A'; // 65
		int iNum2 = ch; // 자동 형변환 이용
		System.out.println(iNum2);
		
		// 강제 형변환 이용
		System.out.println((int)ch);
		
		// int -> char 강제 형변환
		int iNum3 = 44033;
		System.out.println(iNum3 + "번째 문자 : " + (char)iNum3);

언제 자동 형변환이 일어나는지, 또 언제 강제 형변환을 적절히 사용하는지 여러 번 복습과 반복 연습이 필요할 것 같다.
오늘도 열심히 공부한 나를 위해 박수. :)

profile
풀스택 개발자 기록집 📁

0개의 댓글