본문 바로가기

JAVA

#23 [JAVA] 반복문 while/continue/break, 참조자료형/기본자료형, 배열 1

11382 꼬마 정민

 

10^12는 int(4byte) 의 범위가 아니기 때문에 long을 써야함(8byte)

 

10171 고양이

 

역슬래쉬 문제

역슬래쉬 문자는 \만 쓰는게 아닌 \\ 을 써야함

쌍따옴표 출력 : \"

 

* 특수문자 : \ (이스케이프 문자)

1. 쌍따옴표 출력 : \"

2. 줄바꿈 출력 : \n

3. 역슬래쉬 출력 : \\

 

 

10172 개

 

역슬래쉬 문자는 \만 쓰는게 아닌 \\ 을 써야함

쌍따옴표 출력 : \"

 

 

1330 두 수 비교하기

 

 

9498 시험 성적

 

2753 윤년

 

 

14681 사분면 고르기

 

2884 시계

 

조건문은 여러개 써도 됨

1) if문

2) if  / else문

3) if /  else if  / if문

시침 (조건문 1) 시간이 0시일때는, 시간을 23시로 고치고 분에서는 - 45 아닐때는 그냥 - 1

0시 이면 H를 23으로 고정시키면 안됨. 왜냐면 0시 50분이 들어오면 23시 5분이 아닌 0시 5분

분침 (조건문 2) 분에서는 - 45 하는데, 음수일때는 60 + (분 - 45), 시간 - 1


Verify01
연습 1 : 문자열 반복해서 출력하기

 

String 5

String을 5번 반복해라

 

반복문 횟수에 num

 

 

연습 2 : 대소문자 바꿔서 출력하기 ★문자열 조작하기★
특정위치에 있는 문자 뽑아내기 + 대소문자 변경

 

0. 입력하기 변수 : str

1. 반복문으로 계속 돌릴예정 : fori

2. 하나하나씩 뽑기 : char temp = str.charAt(i)

3. toLowerCase()는 문자열만 지원하기 때문에 char형태로 되어있는 temp를 문자열로 바꿔줘야 함  

toLowerCase(), equals : char은 지원하지 못하기 때문에 String.valueOf()로 문자열로 변환해줘야함

String temp = String.valueOf(str.charAt(i))

temp 0번이 소문자면 대문자로 변경

4. 문자열 비교로 문자열인 temp가 temp.toLowerCase와 같냐 = temp 가 소문자냐

그러면 대문자로 변경 : temp.toUpperCase()

5. 문자열 비교로 문자열인 temp가 temp.toLowerCase와 다르냐 = temp가 대문자냐

그러면 소문자로 변경 : temp.toLowerCase()

 

https://cceeun.tistory.com/32

연습 3 : 문자열 돌리기

 

 

연습 4 : 덧셈식 출력하기

 

(num + num2) 이렇게 해야 이게 우선순위로 돼서 숫자 덧셈이 됨

num + num2 이렇게 하면 앞에 = 부터 계산이 돼서 (문자열+숫자) + (숫자) 이렇게 됨

 

연습 5 : 문자열 붙여서 출력하기

 

자바에서는 객체를 생성한다는 뜻에서 new 무조건 입력

scanner라는 객체

 

 

연습 6 : 홀짝 구분하기

연습 7 : n의 배수

 

 

연습 8 : 공배수

 

 

연습 9 : flag에 따라 다른 값 반환하기

연습 10 : 두 수의 최대값 구하기 : Math.max(x,y)   Math.min(x,y)  :  두 수밖에 비교가 안됨

 

 

연습 11 : 세 수의 최소값 : 임시변수 min을 먼저 설정해두고 시작

 

# 방법 1 : a, b 비교 후 그 중 c와 비교 / a,b 비교 후 그 중 c와 비교

 

# 방법 2 : a,b 먼저 비교 / 그 최솟값과 c와 비교

 

# 방법 3 : 함수 쓰기

연습 12 : 서로 다른 주사위 2개의 면의 개수 n, m이 공백을 두고 입력된다.

 

 


Sec02 : 반복문 - while
while문

do while 문 (잘 쓰지는 않음)

 

먼저 누적합 1번 실행 후 -> 조건식보고 반복문 돌릴지 말지 결정

 

 

Sec02 : 반복문 중단 - break ★ (무한루프때 사용, 자주 사용)
break (while과 같이 사용) - 무한반복문

 

Sec02 : 반복문 - continue ★ 
continue (for과 같이 사용)

 


Chap05
Sec01 : 참조 자료형 / 기본 자료형이 무엇인가?
             참조자료형은 왜 == 를 안쓰고 equals를 써야하는가?
             (기술 면접 대비)

 

int a = 1;

int b = 2; (4byte)

String str = "신민철";

 

이게 컴퓨터에 어떻게 저장되느냐

 

우리가 파일 만들 때 js / css 처럼 폴더 관리를 함

컴퓨터도 메모리 관리를 함 => 메모리 경제적/효율적으로 관리 가능

 

스택방 / 힙방

- 스택방 : 일반변수들이 들어감

스택방번호 / 변수명 / 값 

10   a   1(4byte)

20   b   2(4byte)

정수, boolean, char는 바이트가 정해져있음. 얘네가 다 스택방에 들어감.

 

문자열이 문제. 

신 : 1byte

민 : 1byte

철 : 1byte => 총 3byte

30 str 신민철 로 넣고싶으나 안됨. 

신민철신민철... 문자열 붙이기로 하면 byte가 너무 커짐. 그래서 스택방에 넣을 수가 없음(정수는 무조건 4byte)

얼마나 커질지모르니 스택방에 저장을 못함

 

- 그래서 힙방에 넣음

힙방번호 변수명

100 신

101 민

102 철

 

여기의 힙방번호를 스택방의 값에 넣음

스택방번호 / 변수명 / 값

30 str 100(힙방의 방번호)

힙방의 방번호를 참조한다 = 참조 자료

 

기본자료형 int char => 스택방의 값으로 다 들어가지만

문자열 => 스택방에는 힙방번호만 있고 변수명은 힙방에 들어가있음

객체, 배열도 무한히 커지기에 =>힙방번호가 들어가있음


Sec02 : 배열(참조자료형) 

 

1번째 배열 정의

 

변수 : 한 가지 값을 저장하는 곳

배열 : 여러가지 값을 저장하는 곳

=> 값이 많기 때문에, 반복문이 나올 가능성이 큼

 

자료형[ ] 변수 = {값1, 값2, ..., 값n}

변수[인덱스번호];

 

자료형이 앞에 있으면, 사용할 때 자료형 빼고 사용

int score[ ] 

sum = sum + score[i] // 여기는 int 빼고 i만 사용

score[i] : 90, 91, 92 등등 숫자(배열값)를 뜻함

 

 

* 변수의 값이 어떻게 변하는지, 완전히 실행되고 나서가 아닌 중간결과를 알고싶을 때 = 디버깅 또는 로깅 *

score[i]를 알고싶을 때 System.out.println( " ::: " + score [ i ] ) 

결과값과 헷갈릴 수 있으니 본인만 알아볼수있는 암호적기

 


이런 배열 : 자료 구조 (총 3가지 있음)

=> 변수만 가지고 코딩하기 쉽지않기에 반복문을 돌려서 코딩을 효율적으로 사용할 수 있음