///////
Search

캐스팅, 연산자, 반복문, 배열

날짜
2022/09/21
태그
자바

상수와 형변환(Casting)

상수

상수의 개념

final int SIZE = 100; SIZE = 200;
Plain Text
복사
값을 한번만 저장할 수 있는 공간
변경 불가
키워드 final
예제) 반지름이 5인 원의 넓이를 구하시오
public class Ex { static final double SIZE = 3.14; public static void main(String[] args) { double area = Math.pow(5, 2) * SIZE; System.out.println(area); } }
Plain Text
복사

리터럴의 개념

int num = 10;
Plain Text
복사
변하지 않는 데이터
우리가 기존에 알고 있던 상수
프로그래밍에서의 상수 의 정의가 값을 한 번 저장하면 변경할 수 없는 저장공간 이기에 리터럴이란 용어를 도입
num 은 변수명, 10 은 리터럴

형변환

형변환(Casting) 이란?

변수 또는 상수의 타입을 다른 타입으로 변환하는 것

형변환이 왜 필요한데?

컴퓨터는 이진수만 처리한다
두 피연산자의 자료형이 일치해야 동일한 방법을 적용해 연산 가능

형변환 방법

타입)피연산자
괄호()는 캐스트 연산자 or 형변환 연산자라고 하며, 형변환을 캐스팅(Casting) 이라고도 한다.
double d = 86.4; int score = (int) d; System.out.println("score=" + score); System.out.println("d=" + d); //결과 //score=85 //d=85.4
Plain Text
복사
출력된 d를 보면 형변환 후에도 피연산자에는 아무런 변화가 없다.

자동 형변환

자동 형변환은 컴파일러가 알아서 해준다.
<span style='background-color:green'>기존의 값을 최대한 보존할 수 있는 타입으로 자동 형변환된다.</span>

명시적 형변환

double pi = 3.1415; int wholeNumber = (int)pi;
Plain Text
복사
명시적 형변환을 사용하면 컴파일러가 개발자가 의도적으로 한 것이라 판단하고 에러를 내지 않는다.

산술 변환

1.
두 피연산자의 타입을 같게 일치시킨다. (보다 큰 타입으로 일치) <span style='background-color:green'>값 손실 최소화가 목표</span>
long + int long + long long
float + int float + float float
double + float double + double double
2.
피연산자의 타입이 int보다 작은 타입이면 int로 변환된다. <span style='background-color:green'>오버플로우 방지</span> (JVM이 32bit이기 때문에)
byte + short int + int int
char + short int + int int
정수형 실수형으로 형변환을 할 때는 정밀도가 더 높은 double 로 변환해주자.

연산자

연산자의 이해

연산자

3.14*radius*radius 에서 연산자는

연산자 우선순위에서 중요한 점

() 괄호는 최우선 연산자 - 실무에서 많이 쓰임
결합 방향은 같은 우선 순위일 때 먼저 계산 하는 것

문자열 연산자

String str = "JDK" + 3 + 3.0; // 출력 결과 : JDK33.0
Plain Text
복사
문자열과 숫자가 있으면, 문자열로 결합

삼항 연산자

3개의 피연산자를 필요로 한다.
ex) 세수 중에서 가장 큰 값은?
int a = 10, b = 20, c = 30; int result = ((a>b) ? a : b) > c) ? ((a>b) ? a : b) : c
Plain Text
복사

반복문

while 문

while문은 한 번도 실행되지 않을 수 있다!
while(조건식) { // 조건식의 연산결과가 참(true)인 동안 반복될 문장들을 작성. }
Plain Text
복사

Do while 문

do { // 조건식의 연산결과가 참일 때 수행될 문장들을 적는다. (처음 한 번은 무조건 실행) } while(조건식);
Plain Text
복사

for 문

for(초기화 ; 조건식 ; 증감식) { System.out.println(num + " * " + i + " = " + num * i); }
Plain Text
복사

continue & break

break

특정 조건을 만족하면 반복문을 벗어나도록 한다.
문제 1) 5와 7의 배수중에 첫번째 숫자는 ?
int num = 1; boolean flag = false; while(true) { if(num % 5 == 0 && num % 7 == 0) { flag = true; break; }else num++; } if(flag) System.out.println(num); else System.out.println("5의 배수이자 7인 배수를 찾지 못했습니다.");
Plain Text
복사

continue

반복문 내에서만 사용될 수 있으며 반복이 진행되는 도중에 continue문을 만나면 반복문의 끝으로 이동하여 다음 반복으로 넘어간다.
StringBuilder sb = new StringBuilder(); int count = 0; for(int i = 1; i <= 100; i++) { if(i % 5 != 0 || i % 7 != 0) continue; count++; sb.append(i).append('\\n'); } sb.append("count : ").append(count); System.out.println(sb);
Plain Text
복사
i % 5 != 0 || i % 7 != 0 vs. num % 5 == 0 && num % 7 == 0
Plain Text
복사

배열

배열

배열이란?

같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

배열의 선언과 생성

int[] score; // 배열을 선언 score = new int[5]; // 배열을 생성
Plain Text
복사

배열의 길이

배열은 한번 생성하면 길이를 변경할 수 없기 때문에 배열이름.lenght 는 상수이다.

예제 문제

1.
1000개의 배열을 만들고 순서대로 1~1000 값을 넣은 후에 해당 배열에 있는 전체 합을 구하시오.
public static void main(String[] args) { int[] arr = new int[1000]; for (int i = 0; i < 1000; i++) { arr[i] = i+1; } int result = Arrays.stream(arr).sum(); System.out.println("result = " + result); }
Plain Text
복사
1.
배열의 크기는 10이고 해당 배열에 랜덤으로 정수를 넣은 뒤에 최댓값을 구하시오.
public static void main(String[] args) { int[] arr = new int[10]; int max = 0; for (int i = 0; i < 10; i++) { arr[i] = (int)(Math.random() * 100) + 1; max = Math.max(max, arr[i]); } System.out.println("max = " + max); }
Plain Text
복사
1.
배열의 크기는 6이고 1 ~ 45 숫자를 랜덤으로 넣고 출력하시오. (단, 중복되면 안 된다.)
public static void main(String[] args) { int[] arr = new int[6]; for (int i = 0; i < 6; i++) { arr[i] = (int)(Math.random() * 45) + 1; for (int j = 0; j < i; j++) { if (arr[i] == arr[j]) { i--; break; } } } for (int n : arr) { System.out.println(n); } }
Plain Text
복사