[JAVA-2] 자바의 기본 문법

ParkJunHa·2023년 9월 18일

식별자 (Identifier)

다른 것과 구분되는 이름

자바 개발을 하면서 변수나 메서드, 클래스 등이구분될 수 있도록 이름을 짓는 것을 식별자라고 하며, 자바에는 각 식별자마다 규칙이 존재한다.

구분규칙예시네이밍 규칙
클래스의미있는 명사형, 첫글자는 대문자class Student {...}-
변수의미있는 명사형, 첫글자는 소문자int totalCount = 0camel case
매서드의미있는 동사형, 첫 글자는 소문자public String calcVol(){...}camel case
이름, 상수의미있는 명사형, 모든 문자를 대문자int NUM_SIZE = 15snake case

예약어 (keyword)

자바에서 자신의 기능을 사용하기 위해 미리 사용하는 단어

![[Pasted image 20230918110929.png]]

데이터형 (Data Type)

기본형

수치형

  • 정수형 : byte, short, int, long 각각 1, 2, 4, 8 바이트이다.
  • 실수형 : float, double 각각 4, 8 바이트이다.
  • 문자형 : char 2바이트
  • 논리형 : boolean 1비트

참조형

수치형 데이터를 제외한 나머지이다.
문자열형, 배열, 클래스 인스턴스 등이 여기에 해당한다.

public class VarTest {  
    public static void main(String [] args){  
        String name = "홍길동";  
        String address = "인천광역시 부평구";  
        boolean isTrue = false;  
  
        System.out.println(name);  
        System.out.println(address);  
        System.out.println(isTrue);  
    }  
}

🚨팁! : 인텔리제이에서 sout + enter조합 사용시 프린트 매서드가 자동으로 생성된다.

변수 (Variable)

종류선언 위치생명주기주의사항
지역 변수매서드 내에 선언매서드 호출시 생성, 복귀시 소멸선언과 동시에 초기화
인스턴스 변수클래스의 맴버로 선언되는 변수클래스 객체 생성 시에 메모리에 생성되고 소멸시에 변수 소멸객체 생성마다 만들어짐
클래스 변수인스턴스 변수 중 static으로 지정된 변수프로그램 생성시 객체 생성과 상관없이 생성, 프로그램 종료시까지단 한번만 생성됨

예시

public class VarTest {  
    int width;  
    int height;  
    int depth;  // 인스턴스 변수  
  
    public static void main(String [] args){  
        int h = 5;  // 지역 변수 (항상 초기화 해야함)  
        int w = 5;  
        int d = 5;  
        VarTest vt = new VarTest();  
        System.out.println("Volume :"+ vt.calcVolume(w, h, d));  
    }  
  
    public int calcVolume(int w, int h, int d){  
        width = w;  
        height = h;  
        depth = d;  
        int vol = width * height * depth; // 지역 변수  
        return vol;  
    }  
}

데이터 형 변환

원래 가지고 있던 데이터형이 다른 종류의 데이터 형으로 변환되는 것.
종류가 다른 데이터 간에 연산이나 값을 할당하는 경우 원래 가지고 있던 데이터 형이 다른 종류의 데이터형으로 전환되는 것.

묵시적 형 변환(promotion)

  • 더 큰 자료형으로 변환 (자동으로 실행)
  • 원래 데이터 값이 보존됨
// promotion이 일어나는 경우
float fNum = 0f;
fnum = 5.0f;
fNum = 7;

3행에서 정수형 데이터 7이 7.0f로 promotion됨.

명시적 형 변환(type casting)

  • 작은 자료형으로 변환 (캐스팅 연산자 이용)
  • 원래 데이터 값이 보존되지 않을 수 있음
// type casting이 일어나는 경우
int num = 0;
num = 5;
num = 5/3;

3행의 결과는 실수이지만, 정수형이므로 형 변환이 일어나 소수점 아래의 값이 버림되어 1이 저장됨.

예시

public class VarTest {  
    public static void main(String [] args){  
        byte bVar1 = 12;  
        byte bVar2 = 17;  
        byte bVar3 = (byte)(bVar1 + bVar2);  
        System.out.println(bVar3);  
          
        // byte와 short 모두 연산시 int로 바뀌므로 타입캐스팅이 필요함  
        double h = 3.14f;  
        float f = (float)3.14;  
        float f2 = 3.14f + 3.14f;  
  
        System.out.println(h);  
        System.out.println(f);  
        System.out.println(f2);  
          
        //10행에는 double형 변수에 float형 값을 담고 있다.  
        // double형이 더 크므로 내부적으로 promotion이 진행되어 3.14d가 저장된다.  
        // 변수 f에는 double형 변수가 입력되었으므로, float로 타입캐스팅이 필요하다.  
    }  
  
}

