자바의 정석 Day2

AWESOMee·2022년 7월 11일
0

JAVA

목록 보기
2/5
post-thumbnail

자동형변환

// int 타입 값을 float 타입의 변수에 저장
// (float)가 없어도 컴파일러가 자동으로 형변환함
float f = 1234;
float f = (float)1234;

int i = 3.14f; // 에러
int i = (int)3.14f; // 수동 형변환 해줘야 함

byte b = 100;
// byte 타입의 범위(-128 ~ 127의 값을 대입하기 때문에 자동 형변환 가능함)
// 리터럴 값을 대입하기 때문에 가능하고 int 타입의 변수를 대입하면 에러남
int i = 0;
byte b = i; // 에러
byte b = (byte)i; // 수동 형변환해줘야 함

산술변환

연산 전에 피연산자의 타입을 일치시키는 것

  • 두 피연산자의 타입을 같게 일치시킨다.(보다 큰 타입으로 일치)
  • 피연산자의 타입이 int보다 작은 타입으면 int로 변환된다.
    ex) byte + short = int + int = int
    -> (char)'2' - (char)'0' => (int)50 - (int)48 = (int)2

비교연산자

'A' > 'B' // false : char타입의 값이기 때문에 int 타입으로 변환되어 비교 연산됨

문자열의 비교

  • 문자열의 비교에는 == 대신 equals()사용(대소문자 구분)
  • .equalsIgnoreCase(): 대소문자 구분하지 않고 비교함

Switch문

  • 처리해야 하는 경우의 수가 많을 때 유용함
  • switch문은 if-else문으로 변경가능하나, if-else문은 switch문으로 변경하지 못하는 경우도 있음
  • break; 빼먹지 않도록 유의
  • switch문의 제약 조건
    • switch문의 조건식 결과는 정수 또는 문자열이어야 함
    • case 문의 값은 정수, 상수(문자 포함), 문자열만 가능하고(변수 불가), 중복되지 않아야 함

이름붙은 반복문

Loop1 : for(int i = 2; i <= 9; i++) {
	for(int j = 1; j <= 9; j++){
    	if(j == 5)
        	break Loop1;
        System.out.println(i + "*" + j + "=" + (i * j));
    } // end of for i
    System.out.println();
} // end of Loop1

// -> output
// 2*1=2
// 2*2=4
// 2*3=6
// 2*4=8
Loop1 : // for loop에 "Loop1"이라는 이름을 붙임
for(int i = 2; i <= 9; i++) {
	for(int j = 1; j <= 9; j++){
    	if(j == 5)
        	break;
        System.out.println(i + "*" + j + "=" + (i * j));
    } // end of for i
    System.out.println();
} // end of Loop1

// -> output
// 2*1=2
// 2*2=4
// 2*3=6
// 2*4=8

// 3*1=3
// 3*2=6
// .
// .
// .
// 9*4=36

배열

같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
ex) int[] score = new int[5]; / int score[] = new int[5];

  • 배열의 선언: 배열을 다루기 위한 참조변수의 선언
    타입[] 배열이름;
  • 배열의 생성
    배열이름 = new 타입[길이];
  • 배열의 인덱스: 각 요소에 자동으로 붙는 일련 번호
    인덱스의 범위는 0부터 '배열길이-1'까지
  • 배열은 한번 생성하면 그 길이를 바꿀 수 없음(memory issue)
    -> 배열의 길이가 부족하면 더 큰 크기의 배열을 만들고 기존의 값들을 집어넣는 방식
  • 배열의 초기화: 배열의 각 요소에 처음으로 값을 저장하는 것
    배열이름[인덱스] = 값;
    타입[] 배열이름 = { 값1, 값2, 값3, ...}
  • 배열의 출력: for문 이용해도 되지만
    간편하게 쓰는 방법: Arrays.toString(iArr)
  • 로또번호 구하기
int[] ball = new int[45];

// 배열의 각 요소에 1~45의 값을 저장
for(int i = 0; i < ball.length; i++) {
	ball[i] = i+1;
}

int tmp = 0, j = 0;

// 배열의 i번째 요소와 임의의 요소에 저장된 값을 서로 바꿔서 값을 섞음
// 0번째부터 5번째 요소까지 6개만 바꿈
for(int i = 0; i < 6; i++) {
	j = (int)(Math.random() * 45);
    tmp = ball[i];
    ball[i] = ball[j];
    ball[j] = tmp;
}

// 배열 ball의 앞에서부터 6개의 요소를 출력
for(int i = 0; i < 6; i++) {
	System.out.println(ball[i]);
}
profile
개발을 배우는 듯 하면서도

0개의 댓글