본문 바로가기

📚Study Note/JAVA

[변수와 자료형] 지역변수, 형 변환, 접미사, 자료형(boolean, char, double)

  변수와 자료형 

- 지역변수의 초기값 테스트
- 형 변환 / 접미사

 

public class Test006
{
	public static void main(String[] args)
	{
		// 변수 선언(지역 변수 a)
		int a;
		
		//System.out.println("a의 결과 : " + a);
		//-=>> 에러 발생(컴파일 에러)
		// 지역 변수를 초기화 하지 않고 사용했기 때문에 발생한 에러

		//Primitive Type 의 지역 변수는
		//초기화 과정을 거치지 않고 사용하지 못한다. 값이 담기지
		//않은 상태에서 출력하고자 하면 에러 발생하는 것이다.

		//초기화(→메모리에 값 할당)
		a= 10;

		//초기화 이후 다시 출력 
		//System.out.println("a의 결과 : " + a);

		//변수 선언 및 초기화
		byte b = 20;
		System.out.println("b의 결과 : " + b);

		short c;
		//연산 및 처리 ( 대입 연산 ) 
		//c = a;
		//결과 출력
		//System.out.println("c의 결과 : " + c);
		//-==>> 에러 발생(컴파일 에러)
		//에러 사유 → 자료형이 작은 것에 큰 것을 담지 못한다. (int → short)

		//(자동 형변환 규칙 위배)
		c = (short)a;
		System.out.println("c의 결과 : " + c);


        /*[출력결과]
		b의 결과 : 20
		c의 결과 : 10
		계속하려면 아무 키나 누르십시오 . . .*/


		//변수 선언 및 초기화
		long d = 10000000000L;           //--백억
		// 접미사 『L』이 중요하다.
		// long  형은 숫자(상수) 뒤에 L 또는 ㅣ을 붙여
		// 상수를 표현해야 한다,
		// 즉, 약 21억 이상 되는 상수에는 뒤에 접미사를 꼭 붙여줄 수 있도록 한다.
		System.out.println("d의 결과 : " + d);

		int e = 030;
		System.out.println("e의 결과 : " + e);
		//[출력결과] e의 결과 : 24

		//큰/작은따옴표가 없는 상태에서 숫자형태 데이터만 나열했을때
		//정수로 받아들여진다.
		//단, 접두사 0 → 8 진수의 형태로 표현된다.

		int f = 0xa6;
		System.out.println("f의 결과 : " + f);
		//접두사 0x → 16진수
		//-=>f의 결과 : 166

		float g = 0;
		System.out.println("g의 결과 : " + g);
		//-=> g의 결과 : 0.0

		//float h = 0.0;  //→ 이 경우에는 에러가 남(double에서 float자동형변환 안됨)
						  // possible lossy conversion from double to float
		float h = 0.0f;
		System.out.println("h의 결과 : " + h);	

		/*[출력결과]
		b의 결과 : 20
		c의 결과 : 10
		d의 결과 : 10000000000
		e의 결과 : 24
		f의 결과 : 166
		g의 결과 : 0.0
		h의 결과 : 0.0
		*/
		
/* f를 붙이는 이유?
지금 저장하는 실수형 데이터가  float타입이라는 것을 컴퓨터에게 알리기 위한 용도
만약 f가 없다면 자바는 이 data를 double로 인식하게 되고, 
4바이트가 초과되는 영역은 잘리게 된다는 오류발생. (float는 4바이트, double은 8바이트이므로)*/
		

	}
}



- 변수와 자료형 실습 및 테스트 : boolean

 


public class Test007
{
	public static void main(String[] args)
	{
		// 주요 변수 선언
		boolean a = true;
		boolean b ;

		int c=10, d=5;



		//연산 및 처리 ( 관계 연산 및 대입 연산 ) 
		b = c < d;
		// b=10<d;
		//b=10<5;
		//b=false;

		//결과 출력
		System.out.println("a : " + a );
		System.out.println("b : " + b);

		//[결과출력]
		//a : true
		//b : false
		//계속하려면 아무 키나 누르십시오 . . .


	}
}

 

- 변수와 자료형 실습 및 테스트 : Char

