생활코딩

[생활코딩] 8. 변수

주니어주니 2022. 8. 8. 15:58
  • 8.1. 변수의 의의
  • 변수: 그 값이 변할 수 있는 문자

 

그냥 a=1; 이라고 했을 때 오류가 나는 이유

: 변수를 만들 때 저 변수 안에 어떤 데이터타입이 들어갈 수 있는지를 지정해야 하는데 지정하지 않았음.

 

a=1; 에서의 1은 number, 정확히는 integer(정수)

1,2,3,4,... : 자연수(natural number)
-4,-3,-2,-1,0,1,2,3,4,...: 정수(integer)
-2.0, -1.0, 0, 1.0, 2.0 ...: 실수(real number) -> 자바에서는 double 로 알고있어라

 

그래서 a의 앞에

int a =1; 을 붙여줘야 함

1은 정수기 때문에 a 라는 변수 안에 들어갈 수 있는 것

 

int b =1.1; 이 안되는 이유

우리가 b라는 변수 안에는 정수라는 데이터타입만 올 수 있다고 해놨는데, 1.1은 정수가 아니라 실수(real number)

 

double b = 1.1;

b라는 변수 안에는 실수값이 올 수 있다.

 

 자바에서 변수를 만들 때는 그 변수가 어떤 데이터타입을 담을 수 있는지를 명확하게 표현해야 함!!

왜 이렇게 번거롭게 하냐? 그 변수 안에 어떤 값이 들어가 있다면 그 값은 반드시 정수거나 문자열이라는 것을 확신할 수 있기 때문에

public class Variable {

	public static void main(String[] args) {
	
		int a = 1; //Number -> integer (-2,-1,0,1,2,...)
		System.out.println(a);
		
		double b = 1.1; //real number -> double (-2.0, -1.0, 0, 1.0, 2.0, ...)
		System.out.println(b);
		
		// int c = "Hello World" : c에는 정수만 올 수 있다. 문자열은 안됨
		String c = "Hello World";
		System.out.println(c);
		
	}
}

 

  • 8.2. 변수의 효용

※변수는 반복작업을 줄일 수 있다. 반복해서 들어가는 요소를 변수로 지정한 후 그 변수에 지정된 값을 교체하면 한꺼번에 변경 가능.

system.out.println("Hello, egoing ... egoing ... egoing ... bye");

에서 egoing 이라는 텍스트를 바꾸고 싶을 때

replace로 하는 법도 있지만, 더 좋은 방법은 변수를 활용하는 것

 

String name = "egoing";

에서 name 에는 문자열만 올 수 있는 것

 

String name = "egoing";

System.out.println("Hello, "+name+" ... "+name+" ... egoing ... bye");

+가 들어가는 이유: 문자열과 변수를 연결해주는 연산자

 

또한,

System.out.println(10);

이라고 하면 의미를 파악할 수 없음

 

double VAT = 10.0;

System.out.println(VAT);

 

※코드를 봤을 때 그 코드의 의미를 빨리 파악할 수 있도록 코드를 작성하는 것이 가장 중요함

그 때 사용하는 가장 중요한 수단 중 하나가 변수

값의 이름을 부여하는 것

 

public class Letter {

	public static void main(String[] args) {
	    String name = "egoing";
		System.out.println("Hello, "+name+" ... "+name+" ... egoing ... bye");
		
		double VAT = 10.0;
		System.out.println(VAT);
	}
}

 

  • 8.3. 데이터 타입의 변환(casting)
  • casting: 데이터 타입을 다른 데이터 타입으로 convert하는 것

double a = 1.1;                  //실수

double b = 1;                     //1은 소수점이 없기 때문에 정수(integer)인데 오류가 나지 않음(왜? 손실이 나지 않기 때문)

double b2 = (double) 1;    // 명시적으로(수동적) 바꿔준 것.

System.out.pirntln(b);         //저 변수가 실수이기 때문에 실수 형태로 바껴서 출력

 

int c = 1.1;

실수를 정수형으로 convert하면 오류. 1.1을 1로 바꾸면 0.1을 잃어버리기 때문

 

방법1)

double d = 1.1;

// int를 double로 변경

 

방법2)

int e = (int) 1.1;

// add cast to (int) (int 형태로 강제로(명시적으로) 바꾸는 추가기능)

 

system.out.println(e);

출력하면 1

 

1.1(double) ---> 1.0(int) 강제로 바꾸면 0.1 손실

 

  • 1(int)을 string으로 바꾸고 싶으면? 구글링

예) java int to string casting

String f = Integer.toString(1);

 

public class Casting {

	public static void main(String[] args) {
		
		double a = 1.1; //실수
		double b = 1; //소수점이 없기 때문에 정수(integer)인데 오류가 나지 않음
		System.out.println(b); //저 변수가 실수이기 때문에 실수 형태로 바껴서 출력
		
		//실수를 정수형으로 convert하면 오류. 1.1을 1로 바꾸면 0.1을 잃어버리기 때문
		// int c = 1.1; 
		double d = 1.1; // int를 double로 변경
		int e = (int) 1.1; // add cast to 'int'(int 형태로 강제로 바꾸는 추가기능)
		System.out.println(e);
		
		
		// 1 to String
		String f = Integer.toString(1);
		System.out.println(f);
	
	}
}

'생활코딩' 카테고리의 다른 글

[생활코딩] 10. 디버거  (0) 2022.08.08
[생활코딩] 9. 프로그래밍  (0) 2022.08.08
[생활코딩] 6. 데이터 타입  (0) 2022.08.08
[생활코딩] 5. Hello Java World  (0) 2022.08.08
[생활코딩] 4. 실행  (0) 2022.08.08