///////
Search

연산자, 배열, 반복문

작성 날짜
2022/09/21 16:29
Text
Text 1
작성자
팀원 전체

상수와 형변환

상수란?

변수에 값을 딱 한번 할당 할 수 있으면 상수
변경이 불가하다.
키워드 final선언이 붙는다
상수에 대한 변수명은 켐멜표기법이 아닌 반드시 대문자를 사용함
메모리주소값이 고정된다.
상수명을 대문자로 짓기 때문에 합성어와 같은 경우 스네이크((ex)arr_num) 표기법을 사용한다.
처음으로 값을 할당되는 것에 대해서는 상관이 없음
하지만 한번 더 값을 할당(변경)하는 경우에는 에러발생

ㄴ리터럴이란?

변수에 넣는 변하지 않는 데이터
메모리 위치 안의 값을 의미한다.
ex) final int num = 1; // num은 상수이고 1은 10진수 정수 리터럴 string str = '이름'; // str은 변수이고 '이름'은 문자열 리터럴

형변환(캐스팅)이란?

형변환의 대전제
컴퓨터는 연산시 데이터 타입을 맞추어야한다.

ㄴ자동형변환이란?

자료형의 크기가 큰 방향으로 정수보다는 실수 형으로 소수점을 보전하는 형태로 변환된다.
byte < short = char < int < long < float < double
→ int + long 의 경우 이 둘 중에 형변환을 시켜 계산하게 됨
이의 경우 long으로 형변환하게 됨 → long이 더 타입이 커서
값을 보존하기 위해서는 long으로 형변환 해야함
→ long → float(실수) 가는 이유
소수점을 보전하기 위해서

ㄴ명시적(강제)형변환?

int wholeNumber = (int)PI;
Java
복사
(int)를 사용해서 강제형변환을 시킬 수 있음 하지만 이의 경우
4byte 정수를 허용하기 때문에 PI의 소숫점값이 없어짐
short s1 = 10; short s2 = 20; short s3 = (short)(s1 + s2); int s4 = s1 + s2;
Java
복사
int 범위 이하에 대해서는 두 수를 더하게 되면 형변환이 일어난다
int 로 형변환이 일어남 아니면 short로 강제형변환을 시켜야함

연산자와 피연산자 개념

연산자 가장 우선순위가 큰 것 ()
/ 은 나누는것
% 이는 나눈것의 나머지 표현

문자열 연산자

문자열과 숫자(정수나 실수)가 있으면, 문자열로 결합한다.
두개의 다른 데이터 타입이 연산을 할 경우 형변환이 일어남
문자열 + 실수 = 문자열로 캐스팅 숫자를 문자로 인식함
복합 대입 연산자
++x =x의 값이 사용된 후 증가한다
x++=x의 값이 사용되기 전에 증가된다
관계 연산자 및 논리 연산자
&&
AND 연산
||
OR 연산
!
NOT 연산

전위연산&후위연산

int x = 1; int a = x++; //a = 1 , x 값이 사용되기전에 증가된다. x = 2 int b = ++x; //b = 3 , x 값이 증가되고 사용된다. // x == 3 이 된다
Java
복사

삼항 연상자

3개의 피연산자를 필요로함
value = (x > y)(조건) ? x() : y(거짓) value = x > y ? x: y > z ? y : z // 같이 여러개도 사용가능
Java
복사

반복문

while
for
do while
While 문 예제
int num = 1; int result = 0; while (num < 11) { result +=num; num++; } System.out.println(result);
Java
복사

ㄴWhile 과 Do While 의 차이점

무조건 1번은 실행하는 것이 Do While 문
While 은 실행 안될 수도 있음

ㄴ for 문의 순서를 정확하게 알아야 한다.

for (int i = 0;(초기식) i < 3;(조건)i++(증감식)){ 반복하는 문장 } 초기화 한번만 진행 조건문 반복하는문장 실행 증감식
Java
복사
for 문 예제(구구단)
초기화 구문은 한번만 타는 것임
Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for(int i =1; i <=9; i++){ System.out.println(num + "*" + i + "=" + num*i); }
Java
복사

ㄴ continue & break

break 반복문 탈출
continue 조건검사로 이동
break문 예제 (5와 7의 최소공배수 구하기)
int num =1; while(true){ if((((num%5) == 0) && ((num%7) == 0)){ System.out.println(num); break; }
Java
복사
continue문 예제
반복문의 중첩예제(구구단)
for (int i = 2; i < 10; i++) { for (int j = 1; j < 10; j++) { System.out.println(i + "x" + j + "=" + (i * j)); } } }
Java
복사

배열

int[] score = {1,2,3,4,5,6,7,8,9}
→ int[] score = new int[9]로 컴파일러는 인식
배열의 변수에는 첫번째 주소가 오고 연속되어 주소를 가진다.

for - each 반복문

for (int i : arr){ } 둘이 동일한 의미 for (int i = 0; i < arr.length; i++){ }
Java
복사
Arrays.toString(배열 이름) : 배열 출력 함수

과제

4 입력받으면 1 3 5. 7. 가운데 피라미드형 별찍기
import java.util.Scanner; // 입력을 위한 scanner 클래스 public class 과제0921 { public static void main(String[] args) { // 입력받기 Scanner sc = new Scanner(System.in); int num = sc.nextInt(); // 별과 공백 찍기 for(int i=1; i<=num; i++){ // 공백 for(int j = i; j<num; j++) System.out.print(" "); // 별찍기 for(int j = 1; j<=2*i-1; j++) System.out.print("*"); System.out.println(); } } }
Java
복사
숫자 추측 게임 랜덤으로 1~ 100 까지 중의 숫자 정해서 10회 시도해서 랜덤 변수 찾기
import java.util.Scanner; // 입력을 위한 scanner 클래스 불러오기 import java.util.Random; // random 상수를 뽑기 위한 Random 클래스 불러오기 public class 과제0921_숫자 { public static void main(String[] args) { // random 변수 생성 Random random = new Random(); int randomNum = random.nextInt(100); // random 변수 확인 System.out.println("랜덤변수 : "+ randomNum); // 변수 맞추기 for(int i=0; i<10; i++) { System.out.print("정답을 추측하여 보시오: "); Scanner sc = new Scanner(System.in); int num = sc.nextInt(); if(i==9) { System.out.println("찾지못하였습니다."); break; } if(num < randomNum) System.out.println("HIGH"); else if(num > randomNum) System.out.println("LOW"); else { i+=1; System.out.print("축하합니다." + " 시도횟수=" + i); break; } } } }
Java
복사

토의해보기

다른방식으로 해볼 수는 없을까요?
math.random() 사용하지 말고 random.nextInt()를 사용해보자!
for문 말고 while로 작성해보자!
package week1; import java.util.*; public class Guess { public static void main(String[] args) { // TODO Auto-generated method stub Random random = new Random(); int randomNum = random.nextInt(100); int answer = 0; int count = 0; Scanner sc = new Scanner(System.in); while(true) { System.out.println("정답을 추측해 보시오: "); answer = sc.nextInt(); count++; if(randomNum == answer) { System.out.println("축하합니다.! " + "시도횟수: " + count); break; } else if(randomNum > answer) { System.out.println("High!"); } else if(randomNum < answer) { System.out.println("Low!"); } if(count > 9) { System.out.println(); break; } } } }
Java
복사