힘내힘내
: 선수행 후조건! 조건이 참이면 반복함.
while과의 차이점: while은 조건이 거짓이면 한 번도 안 돌지만 do while은 수행이 먼저기 때문에 한 번은 무조건 돈다.
do { 수행문; 증감식 또는 분기문; } while(조건식);
*syso + ctrl + space bar => 출력문 자동완성 단축키
*랜덤 함수 외우기!!!!!!!!!!
: 반복문에서 break가 자신이 포함된 가장 가까운 >>반복문<<을 빠져나가는 구문
int sum = 0;
for(int i =1; i<=100; i++) { //횟수가 정해져있는 거니까 for문 씀.
if(i % 3 == 0)
continue;
sum += i;
}
System.out.println("1~100까지 3의 배수를 제외한 합계: " + sum);
*코딩 짠 거 복붙 해오려면, 코딩 긁어서 복붙 말고도 클래스 복사 후 패키지에 붙여넣고 이름 다른 걸로 변경하면 코딩 복사된 클래스 생성 완료
만약 가장 가까운 반복문 말고 바깥의 반복문 나오고 싶다면?
이름 지정.
Stop1 : for(int i=1; i<=3; i++) {
for(int j=1; j<=3; j++) {
if(i ==2)
break Stop1;
//for문에 이름 붙여주고 break,continue 지정해주면 해당 for문 빠져나올 수 있음.
System.out.println("i=" + i + ", j=" + j);
}
}
System.out.println("밖의 for문 종료");
*연습문제*
//사용자로부터 입력받은 숫자의 약수 구하기, ex) 12의 약수: 1,2,3,4,6,12
1) 데이터 타입 분류:
-기본타입: byte,double,int 등/실제 값을 변수 안에 저장
-참조타입: Class, String, Array,인터페이스/주소를 통해 객체 참조
2) 메모리 영역:
String name3 = new String ("KH정보교육원");
//String은 클래스 이름 ()는 매개변수
String name4 = new String ("KH정보교육원");
.equals : Srting에서 name3과 name4안에 들어가있는 값이
같은지 비교해주는 메서드
System.out.println (name3.equals(name4));
값이 같지 않은지 !를 쓰고도 판별가능.
System.out.println !((name3.equals(name4)));
3) String 클래스의 주요 메서드
-char charAt(index): 문자열에서 해당 위치(index)에 있는 문자 변환
-int length( ): 문자열의 길이변환
-boolean equals
4) String과 기본형의 변환
String(참조자료형)을 기본자료형(Byte, Short, Integer)으로 변환
String str = "30";
int num = Integer.parseInt(str);
System.out.println(num + 10); //숫자형이라 40
System.out.println(str + 10); //문자열이라 3010
byte b1 = Byte.parseByte(str);
String str2 = "15.678";
double d1 = Double.parseDouble(str2);
String str3 = "true";
boolean bool = Boolean.parseBoolean(str3);
String.valueOf : 기본형을 String(참조자료형)으로 변환
int num2 = 50;
String str4 = String.valueOf(num2);
System.out.println(str4 + 100); //문자열로 바꿔줬으니 50100
: >>같은 자료형<<끼리 방대한 양의 메모리들을 만들어 모아서 사용함.
나중에 값을 넣고자 할 때는 new키워드로 생성하면서 메모리 자리 확보를 위해 반드시 넣을 메모리 개수를 넣어줘야 함.
int[] arr1 = new int[5];
//가로로 길쭉한 배열에 5개의 int(4byte)가 나눠서 만들어지고 stack 메모리에 arr1의 객체가 생기고 주소가 할당 됨.
int arr1 = new int[5];
// 배열표시 대괄호[]는 자료형 또는 변수명 어디에 붙여도 상관ㄴㄴ, 근데 자료형 뒤에 많이 쓰긴 한대
int[] arr3 = {10,20,30,};
//자리를 만들면서 곧바로 자료를 넣고 싶을 때 중괄호 이용. 자바가 알아서 3개의 자리를 만들어 넣음.
System.out.println(arr3); 하면 해시코드의 주소 출력됨
=> [I@3d012ddd]
그래서 인덱스 번호를 붙여줘야 해당 위치 자료값이 나옴!
System.out.println(arr3[0]); => 10
모든 자료값을 출력하고 싶다면? 저 출력문을 계속 써야되는 거니까 >>반복문<< 이용.
for(int i=0; i<=3; i++) {
System.out.print(arr3[i] + " ");
}
*연습문제*
//정수형 배열 10개를 생성한 배열에 random으로 1~100까지 추출하여 10개의 배열에 넣어 출력하시오.
//배열 값의 합계와 평균 구하기
int[] score = {89, 100, 94, 46, 75};
//배열 값 중에서 최대값과 최소값 구하기
int[] arr1 = {12, 46, 98, 10, 54, 32, 26};
Arrays.toString(배열명):
for문 사용하는 대신에 Arrays.toString 쓰면 깔끔하게 모든 값 정렬들이 나옴
int[] arr1 = {12, 46, 98, 10, 54, 32, 26};
System.out.println(Arrays.toString(arr1));
=> [12, 46, 98, 10, 54, 32, 26]
그런데
System.out.println(chArr); 은 위의 메서드 사용 안 해도 abcde 이 출력됨.
String이 char 기반으로 만들어졌기 때문에 주소 아니고 값이 나옴.
*연습문제*
// 로또 1~45 , 1. 배열 45개에 1~45까지 값 넣기 2. for문으로 index번호를 랜덤으로 추출하여 자리바꿈 하기
// 중복제거로 6개의 정수만 추출하기