본문 바로가기
스터디일지/JAVA

[2023.08.15] 자바 2주차 문법 강의

by 똥쟁이핑크 2023. 8. 15.

자바의 연산자

  • 연산자와 피연산자를 알고 있어야 한다
  • 연산자의 우선 순위는 산술 > 비교 > 논리 > 대입 순서이니 잘 기억하자. → 혹시나 () 괄호가 있다면 괄호안의 연산이 먼저 일어난다.
  • 연산자 종류
    • 산술 → +, -, *, /, %, <<, >> 가 있는데 <<와 >> 는 비트 연산자라 한다.
    • 비교 → >, < , <=, >=, ==, !=가 있고 작은 것과 큰것, 같은것과 다른것을 비교한다.
      • 비교하는 것이라서 true / false를 반환하게 된다.
    • 논리 → &&, ||, ! 가 있고 조건을 걸때 사용한다.
    • 대입 → =, ++, -- 가 있고 변수에 값을 저장하거나 증감과 감소를 나타낼 때 사용한다.
      • +=, -= *= 등을 사용할수 있다.
      • 사용할 때는 피연산자의 앞 혹은 뒤에 붙이는 것에 따라 연산의 결과값이 달라지므로 적용을 잘해야 한다.
    • 기타 연산자 - 형변환 연산자, 삼항 연산자, instance of 연산자가 있다.

 

자바의 조건문과 반복문

  • if 문
    • if (조건) → 괄호 안의 조건이 참이면 해당 중괄호의 코드를 실행한다.
    • 조건은 한가지가 아닌 여러가지 조건을 지정할 수도 있다.
// 기본 사용 예시 1
boolean flag = false;

if(flag){
    System.out.println("값이 true 입니다.");
} else {
    System.out.println("값이 false 입니다.");
}

// 기본 사용 예시 2 - else if 같이 사용하기
int number = 2;
if(number == 1){
    System.out.println("number 값은 1 입니다.");
} else if (number == 2) {
    System.out.println("number 값은 2 입니다.");
} else {
    System.out.println("number 값은 모르는 값입니다.");
}

// 기본 사용 예시 3 -  중첩 if 문
boolean flag = false;
int number = 2;

if(flag){
    if (number == 1) {
        System.out.println("flag는 true이고 number값은 1입니다.");
    } else if (number == 2) {
        System.out.println("flag는 true이고 number값은 2입니다.");
    } else {
        System.out.println("flag는 true이고 number값은 모르겠습니다.");
    }
} else {
    if (number == 1) {
        System.out.println("flag는 false이고 number값은 1입니다.");
    } else if (number == 2) {
        System.out.println("flag는 false이고 number값은 2입니다.");
    } else {
        System.out.println("flag는 false이고 number값은 모르겠습니다.");
    }
}

 

  • swith / case 문
    • if 문 과는 다르게 조건을 1개만 지정 할 수 있어서 필요에 따라 써야 한다.
    • 장점이라 한다면 if 문 보다는 코드 중복이 적다는 점...
// 기본 사용 예시

int month = 8;
String monthString = "";

// switch 안에 조건을 걸고 case에서 조건을 만족하면 해당 코드를 실행한다.
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 = "11월";
        break;
    case 12:
        monthString = "12월";
        break;
    default:
        monthString = "알수 없음";
}
System.out.println(monthString); // 결과는 8월

 

  • for 문
    • for( 초기값; 조건문; 증가연산) → 이렇게 써줘야 한다.
    • 초기값 부터 조건에 걸리기 까지 연산을 수행하는데 반복 할때마다 증가연산이 적용된다. → 감소도 쓸 수 있다.
// 기본 사용 예시

for(int i = 0; i < 10; i++){
  System.out.println("i : " + i);
  if(i == 2){ // 조건문도 걸어보기
      break;
  }
  for(int j = 0; j < 10; j++){
      System.out.println("j : " + j );
      if(j == 2){
          break;
      }
  }
}

 

  • while 문 / do-while 문
    • for 문과 비슷하지만 사용할 때 초기값을 설정하지 않고 조건만 써주면 된다.
    • while문은 do-while문 형태로도 사용이 가능하다. 차이점은 while문은 조건을 만족해야지만 반복 실행이 되는데 do-while은 최초 1회를 실행 하고 난 후 반복 실행에 대해서는 조건이 맞는지 체크하고 실행한다.
    • while 문과 do-while문은 반복 할 때 마다 조건에 맞는지 체크하고 false이면 중단이 된다.
// while 기본 사용 예시

int number = 0;
while(number < 3){
    number++;
    if(number == 2){
        continue;
    }
    System.out.println(number + "출력");
}

// do-while 기본 사용 예시
int number = 4;
do {
    System.out.println(number + "출력");
    } while(number < 3);

 

  • 반복문 명령어
    • 반복문을 중단하기 위해서는 반복문 안에 break 명령어를 호출한다.
    • 반복문에서 코드를 실행하지 않고 넘기고 싶을 때 continue 명령어를 호출한다.

 

 

 

자바의 배열

  • 선언하기 → 타입[] 변수명 → int[] array
  • 생성하기 → new 타입[배열의 개수] → new [4]
  • 최종 형태 → int[] array = new int[4]; → array라는 변수명을 가진 정수형 배열을 선언하고 배열의 크기를 4로 지정한다. 
  • 배열은 타입별로 초기값이 지정되어 있는데 int는 0, boolean은 false, String은 null이다.
  • 배열은 [ ] 대괄호가 하나면 1차원 배열, [ ][ ] 대괄호가 2개면 2차원 배열이다

 

자바의 컬렉션

  • List
    • 순서가 있는 데이터 집합이라 Array와 비슷하다. → ArrayList로 사용한다.
    • 차이점은 Array는 배열의 길이를 알아야한다. → 그래야 초기화 할 수 있다.
    • Array는 정적 배열이고 List는 동적배열이다. → 동적 배열이라 크기가 늘어나면 새로 또 공간을 받아서 사용하면 된다.
  • Linked List
    • 메모리에 남는 공간을 요청하고 이곳 저곳에 실제 값을 담는다.
    • 실제 값이 있는 주소값으로 목록을 구성하고 저장한다.
    • 값을 추가하고 삭제하는 것은 빠르지만 조회할때는 이곳 저곳에 저장했기 때문에 느리다.
  • Stack
  • Queue
    • FIFO 구조로 먼저 넣은 값이 Stack과는 반대로 먼저 나온다.
    • Queue는 생성자가 없어서 생성할 때는 Linked List로 생성한다. → Queue<Integer> intQueue = new LinkedList<>();
  • Set
    • 집합과 비슷한다. → 순서가 없고 중복을 허용하지 않는다.
    • TreeSet, HashSet등 응용하여 사용가능하다.
    • 생성자가 없어서 바로 생성 할 수 없다.
    • Set<Integer> intSet = new HashSet<>(); → 이렇게 선언하고 생성할 수 있다.
  • Map
    • Key와 Value가 쌍으로 들어간다.
    • Key는 Unique 하고 Value는 그렇지 않다.
    • HashMap과 TreeMap으로 응용이 가능하다
    • Map<String, Integer> intMap = new HashMap<>(); → 이렇게 선언하고 생성이 가능하다.