연산자
피연산자 : 계산의 대상
연산자 : 계산의 목적
산술연산자 : +, -, *, /, %, <<, >>
비교연산자 : >, <, >=, <=, ==, !=
논리연산자 : &&, ||, !
대입연산자 : =, ++, --
기타연산자 : (type), ? :, instance of
변수를 이용한 연산
(5>3)||(1>3) // 가능
System.out.println(1<3<5); // 불가능
논리부정연산자 (!)
대입연산자 : 변수를 바로 연산해서 그 자리에서 저장하는 연산자
=, ++, += 1 ...
형변환 연산자 : (int), (double) ...
삼항연산자
int x = 1;
int y = 9;
// 조건 ? 참 : 거짓
boolean b = (x == y) ? true : false
String s = (x != y) ? "정답" : "오답";
비트 연산
조건문과 반복문
조건문
- if
if (true 또는 false) {
}
- if-else / / if 문이 거짓일 경우
if () {
} else {
}
중첩 가능
switch문
switch(변수) {
case 1:
monthString = "1월";
break;
case 2:
...
...
break;
defalut:
monthString = "알 수 없음";
}
if와 switch
if문이 상대적으로 코드중복이 많다.
if문만 쓸 줄 아는 사람이 더 많다 => if문이 더 많이 쓰인다
but, 둘 다 쓸 줄 알아야 한다.
반복문
1) for
2) while
3) do ~ while
do 안에 있는 로직을 먼저 수행한다
break, countinue
배열
자료구조 중 하나
배열형 변수 선언 int[], 같은 타입의 변수만 담을 수 있다.
한 번에 많은 양의 데이터를 다루거나 계산할 때 사용 => for문 등
선언방법
1) 타입[] 변수;
2) 타입 변수[];
생성방법 : new 변수타입[배열의 크기]
복사
int a = 4
int b = a
=> 배열에서는 위험하다.
참조형변수는 실제 값이 아닌 주소값을 저장하기 때문에 복사를 해도 주소값이 복사된다.
얕은 복사
Int[] arr1 = {a,b,c} => add1이라는 주소값 저장
Int[] arr2 = arr1 => add1이라는 주소값 복사
여기서 arr2를 수정하게 되면 add1이라는 주소에 있는 값이 수정 됨
=> arr1도 영향이 간다.
배열의 복사
깊은 복사
a의 길이만큼을 가지는 배열 b선언 및 저장
for문을 이용해서 b[i]하나하나에 a[i]의 값을 저장
// 깊은 복사 메서드
// 1. clone() 메서드
int[] a = {1, 2, 3, 4};
int[] b = a.clone(); // 가장 간단한 방법
// clone 메서드는 2차원 이상의 배열에서는 얕은 복사로 동작
EX) 배열 속의 배열 [[1,2],[2,1]...]
char 보다 String을 훨씬 많이 사용한다.
(가지고 있는 기능이 많기 때문에)
Wrapper class와도 상당히 비슷하다.
기본형 변수가 가지고 있는 기능이 제한적, 감쌈으로써 다양한 추가기능 제공
length, charAy, substring, equals, toCharArray
다차원 배열
1차원 [1,2,3]
2차원 [[1,2],[2,1],[3,1]]
3차원
2차원 배열 선언
생성
int[][] array = new int[]][]
초기화
1. 중괄호 사용
int[][] array = {
{1, 2, 3},
{4, 5, 6}
};
int[][] array = new [2][3]; // 최초선언
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
System.out.println("출력값 -> " + i + "," + j);
array[i][j] = 0;
가변배열
int[][] array = new int[3][];
// 배열 원소마다 각기 다른 크기로 지정
array[0] = new int[2];
array[1] = new int[4];
array[2] = new int[1];
// 중괄호로 초기화를 아예 해버릴 때도 가능함
int[][] array2 = {
{10, 20},
{10, 20, 30, 40},
{10}
};
2차원 외에도 3, 4차원 등이 있지만 거의 대부분 3차원 까지만 사용
대괄호만 추가해주면 초기화 가능
{{{1,2},{2,1}},{{3,4},{4,3}}};
배열을 잘 이용하면 복잡한 계산을 효율적으로 처리할 수 있다.
자바 프로그래밍에서는 배열만을 사용했을 때 아쉬운 부분들이 있다.
컬렉션
List ( 동적배열 )
2.LinkedList
메모리에 남는 공간을 요청해서 여기 저기 나누어서 실제 값을 담아놓는다.
실제 값이 있는 주소값으로 목록을 구성하고 저장하는 자료구조
기본적 기능은 ArrayList와 동일
조회가 느리며 추가, 삭제 할 때는 빠르다.
Stack
Queue
Set
Map