[211102] 교육 2일차

oxllz·2022년 1월 21일
0

교육

목록 보기
2/41

자료형

public class Test008 {
	public static void main( String[] args ) {
		System.out.println( 10.0 + 10.0 ); // 20.0
		System.out.println( 10 + 10 );
		System.out.println( 10.0 / 3.0 );  // 3.33xxx..5
		System.out.println( 10 / 3 );	   // 3
	}
}

자바에서 실수의 대표는 double 이고, 정수의 대표는 int.

double + double = double
int + int = int

10.0 / 3.0 == 3.333333 ???

위의 결과는 true 가 나올수도 false 가 나올수도 있다.
왜냐?
실수형 변수는 정확한 값이 아니라 "컴퓨터가 표현 가능한 최고 근사치" 를 표현한다. 자료형은 크기가 정해져있어 저장될 수 있는 값이 유한하다. 때문에 실수를 계산할때는 정확한 결과를 기대하기는 어렵다.

"컴퓨터는 기본적으로 같은 타입의 자료형끼리 연산한다." ( ALU )
int * int = int
int - int = int
double / double = double

public class Test009 {
	public static void main( String[] args ) {
		System.out.println( 10 + 10.0 );   //20.0
		System.out.println( 10.0 + 10 );   //20.0
		System.out.println( 10 + (int)10.0 );  //20
	}
}

008번 코드의 설명에서 기본적으로 같은 타입의 자료형끼리 연산한다고 했는데 자료형이 다를 경우 크기가 작은쪽의 자료형(int)이 큰 쪽의 자료형(double)으로 자동 형변환 되어 동작된다.

int + double => double + double = double


반복문

public class Test010{
	public static void main( String[] args){	
		for(int i = 0; i < 5; i++){
			System.out.println( i );
		}
        //
		for( int j = 0; j < 3; j++){
			for( int k = 0; k < 2; k++){
				System.out.println("Helloworld");
			}
		}
	}
}


[1] 구역에서 i라는 변수를 선언한다.
[2] 구역에서 조건을 검사하고 참이면 [4] 로 이동한다.
[4] 구역에서의 코드를 수행하고
[3] 구역으로 이동해 i 를 증감시키고 다시 [2] 구역으로 이동해 조건을 검사한다.

[1] - [2] - [4] - [3] - [2] - [4] - [3] ... 을 반복하다가
[2] 구역에서의 조건이 거짓이 되면 반복문을 종료한다.

  • 이때 [1] 영역에서 선언된 i 는 [4] 영역 안에서만 사용 가능하다.
// 별찍기
public class Test011 {
	public static void main( String[] args ) {
		int len = 4;
		for( int i = 0 ; i < len ; i++ ) {
			for( int j = 0; j < (i+1) ; j++ ) {
				System.out.print("*");
			}
			System.out.println("");
		}
		for( int i = 0 ; i < (len-1) ; i++ ) {
			for( int j = 0; j < (len-1-i) ; j++ ) {
				System.out.print("*");
			}
			System.out.println("");
		}
	}
}

0개의 댓글