Language/Java

Java - 개념, 변수, 연산자, 조건문과 반복문 복습

둉이 2021. 6. 18. 21:43

 

대학생 시절 때 자바 과목을 수강했었는데 무려 C+을 맞았다.

 

그 당시엔 너무 슬펐는데 지금 와서 생각해 보니 공부 하나도 안했는데도 씨쁠을 주신 교수님이 혜자스럽다.

 

내가 왜 자바 재수강을 안하고 졸업했는지 의문이다.

 

아마 내가 웹 개발을 하게될 줄 몰랐던 게 아닐까?

 

암튼 회사에서 스프링 프레임워크를 사용하면서 개발을 하다 보니 나도 모르게 야매로 배운 자바에 대한 한계가 느껴졌다...

 

물론 엄청 기본적인 부분은 다 알지만 클래스나 상속 등 중요한 뒷 내용을 싸그리 까묵었다 이거야!

 

그래서 2년 전에 사놓고 포장도 안뜯은 자바책을 오늘 개봉해서 시간 날 때마다 복습을 하려고 한다.

 

서론 넘나 긴 것.... 이제부터 정리를 시작한다.

 

 

 


 

 

Java Class → 클래스명 첫 글자는 대문자로 한다.

// 대충 자바 클래스 생김새이다.
클래스명 {
     main() {
         ...
     }

     메소드 {
         ...                        // 메소드 블록
     }
}

 

 

JDK와 JRE의 차이점?

- JDK(Java Development Kit) : JRE + 개발도구

- JRE(Java Runtime Environment) : JVM + 표준 클래스 라이브러리

 

 

JVM(Java Virtual Machine)

- 자바 가상 머신

 

- 자바 프로그램 실행 과정

  1. 자바 컴파일러(javac)가 자바 파일(*.java)을 자바 바이트코드(*.class)로 변환
  2. Class Loader를 통해 클래스 파일을 JVM으로 가져옴
  3. 해석된 바이트코드를 JVM 실행 명령어(java.exe)로 실행

 

 

변수

- char에 숫자를 저장하면 문자로 반환

  ex) char a = 65;  →  'A'

- int에 문자를 저장하면 숫자로 반환

  ex) int a = 'A';  →  65

- String은 변수가 아닌 클래스

- long 변수에 값 할당시, int 범위를 넘어가는 값을 할당하는 경우에는 숫자 뒤에 l이나 L을 붙여야 함

- float 변수에 값 할당시, 숫자 뒤에 f나 F를 붙여야 함

- 변수 이름 첫 글자에 숫자는 불가능 / 기호 중 _, $는 가능

 

 

타입 변환

- 실수 타입(float, double)은 정수 타입(byte, short, int, long)으로 자동 변환되지 않으므로 강제 타입 변환을 사용해야 함

- char → short/byte 자동변환 불가(int, long은 가능)

- String → char 강제 타입변환 불가

  : charAt(), toCharArray() 사용

  cf) char → String 변환

      : .toString(), String.valueOf() 사용

 

 

연산자

1. 단항 연산자

- 변수 앞에 단항 연산자 부착 가능 but 단항 연산자의 리턴값은 int이므로 주의

   ex) -x, +x

 

2. 증감 연산자

- 어떤 변수에 후위 증감 연산자를 적용하여 다른 변수에 값을 할당하면 다른 변수에는 증감이 되지 않은 값이 할당되고 연산자가 붙은 변수에는 증감된 값이 적용됨

   ex) int x = 10; int z = x++;

       sout(x)  // 11

       sout(z)  // 10

 

3. 비교 연산자

- 부동소수점 타입 값을 비교할 때는 정확한 비교를 위해 형변환을 해줘야 함

ex1) 'A' == 65   → true

ex2) 3 == 3.0    → true

ex3) 0.1 == 0.1f → false

 

- String 객체를 비교할 때는 .equals() 메소드를 사용하는 것이 정확

 

 

연산자 우선순위

연산자 연산 방향 우선순위
증감, 부호, 비트(~), 논리(!) 높음





















낮음
산술(*, /, %)
산술(+, -)
시프트(>>, <<, >>>)
비교(<, >, <=, >=)
비교(==, !=)
논리(&)
논리(^)
논리(|)
논리(&&)
논리(||)
조건(? : )
대입(=, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, ...)

 

 

입력값 검사

: .isInfinite(), isNaN() 이용

  ex) Float.isNaN(x), Double.isInfinite(y)

 

 

switch문

// 대충 이런 생김새이다.
switch(변수) {
     case 값1:
         ...
         break;
     
     case 값2: 
         ...
         break;

     ...

     default:      // 생략 가능
         ...
         break;
     }
}

 

 

for문

// 대충 이런 생김새이다.
for(int i = 0; i < 10; i++) {  // 세 군데중 아무데나 생략 가능
     ...
}

 

 

중첩된 반복문에서의 break

: 가장 가까운 반복문만 종료하는 문제 발생

  바깥쪽 반복문까지 종료하고 싶을 때는 바깥쪽 반복문에 '라벨:'을 붙이고 'break 라벨;' 사용

  ex) Label: for (int i = 0; i < 10; i++) {

       for (int j = 0; j < 10; j++) {

            ...

            if (x) {

                ...

                break Label;

            }

       }

  }

 

 

continue문

: 다음 코드를 실행하지 않고 다음 반복

 

 

키보드 입력

1. System.in.read()

: 내가 누른 키의 코드를 인식받음

  ex) Space바 → 32

 

2. scanner.nextLine()

: 문자열을 입력받음

  ex) String str;

       Scanner scanner = new Scanner(Sysetm.in);

       str = scanner.nextLine();

'Language > Java' 카테고리의 다른 글

Java - 중첩 클래스와 중첩 인터페이스, 예외 처리 복습  (0) 2021.06.25
Java - 인터페이스 복습  (0) 2021.06.24
Java - 상속 복습  (0) 2021.06.23
Java - 클래스 복습  (0) 2021.06.22
Java - 참조 타입 복습  (0) 2021.06.19