본 내용은 자바의 정석 - 기초편 강의, 자바의 정석 책을 바탕으로 작성되었습니다.

연산 전에 피연산자의 타입을 일치시키는 것
실수를 소수점 첫 째자리에서 반올림한 정수로 반환
long = result Math.round(4.52); // result에 5가 저장된다.
double pi = 3.141592;
System.out.println(pi);
System.out.println(pi*1000);
System.out.println(Math.round(pi*1000));
System.out.println(Math.round(pi*1000)/1000);
System.out.println((double)Math.round(pi*1000)/1000);
조건식의 결과에 따라 연산 결과를 달리한다.
str.equlas(“yes”) -> 문자열 str 내용이 “yes”일 때 (대소문자 구분)
문자열 비교 연산은 == 쓰면 안되고 equls 사용
str.equals.IgnoreCase(“yes”) ->) -> 문자열 str 내용이 “yes”일 때 (대소문자 구분안함)
int score = 0;
char grade = ' '; // 공백 초기화
System.out.print("점수를 입력하세요.>");
Scanner scanner = new Scanner(System.in);
score = scanner.nextInt();
if (score >=90) {
grade = 'A';
} else if( score >=80) {
grade = 'B';
} else if(score >=70) {
grade = 'C';
}else {
grade = 'D';
}
System.out.println("당신의 학점은"+grade+"입니다")
처리해야 하는 경우의 수가 많을 때 유용한 조건문
조건식을 계산한다.
조건식의 결과와 일치하는 case문으로 이동한다.
이후의 문장들을 수행한다.
break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.
switch(조건식) {
case 값1 :
// 조건식의 결과가 값1과 같을경우 수행될 문장들
break;
case 값2 :
break;
default:
// 조건식의 결과와 일치하는 case문이 없을 때 수행, 없어도 됨
}
Int num, result;
final in One = 1; //상수
switch(result){
case ‘1’: //가능, 문자 리터럴(정수 49와 동일)
case one: //가능. 정수 상수
case “YES” : // 가능, 문자열 리터럴 JDK 1.7부터 허용
case num : // 에러 , 변수는 불가
case 1.0: // 에러. 실수도 불가만약 1~3사이의 정수를 출력하고 싶다면
조건을 만족하는 동안 블록{}을 반복 – 반복 횟수를 알 떄 적합
for(초기화; 조건식; 증감식){
수행될 문장
}
조건을 만족시키는 동안 블록{}을 반복 – 반복 횟수 모를 때
while(조건식){
// 조건식의 연산결과가 참(true)인 동안, 반복될 문장을 적는다.
}
예제
int num = 12345, sum =0;
//10으로 나머지 연산을 하면 마지막 자리를 얻는다.
// System.out.println(12345%10);
// num =12345, 1234,123,12,1
for(num =12345; num>0; num= num/10){
System.out.println(num%10);
sum+= num%10;
}
while(num>0){
sum+= num%10;
System.out.println("sum="+sum +",num%10"+num%10);
num = num/10;
}
System.out.println("각 자리수의 합:"+sum);
블록{}을 최소한 한 번 이상 반복 -사용자 입력을 받을 떄 유용
Do{
} while(조건식); // 끝에 ; 잊지않기
자신이 포함된 하나의 반복문을 벗어난다.
while 문은 true 생략 불가
자신이 포함된 반복문의 끝으로 이동 – 다음 반복으로 넘어감
전체 반복 중에서 특정조건시 반복을 건너뛸 때 유용
break; -> 하나의 반복문을 벗어난다.
반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
Int[] score = new int[5];
배열의 선언 – 배열을 다루기 위한 참조변수의 선언
int sum =0;
float avg =0;
int score[] = {100,85,70,65,40};
for(int i =0; i<score.length; i++) {
sum += score[i];
}
avg = sum / (float)score.length; // 계산결과를 float로 얻기 위해 형변환
System.out.println("총점 :"+sum);
System.out.println("평점 :"+avg);
배열의 인덱스 – 각 요소에 자동으로 붙는 일련 번호
“인덱스(index)의 범위는 0부터 ‘배열길이-1’ 까지”
배열이름.length – 배열의 길이(int형 상수)
배열은 한번 생성하면 그 길이를 바꿀 수 없다.
배열의 각 요소에 처음으로 값을 저장하는 것
배열은 기본적으로 0으로 자동 초기화가 됨
Ex) int[ ] score = {50,60,70,80,90};
Char[] chArr = {‘a’,’b’, ‘c’, ‘d’ }
System.out.println(chArr); // abcd 출력 그러나 char 배열일때만 제대로된 값 출력됨 , 나머지배열은 쓰레기값 출력됨._
// 배열 iArr의 모든 요소를 출력한다. [100,95,80,70,60]이 출력
System.out.println(Array.toString(iArr));
float avg =0;
int score[] = {100,85,70,65,40};
for(int i =0; i<score.length; i++) {
sum += score[i];
}
avg = sum / (float)score.length; // 계산결과를 float로 얻기 위해 형변환
System.out.println("총점 :"+sum);
System.out.println("평점 :"+avg);
}
int arr[] = new int[10];
for(int i=0; i<arr.length; i++) {
arr[i] = i;
System.out.print(arr[i]);
}
System.out.println("\n");
for(int i=0; i<100; i++) {
int tmp = arr[0];
int n = (int)(Math.random()*10);
tmp = arr[0];
arr[0] = arr[n];
arr[n] = tmp;
}
System.out.println(Arrays.toString(arr));
String[] name = new String[3];
args(String 배열)
커맨드 라인에 입력한 값이 문자열 배열에 담겨서 전달된다.
이클립스 기준 Run -> Run Configurations -> Arguments 들어가서 값 입력
Int[][] score = new int[4][3] // 12개의 저장공간이 마련됨
초기화 : int[][] arr = {{1,2,3,}, {4,5,6}}
int[][] score = {
{ 100, 100, 100 }
, { 20, 20, 20 }
, { 30, 30, 30 }
, { 40, 40, 40 }
};
int sum = 0;
for (int i = 0; i < score.length; i++) {
for (int j = 0; j < score[i].length; j++) {
System.out.printf("score[%d][%d]=%d%n", i, j, score[i][j]);
sum += score[i][j];
}
}
System.out.println("sum=" + sum);
String str = "ABCDE";
char ch = str.charAt(2);
String str2 = str.substring(1,4);
String str3 = str.substring(1,str.length());
System.out.println(ch); //C
System.out.println(str2); //BCD
System.out.println(str3); //BCDE
배열의 비교와 출력 –equals(), toString()
toString()
System.out.println(Array.toString(arr)); // 1차원 배열을 문자열로 바뀌줌
System.out.println(Array.deepToString(arr2D)); // 다차원 배열에서 사용
equals
1차원 : Arrays.equlas(a,b) / 2차원 : Arrays.deepequals(a,b)
배열의 복사 – copeyOf(), copyOfRange()
배열의 정렬 – sort()
Arrays.sort(arr) // 배열 arr을 오름차순으로 정렬