본문 바로가기

프로그래밍

자바의 타입 변환1 두 변수의 타입이 동일할 경우, 한쪽 변수값을 다른 쪽 변수에 저장할 수 있습니다. 하지만 두변수의 타입이 다르다면 가능할 수도 아닐 수도 있습니다. 타입변환에는 두가지가 있습니다. 하나는 자동타입변환이고 다른 하나는 강제타입변환입니다. 자동 타입 변환자동타입변환(Promotion)은 말 그대로 자동으로 타입 변환이 일어나는 것을 말합니다. 자동타입변환은 값의 허용범위가 작은 타입이 값이 허용범위가 큰 타입으로 저장될 때 발생합니다. 기본 타입을 허용 범위 크기 순으로 정리하면 다음과 같습니다. byte < short < int < long < float < double 하지만 자동타입변환에서 예외사항이 있습니다. char 타입보다 허용범위가 작은 byte 타입은 char 타입으로 자동 타입 변환될 수 .. 더보기
자바의 실수형과 논리형 변수 실수 타입자바에서 실수형은 float과 double로 나뉩니다. 크기는 4byte와 8byte이고 정밀도에서 차이가 있습니다. 밑의 예제를 통해 비교해보겠습니다. 라인5에서는 컴파일에러가 발생하기때문에 주석처리를 했습니다. float형에 값을 넣을때 리터럴의 끝에 'f' 또는 'F'를 넣어야합니다. 그래서 자바에서 실수형을 사용할 때는 double 형을 사용하는 것을 추천합니다. 정밀도에 있어서도 var4와 var5의 출력결과를 알 수 있듯이 2배정도의 차이가 납니다. 또한 값을 넣을 때 문자 'e'또는 'E'를 사용해서 지수형으로 사용할 수도 있습니다. 논리 타입자바는 참과 거짓을 의미하는 논리 리터럴로 true와 false를 사용합니다. 이 true와 false는 논리타입 변수에 저장이 됩니다. 논리.. 더보기
자바의 문자열 타입과 String 타입 String 타입작은따옴표(')로 감싼 문자는char 타입 변수에 저장되어 유니코드로 저장되지만, 큰따옴표(")로 감싼 문자 또는 여러 개의 문자들은 유니코드로 변환되지 않습니다. 다음은 잘못 작성된 코드예제입니다. char var1 = "A";char var2 = "홍길동"; 자바에서 큰따옴표(")로 감싼 문자들을 문자열이라고 부릅니다. 문자열을 변수에 저장하고 싶다면 다음과 같이 String 타입을 사용해야합니다. String var1 = "A";String var2 = "홍길동"; String 타입은 정수형이나 실수형같은 기본타입이 아니고 클래스 타입입니다. 클래스 타입은 나중에 뒤에서 설명하겠습니다. String 타입은 클래스 타입이므로 char, int 같은 기본타입과는 다르게 첫문자가 대문자 .. 더보기
자바의 정수형 타입과 char 타입 char 타입하나의 문자를 작은따옴표(')로 감싼 것을 문자리터럴이라고 합니다. 문자 리터럴은 유니코드로 변환되어 저장됩니다. 유니코드는 세계각국의 문자를 2byte로 표현할 수 있는 숫자(0 ~ 65535)로 매핑한 국제 표준 규약입니다. 자바는 이러한 유니코드를 저장할 수 있도록 2byte크기인 char 타입을 제공합니다. char var1 = 'A'; // 유니코드: 65char var2 = 'B'; // 유니코드: 66char var3 = '가'; // 유니코드: 44032char var4 = '각'; // 유니코드: 44033 여기서 약간 혼동이 올 수도 있는데 char타입은 사실 정수형 변수입니다. 그래서 작은따옴표로 감싼 문자가 아닌 숫자로 값을 저장해도 유니코드로 저장됩니다. 예를 들면 다.. 더보기
long 타입 long 타입은 정수형 타입에서 가장 큰 타입입니다. 8byte의 크기를 가지고 있습니다. 정확한 허용범위까지 외울필요는 없지만 큰 정수를 저장하려면long 타입을 사용하도록 합니다. 크기가 크다고 생각되면 int보다 long을 사용하는 것이 더 좋습니다. 그러나 큰 정수값을 표현하고자 한다면 값의 제일 뒤에 영문자 'l'이나 'L'을 사용해야합니다. 하지만 소문자 'l'은 1과 혼동하기 쉬우므로 대문자 'L'을 사용하도록 합니다. 다음의 예제를 보면서 설명하도록 하겠습니다. 위의 예제에서 7번째 줄을 보면 1000000000000을 저장하려고 하는데 그냥 1000000000000을 입력하려고 하면 변수 var3는 long 타입이지만1000000000000 이 int 타입의 범위를 넘기때문에 컴파일에러가.. 더보기
byte 타입 변수 오늘은 정수형 타입 중에서 가장 작은 타입인 byte 타입에 대해 알아보도록 하겠습니다. byte 타입은 1byte메모리를 차지하고 -128 ~ 128 값을 가질 수 있습니다. 아래 예제를 통해 설명해보도록 하겠습니다. 위의 소스코드에서 10번째 줄을 보면 var6 = 128;을 보면 byte 타입인 var6에 128을 대입시키려고 하면 값의 허용범위를 넘기때문에 오류가 발생합니다. 이처럼 각 타입별로 허용범위를 알고 있는 것이 중요합니다. 하지만 정수형은 특별한 경우가 아니면 int형이나 long을 사용하여 큰 정수형을 저장할 수 있도록 하는 것이 좋습니다. 더보기
변수 기본타입 자바는 정수, 실수, 논리값을 저장할 수 있는 기본(primitive)타입을 제공합니다. 자바가 제공하는 기본타입은 총 8개입니다.정수를 저장할 수 있는 타입에는 byte, char, short, int, long이 있고, 소수점이 있는 실수를 저장할 수 있는 타입에는 float, double이 있습니다. 그리고 true, false 값은 논리값을 저장할 수 있는 타입에는 boolean이 있습니다. 정수타입 타입 메모리사용크기 저장되는 값의 허용범위 byte 1byte 8bit -128 ~ 127 short 2byte 16bit -32,768 ~ 32,767 char 2byte 16bit 0 ~ 65535(유니코드) int 4byte 32bit -2,147,483,648 ~ 2,147,483,647 lo.. 더보기
변수 사용범위 자바는 기본적으로 지역변수를 사용하고 있고 이것은 정의된 위치에 따라 범위가 결정됩니다. 기본적으로 선언된 { } 가 사용범위입니다. 예를 들어보겠습니다. 위에서보면 v2는 if 블럭안에서 정의되었습니다. 그러면 if 블럭이 변수의 사용범위입니다. v2가 if 블럭을 벗어나는 순간 v2는 사라지게 됩니다. 그래서 그 다음 문장인 int v3 = v1 + v2 + 5; 에서 에러가 발생하는 것입니다. 위의 예제를 에러없이 수정하기 위해서는 v2를 if 블럭밖에 선언을 하면 됩니다. 즉 v1선언 문장 바로 밑에 선언하면 됩니다. #혼공자 #혼자공부하는자바 #변수사용범위 더보기