본문 바로가기
프로그래밍 언어/Java 프로그래밍

Java Day3 - 연산자, 배열, 조건문

by Hyeon_ 2021. 11. 3.

연산자

  • lvalue = rvalue (int a = 10;)
    • lvalue: 메모리
    • rvalue: 메모리가 올 수 없음

산술연산자

  • 사칙연산(+, -, *, /, %)
  • 부호연산: 단항연산
  • 증감연산(++, --)
    • 전위 연산: 연산을 먼저 하고, 값을 출력
    • 후위 연산: 값을 출력한 후 연산
  • 연산자들의 우선순위
    • 존재는 하지만, 우선순위 다 외워서 사용하지 X
    • ( )을 이용하여ㅏ 정확히 우선순위를 표현해주는 것이 가장 좋음
    • ( ) >> 증감, 부정 >> 곱셈, 나눗셈, 나머지 >> 덧셈, 뺄셈 >> 할당(Assignment)
      • ' = '(Assignment) 연산자는 모든 연ㅅ나에서 가장 순위가 낮음
  • 정수(4) + 정수(4) = 정수(4)
  • 정수(4) * 정수(4) = 정수(8)
  • 정수(4) / 정수(4) = 실수(8)

관계 연산자

  • 비교 연산자, 부울(Boolean) 연산자
  • 같다(==), 같지 않다(!=), 크다(>), 크거나 같다(>=), 작다(<), 작거나 같다(<=)
    • 크지 않다 <==> 작거나 같다
    • 작지 않다 <==> 크거나 같다
  • 결과는 항상 Boolean이다. (True, False)
    • 둘 다 가지지 않거나, 다른 값이 나오는 경우는 X

논리 연산자

  • 명제: 참, 거짓으로 구분될 수 있는 문장
    • 연산의 결과가 true 또는 false로 나오는 명령어
  • 여러 개의 명제를 결합(부울대수)
  • and
    • &&. 그리고, 이거나, ...
  • or(|)
    • ||. 또는
  • not
    • !. 아니다. 부정
  • 우선순위
    • ! >> && >> ||
  • 진리표
    2.연역논증 2)명제논리 ⑤조건명제

문자열 연산

  • 덧셈 연산자 사용 가능
    • 문자열과 문자열을 연결하는 역할
  • str.length(): 문자열의 길이 출력
  • str.isEmpty():
  • str.equals(): 문자열이 일치하는지 확인
  • str.substring(7,10): 문자열을 자를 때 사용(7번부터 10번까지 출력하여라)
  • str.split()[0]: 문자열을 분리(구분자). 0번을 출력하여라(단어기준)
  • str.trim(): 문자열의 앞/뒤 공백을 제거(중간의 공백은 제거하지 X)

비트 연산자(추후에 다룰 예정)

  • 알고리즘 문제풀이(비트맵)

배열(Array)

  • 가장 기본적인 자료구조
    • 선형자료구조 라고 함
    • 배열, linked list...
    • 여러 개의 자료가 선형적으로 구성(직선)
  • 다차원(n-dimend) 배열
    • 2차원 이상은 잘 다루지 X
    • 알고리즘 시간은 3차원까지 다룸
  • 배열도 타입을 가짐
    • 배열의 크기는 타입에 따라 달라짐
  • 배열의 크기는 고정되어 있음
    • 처음 생성 시, 메모리에서 얼마나 사용할건지 정의 필요
  • String 차입도 Char 형으로 이루어진 문자 배열
    • 여러가지 기능이 추가된 형태

제어문

  • 조건문과 반복문의 두 가지만 가지고 모든 명령어의 실행을 제어

조건문(분기문)

if

if(명제) {
    // if 블록(명제가 참인 경우에 실행될 명령어를 모아놓은 곳)
}
  • 블록의 시작과 끝은 { (시작) }(끝)를 이용해서 표현

  • 확장된 형태 -1

  if(명제) {
      // if 블록
  }
  else {
      // else 블록
  }
  • i f 블록과 else 블록 둘 중에 하나의 블록 명령어만 실행
    • if 블록의 명령어들과 else 블록의 명령어 둘 다 실행되는 경우는 X
    • 둘 다 실행이 되지 않는 경우도 X
  • 만약에 그렇지 않다라면?
    • 두 블록의 명령이 동시에 실행이 된다?
      • 명제가 참인 경우와 거짓인 ㄱ여우가 동시에 존재한다는 의미
      • 참인 동시에 거짓인 경우는 존재 불가(예외 X)
    • 두 블록의 명령들이 둘 다 실행이 안되는 경우?
      • 참도 아니고 거짓도 아닌 경우
      • 있을 수 없음
  • 확장된 형태 -2
// 다중조건
if(명제){
} else if(명제) {

} else if(명제) {

}
...
else{

}
  • 확장된 형태 -3
// 중첩조건
if(명제) {
    if(명제) {

    }
}
else{

}

switch-case

  • switch-case로 작성 가능한 명령어는 if로도 표현 가능
  • Switch-Case로 작성하면 if 보다 빠르게 동작한다?! => NO
  • 기본적인 형태
switch(변수) {

    case 값;
        ...
        break;
    case 값2:
        ...
        break;
    case 값3:
        break;
        ...
    default:
        ...
        break;
}
  • 변수의 값에 따라서 해당하는 case의 명령어들을 실행