JAVA

210727(화) 자바 6일차 - 반복문(다중 for, 확장 for ...) / 배열-개념

구름이팡팡 2021. 7. 27. 10:18
728x90

프로그래머스 코딩테스트 연습 하기!!!!

3레벨정도가 회사 시험 문제

 

cf) || : shift+\, 파이프라인, OR연산자

cf) for 같이 지정어명령어로 파일명 만들땐 _ 붙여서 만든다

array 라는 명령어는 없따

cf) 엔터 원리

read를 쓸때는 엔터 처리 주의

readLine이랑 다름

cf) elseif 쓸때 꼭 else 없어도 됨.


<반복문>

1. for

2. while

3. do~while

 

1. for  -> 몇번해야할지 알 때 씀

[형식]

for(변수명=초기치; 조건치; 증감치){

참일때

}

 

 

int i=1;

for(; i<=10; i++){      //초기값을 위에써도 된다.

}

 

int i=1;

for(; i<=10; ){     //초기값을 위해 증감식을 밑에 써도 된다.

      i++;

}

 

int i=1;

for(; true; ){     //이런식으로 써도 된다.

}

ㅇ★ 다중 for (MultiFor)
1. for문안에 또 다른 for문이 존재
2. 서로의 변수명은 달라야 한다.
3. 겹쳐서도 안된다. (각각하라는 의미)


 -> 이런느낌 : 더 많이 바뀌는게 안쪽으로 들어가야 한다

 

2. while : 조건을 먼저 물어봄 -> 무한루프 숫자 맞히기 등 몇번해야할지 모를때 씀

[형식]

while(조건){

참일때

}

cf) break는 while문 안에! 

 

 

3. do~while : 조건을 나중에 물어봄 -> 적어도 한번은 수행!!, for랑 while과 다르게 do while만 끝에 세미콜론!

[형식]

do{

참일때

}while(조건);

 

<break>

: switch, 반복문(for, while, do~while)를 벗어날 때

: 자신이 소속된 곳 1번만 벗어난다

: 만약에 2개 이상 벗어나려면 라벨을 사용 한다

 

break => A

break => B

break ABC => 라벨 ABC를 빠져나가라

<continue>: 웬만하면 쓸 일 없음 (if else가 있기 때문에)

: 반복문(for, while, do~while)의 끝으로(}) 무조건 이동

: 자신이 소속된 끝으로(}) 무조건 이동

: 만약에 2개 이상 반복문 끝으로 이동하려면 라벨을 사용 한다

 


<배열>

:배열형 변수

cf) 변수는 메모리를 한칸 잡는다

cf) 방을 하나만 만들면 변수로 그냥 하고, 배열은 방을 떼거지로 만드는거

 

- 배열명은 주소(클래스명@16진수, 참조주소(ex) I@123a345b, 메모리를 참조할 수 있는 참조주소이지 실제주소는아님))를 갖고 있음

 => 데이터를 갖고 있지 않음, 데이터는 각 배열요소(ex) ar=[0], 방이름)가 가지고 있음

- .length : 배열 요소 개수를 알려줌 (배열의 크기)

- args[0].length() : 방이름쓰고 ()를 넣으면 문자열 크기 구해줌

cf) .charAt:  글자 뽑아와서 출력하는 함수

- 배열은 메모리를 연속으로 잡는게 특징! (처음에 넓은 공간을 차지함)


* 자료 구조 형태 (메모리 잡는 방식) 배열 vs 링크드리스트




- 배열 :20바이트(4바이트씩), 추가 공사가 안됨.(빌딩처럼 고정됨), 자투리 이용 불가

- 단일 링크드 리스트 : 40바이트(4바이트씩+주소값4바이트씩), 주소도 4바이트씩 뒤에 갖기때문에 자투리공간쓰지만 메모리를 너무 많이 잡아먹음
(cf) 이중 링크드 리스트: 앞뒤로 다 주소갖아서 더 큼) 
, 추가삭제 가능 (언제든지 중간에 주소 연결해서 끼워넣을 수 있음, 제거도 가능(ex)컬랙션))




기본형태

자료형[ ] 배열명;

int[ ] ar = new int [개수];

int[개수] ar; -----------------------> X

int[ ] ar = {값, 값, 값};

 

방식1.

int[ ] ar = new int [5];

ar[0]=1;

ar[1]=2;

ar[2]=3;

ar[3]=4;

ar[4]=5;

 

방식2.

int[ ] ar = {1,2,3,4,5};

 

방식3.

int[ ] ar = new int[ ] {1,2,3,4,5}; //한번에 같이 함, 이런 형태에서는 절대 개수를 쓰면 안된다, 안에 있는 만큼 만든다는 뜻이라서

 

방식4.

String[ ] ar = new String[5]; //객체배열, 클래스 타입을 여러개 만든다는 뜻

 

방식5.

String[ ] ar = {"apple", "banana", "orange"}//객체배열

 

cf) 위에꺼 불가능 위에꺼처럼하려면 밑에처럼 요소를 하나씩 넣어줘야함

 


<"확장 for">

: for + 배열 

: 방번호를 돌리지말고 데이터를 ar로부터 받아서 하나씩 꺼내는

 

cf) 이 때 length 안써도 그냥 체크해서 그만큼 알아서 돌린다

cf) 확장for 객체배열값을 클래스로 이용할 때 사용한 예시

 


<args>

 

: 마우스 우클릭으로 여기 들어가서 Arguments 탭에서 배열 요소 넣으면 됨

 

728x90