본문 바로가기
각종 언어 기본 문법/Java 주제별 정리

자바 스터디 노트 [2] 자바 프로그래밍에 필요한 것들 (클래스, 메소드, 변수, 타입 기초)

by 혀니쌤1 2021. 8. 8.

목차

    자바 실행 프로그램은 반드시 클래스 블록과 메소드 블록으로 구성되어야 한다.

    아래가 자바 프로그래밍에서의 아주 기본 포맷이다.

     

    public class Hello {
    	public static void main(String[] args) {
    		System.out.println("Hello, welcome to the java world!");
    	}
    }

    - Hello{}: class block

    - main(String[] args){} : method block 

    - System.out.println(): 괄호 안에 있는 문장을 출력. 마지막엔 줄바꿈(엔터)가 붙는다.

     

     

    #메소드:

    어떤 일을 처리하는 문장들을 모아놓은 함수. 메소드 블록은 단독으로 구성될 수 없고 반드시 클래스 블록 내부 위치.

     

    #메인 메소드.

    메소드 중 이름이 main()으로 되어 있는 메소드. 프로그램 실행시 필수 요소. main() 메소드가 없는 소스 코드는 그냥 코드이지 프로그램이 되지 못함. JVM이 main 메소드부터 찾아서 실행시키기 때문인데, 그래서 main 메소드는 entry point라고 부른다. 메인 메소드는 반드시 public static void로 선언되어야 함.

     

    #클래스 블록: 

     필드, 생성자, 메소드를 포함하는 <class 클래스이름 {   }> 형식의 블록

     ※ 클래스이름은 개발자 마음이나, public이 붙은 클래스명은 소스 파일명과 대소문자까지 완벽히 일치해야함

     

    #리터럴:

    소스코드 내에서 직접 입력된 값. <int A = 30;> 에서 30이 리터럴임.

    0으로 시작되는 리터럴은 8진수 (예: 02, -04등등)

    0x로 시작되는 리터럴은 16진수

    5e7, 5E7등은 5x10^7로 간주한다

     

     

     

    #변수:

    데이터를 저장하는 공간. 타입이 반드시 정의 되어야 함. (정수냐, 실수냐, 문자냐 등등) 

     

    #변수명:

    메모리 주소에 붙여진 이름. 프로그램은 변수 이름을 통해 메모리 주소에 접근.

    ※변수명은 '$', '_'로 시작가능. 변수명은 한글이나 예약어로 하면 안됨

     

    #기본타입변수 vs 참조타입변수 (**일단 여기서는 두가지 타입 변수의 종류가 무엇인지만 알자)

    기본타입변수: 정수, 실수, 문자

    참조타입변수: 배열, 스트링(=문자열), 인터페이스, 객체

     

    #변수 초기화

    변수 선언(타입 및 이름지정) 및 초기화를 한 줄에 할 수도 있고 나눠서 해도 된다.

     

    #변수의 타입별 크기:

    byte(1) < short(2)/char(2) < int(4) < long(8) < float(4) < double(8)

    float는 4byte지만 표현할 수 있는 값의 범위가 커서 long보다 크다고 표현함.

     

    #문자와 문자열

    char(문자)는 작은따옴표, String(문자열)은 큰따옴표. char은 반드시 한 글자여야함. 공백 안됨. 두글자 안됨.

     

    #변수 타입 변환

    작은그릇의 물을 큰 그릇에 옮기는 것이 가능하듯 int를 double로 옮기는 것은 오케이

    큰그릇의 물을 작은 그릇으로 옮길 때는 강제 타입변환을 해주어야함. 캐스팅이라고 해서 괄호를 쓰는데, 이 때, 원래 값이 보존될지 말지는 원래 값이 애초에 작은 그릇으로 표현 가능했었냐에 다라 다름.

    예: int A = 12500000; byte B = (byte) A; System.out.println(B); 하면 32 뜸

        double C = 3.14; int D = (int) C; System.out.println(D); 하면 3이 뜸

    만약에 중간에 연산자가 있다면 (예: int + double) 무조건 큰 그릇으로 계산함.

     

    #변수 초기화 주의할 점1

    - 변수가 처음 선언된 중괄호를 벗어나면, 변수 메모리 공간이 소멸되어 못 씀.

    - 잘못된 타입/범위로 하려고 하면 에러. 예: byte A=12349999; 안됨

       그런데,  int A = 'A', short B = 'B' 등은 가능. 아스키코드로 알아먹기 때문임. char C = 95도 OK

        char로 표현 가능한 아스키코드는 양의 정수이기 때문에, short나 byte같이 음수가 있는 애들은 char로 변환불가

       ※ 자바에서 문자열은 기본 데이터 타입에 속하지 않는다. 문자열은 스트링 클래스다.

     

    #변수 초기화 주의할 점2  변수 초기화를 null로 할 경우:

    기본 타입 변수들에게는 null값으로 초기화 할 수 없음. 참조 타입 변수는 null로 가능

    즉, int A = null; 은 컴파일 에러 발생.  String A = null은 에러 미발생이다.

     

     

    #변수 초기화 주의할 점3  변수 초기화를 생략 할 경우:

    기본 타입 변수의 경우, 초기화가 안된 변수는 디폴트 값 없이 아예 읽지 못한다.

    즉, int A; System.out.println(A); → 컴파일에러

    참조 타입 변수의 경우, 초기화가 안되었으면, 디폴트 값이 들어가 읽을 수 있다.

    즉, int[ ] B = new int[100]; System.out.println(B[33]); → 0출력