8/13 자바 스터디
본 내용은 자바의 정석 - 기초편 강의, 자바의 정석 책을 바탕으로 작성되었습니다.
ch03. 연산자(Operator)
연산자
- 연산자 : 연산을 수행하는 기호
- 피연산자 : 연산자의 연산 수행 대상
연산자 우선순위
- 산술 >비교 > 논리> 대입. 대입이 제일 마지막
- 단항(1) > 이항(2) > 삼항(3) 단항 연산자의 우선순위가 이항연산자보다 높음
- 단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽-> 오른쪽
산술 변환
연산 전에 피연산자의 타입을 일치시키는 것
- 두 연산자의 타입을 같게 일치시킨다.(보다 큰 타입으로 일치)
- 피연산자의 타입이 int보다 작은 타입이면 int로 변환된다.
반올림 - Math.round()
실수를 소수점 첫 째자리에서 반올림한 정수로 반환
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);
조건 연산자 ? :
조건식의 결과에 따라 연산 결과를 달리한다.
- 조건식 ? 식1(참) : 식2(거짓)
- Result = (x>y) ? x: y ; // 참이면 x, 거짓이면 y 가 result에 저장됨
ch04. 조건문과 반복문
조건문과 반복문
조건문 : 조건을 만족할때만 {}를 수행 (0~1번)/ if, switch문
반복문 : 조건을 만족하는동안 {}를 수행(0~n번) / for, while문
조건식의 다양한 예
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+"입니다")
switch문
처리해야 하는 경우의 수가 많을 때 유용한 조건문
-
조건식을 계산한다.
-
조건식의 결과와 일치하는 case문으로 이동한다.
-
이후의 문장들을 수행한다.
-
break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.
switch(조건식) { case 값1 : // 조건식의 결과가 값1과 같을경우 수행될 문장들 break; case 값2 : break; default: // 조건식의 결과와 일치하는 case문이 없을 때 수행, 없어도 됨 }
switch문의 제약 조건
- switch문의 조건식의 결과는 정수 또는 문자열이어야 한다.
- case문의 값은 정수 상수(문자 포함), 변수는X, 문자열만 가능하며, 중복되지 않아야 한다.
Int num, result; final in One = 1; //상수 switch(result){ case ‘1’: //가능, 문자 리터럴(정수 49와 동일) case one: //가능. 정수 상수 case “YES” : // 가능, 문자열 리터럴 JDK 1.7부터 허용 case num : // 에러 , 변수는 불가 case 1.0: // 에러. 실수도 불가
임의의 정수 만들기
Math.random() – 0.0과 1.0 사이의 임의의 double값을 반환
0.0 <= Math.random() < 1.0
만약 1~3사이의 정수를 출력하고 싶다면
- 각변에 3을 곱한다.
0.03 <= Math.random() 3 <1.0 *3 - 각 변을 int형으로 변환.
int)0.0 <= (int)(Math.random() *3) <(int)3.0 - 각변에 1을 더한다
for 문
조건을 만족하는 동안 블록{}을 반복 – 반복 횟수를 알 떄 적합
for(초기화; 조건식; 증감식){
수행될 문장
}
while 문
조건을 만족시키는 동안 블록{}을 반복 – 반복 횟수 모를 때
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 문
블록{}을 최소한 한 번 이상 반복 -사용자 입력을 받을 떄 유용
Do{
} while(조건식); // 끝에 ; 잊지않기
break 문
자신이 포함된 하나의 반복문을 벗어난다.
while 문은 true 생략 불가
continue 문
자신이 포함된 반복문의 끝으로 이동 – 다음 반복으로 넘어감
전체 반복 중에서 특정조건시 반복을 건너뛸 때 유용
이름 붙은 반복문
break; -> 하나의 반복문을 벗어난다.
반복문에 이름을 붙여서 하나 이상의 반복문을 벗어날 수 있다.
Ch05. 배열
배열이란?
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
Int[] score = new int[5];
배열의 선언과 생성
배열의 선언 – 배열을 다루기 위한 참조변수의 선언
- 타입[ ] 변수이름; // 배열을 선언(배열을 다루기 위한 참조변수 선언)
- 변수이름 = new 타입[길이]; // 배열을 생성(실제 생성 공간을 생성)
- Int[ ] score;
- Score = new int[5]; // 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));
배열의 활용
- 예제 1
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);
}
- 예제 2
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 배열의 선언과 생성
String[] name = new String[3];
커맨드 라인을 통해 입력받기
args(String 배열)
커맨드 라인에 입력한 값이 문자열 배열에 담겨서 전달된다.
이클립스 기준 Run -> Run Configurations -> Arguments 들어가서 값 입력
2차원 배열
Int[][] score = new int[4][3] // 12개의 저장공간이 마련됨
초기화 : int[][] arr = {{1,2,3,}, {4,5,6}}
2차원 배열 예제
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 클래스
- String 클래스는 char[]와 메서드(기능)를 결합한 것
String클래스 = char[] + 메서드(기능) - String 클래스는 내용을 변경할 수 없다(read only)
String 클래스 주요 메서드
- Char charAt(int index) : 문자열에서 해당 위치(index)에 있는 문자를 반환한다. (str.charAt(3))
- int length() : 문자열의 길이를 반환한다. (str.length)
- String substring(int from, int to) : 문자열에서 해당 범위의 문자열을 반환한다 (to는 포함 x) / str.substring(1~4)
- Boolean equals(Object obj) : 문자열의 내용이 같은지 확인한다. 같으면 true, 다르면 false / str.equls()
- Char[] toCharArray() : 문자열을 문자배열(char[])로 변환해서 반환한다.
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
Arrays로 배열 다루기
배열의 비교와 출력 –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을 오름차순으로 정렬
Author And Source
이 문제에 관하여(8/13 자바 스터디), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bear1230/813814-자바-스터디-adbtgia2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)