public class Test008
{
	public static void main(String[] args)
	{
		// 주요 변수 선언
		char ch1, ch2, ch3;
		int a;


		// 연산 및 처리
		ch1 = 'A';
		ch2 = '\n';
		//역슬래시 n 합쳐진 자체가 하나의 문자라고 인식하면 됨 , 마치 ㄷ ㅔ 데 처럼 
		ch3 = '대';
		a = 'A';
		//이 경우 문제없이 자동형변환이 되지만 (int)'A' 가급적이면 이렇게 명시적으로 쓰도록 권장하는 편


		// 결과 출력
		System.out.println("ch1 : " +ch1);
		System.out.println("ch2 : " +ch2);
		System.out.println("ch3 : " + ch3);
		System.out.println( "a : " + a);
	}

	/*[출력결과]
	ch1 : A
	ch2 :
	ch3 : 대
	a : 65
	계속하려면 아무 키나 누르십시오 . . .
	*/

}

 

- 변수와 자료형 실습 및 테스트 : double

 

public class  Test009
{
	public static void main(String[] args)
	{
		// 정수와 정수의 나눗셈
		double a = 1/2;
		//double a = 0.0; 
		System.out.println("double  a : " + a);
	
		double b = 1/2 + 1/2;
		System.out.println("double b : " + b);
		//☆대입연산자 왼쪽은 신경쓰지 않고 우선 오른편부터 본다.
	    
		double c = 1/2.0;
		System.out.println("double c : " + c);
		// ★★나눗셈에 실수가 포함될 때는 실수기반으로 나온다.★★
		// int / double 의 경우 연산을 위해 형변환이 필요하기에 int → double 이 된다.

		//	나눗셈 연산과 관련하여 피연산자 중 실수가 포함되어 있다면
		//	실수 기반의 연산이 이뤄지며 결과값은 실수 형태로
		//	연산되어 반환된다.

		double d = 3/2 + 1/2;
		//double d = 1 + 1/2;
		//double d = 1 + 0;


		System.out.println("double d : " + d);
		//답은 1.0
		double e = 3/2 + 1/2.0;
		System.out.println("double e : " + e);
		//답은 1.5

/*
double  a : 0.0
double b : 0.0
double c : 0.5
double d : 1.0
double e : 1.5
계속하려면 아무 키나 누르십시오 . . .*/

         
	
	}
}

 

- 사전에 부여된 반지름 정보를 통해

  원의 넓이와 둘레를 구하는 프로그램을 작성

// 실행 예 )
// 넓이 : ----
// 둘레 : ----
// 계속하려면 아무 키나 누르세요...
// 원의 둘레 = 반지름 * 2 * 3.14
// 원의 넓이 = 반지름 * 반지름 * 3.14

public class Test010
{
	public static void main(String[] args) 
		{
		    int r =10;	
					
			System.out.println("넓이 : " + r * r * 3.14);
			System.out.println("둘레 : " + (r * 2 * 3.14));
			/*[실행결과]
			넓이 : 314.0
			둘레 : 62.800000000000004
			계속하려면 아무 키나 누르십시오 . . .
			*/

			//주요 변수 선언
			
			double pi= 3.141592;		//원주율
			//final double PI = 3.141592;
			// 키워드 <final> : 변수의 상수화(원래는 변수지만 키워드 붙여서 상수처럼 쓰게 만든 것 뿐 상수자체는 아니다)
			double area, length;
			//연산 및 처리
			area = r*r*pi;
			length = r*2*pi;
			//결과출력
			System.out.println("넓이 : " + area);
			System.out.println("둘레 : " + length);
			
			/*
			넓이 : 314.1592
			둘레 : 62.83184*/			
			
			
			System.out.print("넓이 : " + area +"\n둘레 : " + length);
			System.out.println();
			System.out.printf("넓이 : %.2f\n둘레 : %.2f\n", area, length); 

			/*
			넓이 : 314.1592
			둘레 : 62.83184
			넓이 : 314.16
			둘레 : 62.83
			*/

			// <%f> 10진수 실수형을 담아내는 옵션문자
			// 『%.2f』 는 소숫점 이하 둘째자리까지 표현하겠다는 의미의 추가 옵션



		}

}