2023. 10. 13. 19:49ㆍ콛/Til
Chapter 3 : 계산하기(연산자)
○ 인텔리제이 내에서 폴더 만드는 법
- src폴더에서 우클릭 → new → Package(자바에서는 폴더를 패키지라고 칭한다)
- 새로운 파일 만들면 class 안에 『public static void main(String[] args)』 넣어주고 시작한다.
→ main 클래스 안에서 main 메소드가 먼저 실행되기 때문에
→ sout 선언 가능
* 비교연산자
- System.out.println( 1 < 3 < 5); : 한번에 세가지를 비교하는 것은 불가능하다!
* 논리 부정 연산자
- System.out.println(!( 5==5)); : not연산자 사용 시 주의
* 대입연산자에서 주의해야 할 점!
- 변수 뒤에 붙는 연산자는 = 이 끝난 뒤에 계산된다. 아래와 같은 경우 val = 11 + 10 으로 21이 나온다.
int a = 10;
int b = 10;
int val = ++a + b--;
System.out.println(val);
○ 삼항연산자
- 비교연산자와 함께 씀
- 비교연산자의 결과 ? true : false;
//기본형식
int x = 1;
int y = 9;
boolean b =(x == y ) ? true : false;
System.out.println(b);
//응용
int max = (x >y) ? x :y;
System.out.println(max);
String s = (x != y) ? "정답" : "오답";
System.out.println(s);
○ 비트 연산
- '<<' : 왼쪽으로 자리수 옮기기, '>>' : 오른쪽으로 자리수 옮기기
- 2진수이기 때문에 왼쪽으로 옮기기 : 2의 배수로 곱하기, 오른쪽으로 옮기기 : 2의 배수로 나누기
- 컴퓨터의 가장 작은 단위인 Bit 이기 때문에 제일 빠르다.
System.out.println(3 << 2); //12
// 1. 3은 이진수로 11
// 2. 11을 왼쪽으로 <<2 옮기기
// 3. 이진수 1100은 십진수 12
System.out.println(3 << 1); //6
//1. 3은 이진수로 11
//2. 11으로 오른쪽으로 1 옮기기
//3. 이진수 110은 십진수 6
Chapter 4 : 조건문, 반복문
○ 조건문 if
//기본형태
if (조건) {
참일 경우 수행할 명령
} else {
} 거짓일 경우 수행할 명령
//else if문
if (조건1) {
참일 경우 수행할 명령
} else if(조건2) {
조건1 fales 이고 조건2 true일 떄 수행할 문장
} else {
조건1, 조건2 flase일 때 수행할 문장
}
○ 중첩 if 문
- if 안에 if, else if, else를 넣어서 중첩으로 if문을 만들 수 있다.
- 중첩 if문 예시
☆가위바위보 프로그램 만들기☆
System.out.println("A 입력 : ");
String aHand = sc.nextLine();
//B입력
System.out.println("B 입력 : ");
String bHand = sc.nextLine();
//두개의 값을 비교하는 메서드 -> Objects.equals (좌, 우)
if (Objects.equals(aHand, "가위")) {
if (Objects.equals(bHand, "가위")) {
System.out.println("비겼습니다.");
} else if (Objects.equals(bHand, "바위")) {
System.out.println("B가 이겼습니다.");
} else if (Objects.equals(bHand, "보")) {
System.out.println("A가 이겼습니다.");
} else {
System.out.println("B가 잘못된 값을 냈습니다.");
}
} else if (Objects.equals(aHand, "바위")) {
if (Objects.equals(bHand, "가위")) {
System.out.println("A가 이겼습니다.");
} else if (Objects.equals(bHand, "바위")) {
System.out.println("비겼습니다.");
} else if (Objects.equals(bHand, "보")) {
System.out.println("B가 이겼습니다.");
} else {
System.out.println("B가 잘못된 값을 냈습니다.");
}
} else if (Objects.equals(aHand, "보")) {
if (Objects.equals(bHand, "가위")) {
System.out.println("B가 이겼습니다.");
} else if (Objects.equals(bHand, "바위")) {
System.out.println("A가 이겼습니다.");
} else if (Objects.equals(bHand, "보")) {
System.out.println("비겼습니다.");
} else {
System.out.println("B가 잘못된 값을 냈습니다.");
}
} else {
System.out.println("A가 잘못된 값을 냈습니다.");
}
○ Swich 문
- if문과 비슷하지만 좀더 가독성이 좋다.
- case문과 함께 사용 → break
- defalt로 모든 값이 not일 경우 지정
- Swich 문 예시
int month = 8;
String monthString = ""; //초기값 빈 값으로 지정
switch (month) {
case 1:
monthString = "1월";
break;
case 2:
monthString = "2월";
break;
case 3:
monthString = "3월";
break;
case 4:
monthString = "4월";
break;
case 5:
monthString = "5월";
break;
case 6:
monthString = "6월";
break;
case 7:
monthString = "7월";
break;
case 8:
monthString = "8월";
break;
case 9:
monthString = "9월";
break;
case 10:
monthString = "10월";
break;
case 11:
monthString = "10월";
break;
case 12:
monthString = "12월";
break;
default:
monthString = "알 수 없음";
}
System.out.println(monthString);
○ If vs Swich
- if 문은 () 안에 조건 여러개 지정 가능 → 복합조건 가능
- 코드중복 : if문 ↑ / swich문 ↓
○ 반복문 - for
- 연산을 반복해서 수행하고 싶을 경우 사용한다. (i ++ 이부분 나중에 실행되는 것 인지하기)
//for문
for (int i = 0; i<4 ;i++) {
System.out.println(i +"번째 출력");
}
//향상된 for문 (배열)
int[] numbers = {3, 6, 9, 12, 15};
for (int number : numbers) {
System.out.print(number);
}
○ 반복문 - while, do-while
- 무한루프 주의
- while (조건문) { (연산)}
- do {(연산)} while (조건문)
//while문
int number = 0;
while(number < 3 ) {
number++;
System.out.println(number+"번째 실행 후 출력");
}
//do-while문
int number =5;
do {
System.out.println(number+"출력");
}while(number < 2);
○ break, continue
- break : 가장 가까운 블럭의 for문 또는 while문, switch문을 중단함
- for : while문 안에서 해당순서 패스하고싶을 때 사용 → (출력패스하고싶을 때)
Chapter 5 : 배열
○ 선언방법
- int intArray [];
- int [] intArray = ; : 이게 일반적인 방식
( 초기값 : int = 0, boolean = false, String =null...)
- 배열의 순회
int[] intArray = new int[3]; //배열의 생성
// (1) 단건 조회
System.out.println(intArray[0]);
// (2) 다건 조회(important)
for (int i=0; i<intArray.length; i++) {
System.out.println(intArray[i]);
}
- 배열의 초기화
// 1. 배열에 특정값 대입해서 선언
int[] intArr = {1,2,3,4,5};
String[] stringArr = {"a", "b", "c", "d"};
//2. for문을 통해서 대입
for(int i=0; i<intArr.length; i++) {
System.out.println(intArr[i]);
}
//3. 향상된 for문
for (int item: intArr) {
System.out.println(item);
}
//4. 배열의 주소를 모두 같은 값으로 초기화
Arrays.fill(intArr, 1);
for (int item: intArr) {
System.out.println(item);
}
○ 복사
- 만약 int[ ] =b = a 이렇게 한다면 값이아닌 주소만 복사되기 때문에 추후에 b의 값을 변경하면 a의 값도 변경됨
→ 얕은복사
- int [ ]b = a.clone() 이렇게 깊은복사를 할 수 있지만 2차원 이상의 배열이라면 얕은 복사로 작용할 수 있다.
그래서 !
- int [ ] b = Arrays.copy0f(a, a.lenth); 이렇게 복사해야 한다. → 깊은복사
○ string 배열
String str = "ABCD";
// (1) lenth --길이 : 4
int strLenth = str.length();
System.out.println(strLenth);
//(2) charAt(int index) -- 1번째 요소 : "B"
char strChat = str.charAt(1);
System.out.println(strChat);
//(3) substring -- 0 ~ 2까지 : "ABC"
String strsub = str.substring(0,3);
System.out.println(strsub);
//(4) equals(String str) -- 같은지 다른지 : true
String newStr = "ABCD";
boolean strEqual = newStr.equals(str);
System.out.println(strEqual);
//(5) toCharArray() : String -> char[](캐릭터 배열)
char[] strCharArray = str.toCharArray();
//(6) 반대로 char[] -> string
char[] charArray = {'A', 'B', 'C'};
String charArrayString = new String(charArray);
System.out.println(charArrayString);
○ 다차원 배열
- 2차원 배열
//2차원 배열의 선언방법(3가지)
int [][] array;
int array [][];
int[] array[];
//2차원 배열의 생성
int[][] array = new int[][];
- 초기화 방법
// 중괄호를 사용해 초기화
int[][] array = {
{1, 2, 3},
{4, 5, 6}
};
// 반복문을 통한 초기화
int[][] array = new int[2][3]; // 최초 선언
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
arr[i][j] = 0;
}
}
- 가변 배열
// 선언 및 초기화
int[][] array = new int[3][];
// 초기화 방법 1 : 배열 원소마다 각기 다른 크기로 지정
array[0] = new int[2];
array[1] = new int[4];
array[2] = new int[1];
// 방법2 : 중괄호로 초기화
int[][] array2 = {
{10, 20},
{10, 20, 30, 40},
{10}
};
- 활용 : 최대, 최솟값 구하기
// 최대값 구하기
int[] arr = { 3, 2, 1, 5, 1 };
// 최대값 초기값 세팅
int max = arr[0];
// 최대값 구하기
for (int num : arr) {
if (num > max) { // 반복문 돌면서 나(max)보다 값이 작으면 저장
max = num;
}
}
'콛 > Til' 카테고리의 다른 글
2023.10.24.<협업을 위한 Github>_Pull request, dev branch (2) | 2023.10.24 |
---|---|
2023.10.23.<햄버거키오스크Pj_1> (0) | 2023.10.23 |
2023.10.12.<계산기Pj>next()와 nextLine() 메소드의 차이 (1) | 2023.10.12 |
2023.10.12.<Java>문법1_Java, 변수 (0) | 2023.10.12 |
2023.09.19.<강의>SQL 3주차_Join (0) | 2023.09.19 |