이스케이프 시퀀스와 서식 문자

이스케이프 시퀀스

컴퓨터가 주변 장치를 제어하는데 사용하는 특수 문자

기호의미
\b백 스페이스
\t
\n개행
\r열 복귀

서식 문자

출력 데이터를 다른 데이터 형식으로 출력

기호의미
%s문자열 출력
%d, %i부호있는 10진수
%o부호 없는 8진수
%x부호 없는 16진수
%f부호 없는 10진수 실수
%e지수 형식으로 실수
%g값에 따라 %e 또는 %d
%c문자로 출력

연산자

산술 연산자

현실에서 사용하는 사칙연산

산술 연산자설명
+왼쪽의 피연산자에 오른쪽의 피연산자를 더함.
-왼쪽의 피연산자에서 오른쪽의 피연산자를 뺌.
*왼쪽의 피연산자에 오른쪽의 피연산자를 곱함.
//왼쪽의 피연산자를 오른쪽의 피연산자로 나눔.
%왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 반환함.

대입 연산자(할당 연산자)

대입 연산자설명
=왼쪽의 피연산자에 오른쪽의 피연산자를 대입함.
+=왼쪽의 피연산자에 오른쪽의 피연산자를 더한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
-=왼쪽의 피연산자에서 오른쪽의 피연산자를 뺀 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
*=왼쪽의 피연산자에 오른쪽의 피연산자를 곱한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
/=왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
%=왼쪽의 피연산자를 오른쪽의 피연산자로 나눈 후, 그 나머지를 왼쪽의 피연산자에 대입함.
&=왼쪽의 피연산자를 오른쪽의 피연산자와 비트 AND 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
|=왼쪽의 피연산자를 오른쪽의 피연산자와 비트 OR 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
^=왼쪽의 피연산자를 오른쪽의 피연산자와 비트 XOR 연산한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
<<=왼쪽의 피연산자를 오른쪽의 피연산자만큼 왼쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
>>=왼쪽의 피연산자를 오른쪽의 피연산자만큼 부호를 유지하며 오른쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.
>>>=왼쪽의 피연산자를 오른쪽의 피연산자만큼 부호에 상관없이 오른쪽 시프트한 후, 그 결괏값을 왼쪽의 피연산자에 대입함.

비교 연산자

결과 값은 boolean

비교 연산자설명
==왼쪽의 피연산자와 오른쪽의 피연산자가 같으면 참을 반환함.
!=왼쪽의 피연산자와 오른쪽의 피연산자가 같지 않으면 참을 반환함.
>왼쪽의 피연산자가 오른쪽의 피연산자보다 크면 참을 반환함.
>=왼쪽의 피연산자가 오른쪽의 피연산자보다 크거나 같으면 참을 반환함.
<왼쪽의 피연산자가 오른쪽의 피연산자보다 작으면 참을 반환함.
<=왼쪽의 피연산자가 오른쪽의 피연산자보다 작거나 같으면 참을 반환함.

논리 연산자

논리 연산자설명
&&논리식이 모두 참이면 참을 반환함. (논리 AND 연산)
|논리식 중에서 하나라도 참이면 참을 반환함. (논리 OR 연산)
!논리식의 결과가 참이면 거짓을, 거짓이면 참을 반환함. (논리 NOT 연산)

비트 연산자

비트 연산자설명
&대응되는 비트가 모두 1이면 1을 반환함. (비트 AND 연산)
|대응되는 비트 중에서 하나라도 1이면 1을 반환함. (비트 OR 연산)
^대응되는 비트가 서로 다르면 1을 반환함. (비트 XOR 연산)
~비트를 1이면 0으로, 0이면 1로 반전시킴. (비트 NOT 연산, 1의 보수)
<<명시된 수만큼 비트들을 전부 왼쪽으로 이동시킴. (left shift 연산)
>>부호를 유지하면서 지정한 수만큼 비트를 전부 오른쪽으로 이동시킴. (right shift 연산)
>>>지정한 수만큼 비트를 전부 오른쪽으로 이동시키며, 새로운 비트는 전부 0이 됨.

기타 연산자

삼항 연산자

조건이 맞으면 콜론 앞, 틀리면 콜론 뒤 값이 저장된다.

int var1 = 1;
int result = 0;
result = (var1 != 1)? 0 : 1;

instanceof 연산자

참조형 변수를 사용하기 위해 사용. 상속 개념과 함께 사용. 변수의 타입 비교

String address = "인천시 부평구";
if (address instanceof String){
	System.out.println("String Type");
}
profile
PS린이

0개의 댓글