210727(화) 자바 6일차 - 반복문(다중 for, 확장 for ...) / 배열-개념
프로그래머스 코딩테스트 연습 하기!!!!
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"}//객체배열
<"확장 for">
: for + 배열
: 방번호를 돌리지말고 데이터를 ar로부터 받아서 하나씩 꺼내는
cf) 이 때 length 안써도 그냥 체크해서 그만큼 알아서 돌린다
cf) 확장for 객체배열값을 클래스로 이용할 때 사용한 예시
<args>
: 마우스 우클릭으로 여기 들어가서 Arguments 탭에서 배열 요소 넣으면 됨