문자 타입

char 타입 : 하나의 문자를 작은따옴표(')로 감싼 것을 문자 리터럴임

유니코드로 변환되어 저장

'A'는 10진수로 65, 16진수로 0x0041 

char 변수에 직접 저장 가능

int var2 = 'A'; 출력시 65출력

char var3 = 'A' 출력시 A 출력

 

String( 문자열 ) 타입

큰따옴표(")로 감싼 문자 또는 여러 개의 문자들로 저장 가능

유니코드로 변환되어 저장되지 않음

문자열 내부에 역슬래시(\)가 붙은 문자 사용 가능 ( 이스케이프 문자 )

/t 탭만큼 띄움, /n 줄 바꿈(라인 피드), /r 캐리지리턴, /" 큰따옴표 출력

\\ 역슬래쉬 출력, \u16진수 16진수 유니코드 출력

 

실수 타입

소수점이 있는 실수 리터럴을 저장할 수 있는 타입 float, double이 있음

정밀도 수에 따라 소수점 뒤에 있는 숫자 정확도가 틀림 float은 7자리, double은 15자리

알파벳 소문자 e 또는 대문자 E가 포함되어 있는 숫자 리터럴은 지수와 가수로 표현된

소수점이 있는 10진수 실수로 인식

기본적으로 double 타입 변수에 저장 double var = 3.14

 

논리 타입

참과 거짓을 의미하는 true와 false를 사용

조건문과 제어문의 실행 흐름을 변경하는데 많이 사용

 

 

 

자동 타입 변환

값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 저장될 때 발생

큰 허용 범위 타입 <- 작은 허용 범위 타입

byte < short < int < long < float < double

정수 타입이 실수 타입으로 저장될 경우에는 무조건 자동 타입 변환 

실수 타입은 정수타입보다 허용 범위가 더 크기 때문에

char 타입의 경우 int 타입으로 자동 타입 변환되면 유니코드 값이 int 타입에 저장 

char charVal = 'A';

int intVal = charVal; ( 65 저장 )  

char 타입의 허용범위는 음수를 포함하지 않기 때문에 자동타입변환 x ( 컴파일 에러 )

 

강제 타입 변환

큰 허용 범위 타입은 작은 허용 범위 타입으로 자동 타입 변환될 수 없음

하지만 큰 허용 범위 타입을 작은 허용 범위 타입으로 강제로 나눠서 저장 가능 이것이 강제 타입 변환

강제 타입 변환은 캐스팅 연산자 괄호 ( ) 를 사용, 괄호 안에 들어가는 타입은 나누는 단위

작은 허용 범위 타입 <- ( 작은 허용 범위 타입 ) 큰 허용 범위 타입

int intVar = 10;

byte byteVar = ( byte ) intVal // 강제 타입 변환

 

int intVar = 65;

char charVar = ( char ) intVar

s.o.p( charVar ); // "A"가 출력

 

double doubleVar = 3.14;

int intVar = ( int ) doubleVar; // 소수점 이하 부분은 버려지고 3 저장

 

 

정수 연산에서의 자동 타입 변환

정수 타입 변수가 산술 연산식에서 피연산자로 사용되면  int 타입보다 작은 byte, short 타입의 변수는

int 타입으로 자동 타입 변환되어 연산을 수행합니다.

 

1. byte 타입 변수가 피연산자로 사용된 경우

byte x = 10;

byte y = 20;

byte result = x + y; // 컴파일 에러

int result = x + y;

 

2. int 타입 변수가 피연산자로 사용된 경우 

int x = 10;

int y = 20;

int result = x + y;

타입 변환이 줄면 실행 성능 향상 2번째 코드가 적절함

 

두 피연산자 중 허용 범위가 큰 타입으로 변환되어 연산을 수행

 

 

실수 연산에서의 자동 타입 변환

실수 타입 변수가 산술연산식에서 피연산자로 사용될 경우 두 피연산자가 동일한 타입이라면 해당 타입으로

연산되지만, 피연산자 중 하나가 double 타입이라면 다른 피연산자도 double 타입으로 자동 타입 변환되어 연산 수행, 따라서 연산 결과는 doble 타입이 됨

 

                          float   double

double result = 1.2f + 3.4

                           float이 double로 변경되서 double + double로 연산되어 result에 저장

int도 동일 

 

만약 int 타입으로 연산을 해야 한다면 double 타입을 int 타입으로 강제 변환하고 덧셈 연산을 수행

int intVar = 10;

double doubleVar = 5.5;

int result = intVar + (int) doubleVar; // 15가 저장됨

 

int x = 1;

int y = 2;

double result = x / y;

s.o.p(result); // 연산 결과는 0이 나옴 

위 코드 결과가 0.5가 되기 위해서는 x / y를 정수 연산이 아니라 실수 연산으로 변경 해야됨

 

3가지 방법

1.

int x = 1;

int y = 2;

double result = (double)x / y;

 

2.

int x = 1;

int y = 2;

double result = x / (double)y;

 

3.

int x = 1;

int y = 2;

double result = (double)x / (double)y;

 

(double) (x / y)로 연산시 0.5가 아니라 0.0출력 이유는 (x / y)가 먼저 연산되어 0이 되고 (double) 0.0이 됨

 

 

+연산에서의 문자열 자동 타입 변환

System.out.println(10+2+8);// 20
System.out.println(10+2+"8");// 128
System.out.println(10+"2"+8);// 1028
System.out.println("10"+2+8);// 1028
System.out.println(""+2+8);// 28 (""뒤에 부터 문장열)

System.out.println("10"+ ( 2+8 ));// 1010

 

 

 

실습

package sec02.exam02;

public class Ex001 {

	public static void main(String[] args) {
		long var1 = 10;
		long var2 = 20L;
//		long var3 = 3000000000; 컴파일 에러
		long var4 = 3000000000L; 
		
		char var5 = 'A'; 
		char var6 = 65;
		char var7 = '\u0041';
		
		char var8 = 'A';
//		char var9 = "A"; 컴파일 에러
		String var10 = "A";
		
		String var11 = "\t A"; // 이스케이프
		String var12= "\" A";
		
		double var13 = 3e6;
		float  var18 = 1e2f;
		
		float var14 = 3.14f;
		double var15 = 3.14;
//		double var19 = 2e-350; -324까지 가능
		
		boolean var16 = false;
		boolean var17 = true;
		if (var16) { // true면 출력 false면 출력x
			System.out.println(var5);
			System.out.println(var6);
			System.out.println(var7);
			
			System.out.println(var10);
			System.out.println(var11);
			
			System.out.println(var13);
			
		}
		
		System.out.println(var5);
		System.out.println(var6);
		System.out.println(var7);
		
		System.out.println(var10);
		System.out.println(var11);
		
		System.out.println(var13);
		

	}

}

 

package sec02.exam02;

public class Ex002 {

	public static void main(String[] args) {
		//강제 타입변환
		int intValue = 10;
		byte byteValue = (byte)intValue;
		
		// "A"가 출력
		int intValue2 = 65;
		char charValue = (char)intValue2;
		
		//intValue3는 정수 부분인 3만 저장
		double doubleValue = 3.14;
		int intValue3 = (int)doubleValue;
		
		//intValue4는 int 최대 값 21억 출력
		double doubleValue2 = 3000000000.0;
		int intValue4 = (int)doubleValue2;
		System.out.println(intValue4);
		
		

	}

}

 

package sec02.exam02;

public class Ex003 {

	public static void main(String[] args) {
		byte byteValue1 = 10;
		byte byteValue2 = 20;
//		byteValue3 = byteValue1 + byteValue2; 컴파일 에러
		int byteValue3 = byteValue1 + (int)byteValue2;
		System.out.println(byteValue3);
		
		char charValue1 = 'A';
		char charValue2 = 1;
//		char charValue3 = charValue1 + charValue2; 컴파일 에러
		int charValue3 = charValue1 + charValue2;
		System.out.println("유니코드="+charValue3);
		System.out.println("출력문자="+(char)charValue3);
		
		int intValue3 = 10;
		int intValue4 = intValue3/4;
		System.out.println(intValue4);
		
		int intValue5 = 10;
//		int intValue6 = 10/4.0; 컴파일 에러
		double doubleValue = intValue5 / 4.0;
		System.out.println(doubleValue);
		
		int x = 1;
		int y = 2;
		double result = (double)x / y;
		System.out.println(result);
		
		
		
	}

}

 

package sec02.exam02;

public class Ex004 {

	public static void main(String[] args) {
//		System.out.println(10+2+8);// 20
//		System.out.println(10+2+"8");// 128
//		System.out.println(10+"2"+8);// 1028
//		System.out.println("10"+2+8);// 1028
//		System.out.println(""+2+8);// 28 (""뒤에 부터 문장열)
		
		
		int value1 = Integer.parseInt("10");
		double value2 = Double.parseDouble("3.14");
		boolean value3 = Boolean.parseBoolean("true");
		
		System.out.println("value1:" + value1);
		System.out.println("value2:" + value2);
		System.out.println("value3:" + value3);
		
		String str1 = String.valueOf(10);
		String str2 = String.valueOf(3.14);
		String str3 = String.valueOf(true);
		
		System.out.println("str1:" + str1);
		System.out.println("str2:" + str2);
		System.out.println("str3:" + str3);
		

		
		
		
	}

}

 

 

HTML, CSS 활용 1차 구현 

 

 

 

 

 

 

 

 

 

 

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-05-23 6일차  (0) 2023.05.23
2023-05-22 5일차  (0) 2023.05.22
2023-05-19 4일차  (0) 2023.05.19
2023-05-17 2일차  (0) 2023.05.17
2023-05-16 1일차  (0) 2023.05.16

+ Recent posts