본문 바로가기
Programming/JAVA

이론_0.기타

by yoon9i 2024. 3. 6.
/*
    <표현식(Expression)>

    -어떠한 값이나 변수, 혹은 메서드의 호출 결과 간의 연산을하는것(코드조작)을 의미한다.

    -구문에 포함되는 개념이다.

    <구문(Statement)>

    -표현식(들)으로 이루어진 하나의 코드 실행 단위이다.
    -세미콜론( ; )으로 끝내야만 한다.

    <블록(Block)>

    -코드(들) 혹은 구문(들)의 집합이다.
    -중괄호( { 및 } ) 로 감싼다.


    ex)
    public static void main(String [] args)
    {
       System.out.println(1 + 2 + 3); //sout:구문

    }//{ 코드 } : 코드 블록





    <패키지(Package>

    ◎ 클래스를 포함하는 구성요소 등이 존재하는 위치이다.
    ◎ 가령, 클래스 First 가 a.b.c 라는 패키지 경로 아래에 있다면 해당 클래스의 풀 네임은 a.b.c.First 가 된다.
    ◎ 패키지는 실질적으로 디렉토리이며 각 디렉토리간의 구분을 마침표( . ) 로 한다.
    ◎ 패키지 경로의 시작은 반드시 본인이 소유하고 있는 도메인의 역순이어야 한다.
      가령, mydomain.com 이라는 도메인을 소유하고 있다면 패키지의 시작은 com.mydomain 이어야 한다.
      전통적으로는 그 뒤에 프로젝트의 이름이 온다.
    ◎ 패키지의 명명에는 카멜케이스 혹은 스네이크 케이스를 이용한다. 간혹 단어 구분없이 전체 소문자로 작성하는 경우도
      있음으로 회사의 방침에 따른다.



   <접근 제한자(Access Modifier)>

   ◎ 접근 제한자(Access Modifier) 는 어떠한 대상(클래스,메서드 등)에 접근할 수 있는 주체를 제한하기 위해 사용한다.

   1. public
   : 해당 대상에 대한 접근에 제한이 없다. (아무나 어디서든 접근 가능)

   2. protected
   : 같은 패키지 경로에 있거나, 상속관계 일때 만 접근할 수 있다.

   3. (default)
   : 같은 패키지 경로에 있을때만 접근할 수 있다. (실제로 default 라고 적는것이 아니라, 접근 제한자를 생략하면
     default 접근 제한자가 되는 것.)

   4. private
   : 같은 객체(클래스 등) 내에서만 접근할 수 있다.



   <정적(static) 및 비정적(Non-static)>

   ◎ 어떠한 대상(주로 변수나 메서드)이 정적(static)일 경우 '프로그램 실행과 동시에' 해당 변수 및 메서드의 존재가 '메모리에
     등록'되게 되어 존재하게 된다.
   ◎ 정적인 대상은 스레드(Thread) 내에 '하나만 존재'한다.
   ◎ 정적인 대상에 접근할 때에는 객체(인스턴스)가 아닌 타입으로 접근해야 한다.


   <빈 값(널,null)>

   ◎ 어떠한 변수의 타입이 참조 타입일때 해당 변수가 할당된 스택(Stack)이 힙(Heap)주소를 가리키지 않고
     값을 가지고 있지 않을 때 그 상태를 null 이라 한다.
   ◎ 스택 값이 null 인 어떠한 참조타입의 변수를 연산(할당 instanceof 제외)할 경우
     NullPointerException 예외가 발생하니 유의한다.
   ◎ 기초 타입은 null 일 수 없다.(스택이 값을 바로 가짐으로)
   ◎ 값을 가지지 않는 기초 타입의 지역변수는 null 이 아님으로 유의한다.


   <리팩토링(Refactoring)>

   ◎ 리팩토링(Refactoring)은 java 언어 뿐만 아니라 모든 언어에서 참조(Referred)되는 대상의 이름을 변경하고,
     이러한 변경 사항이 참조중(Referring)인 컨텍스트에서도 동시에 변경되게 하고자 할 때 사용하는 기능이다.
     JetBrains 에서 제작한 IDE 는 shift + f6 키 조합을 단축키로 사용하고 있다.
     반면, Microsoft 에서 제작한 IDE(가령 Visual Studio, Visual Studio Code 등)는 f2 단축키로 사용하고 있다.



   <다형성(Polymorphism)>

   ◎ 어떠한 A 타입의 객체가 B 타입의 변수에 대입될 수 있는 상황을 의미한다. 이때 각 A와 B는 아래 상황 중 하나 이상이다.
    -A 타입이 B 타입을 상속받는경우 ("부모 타입의 변수는 자식 타입의 객체를 받을 수 있다.")
    -A 타입이 B 타입의 인터페이스를 구현(Implement)하는 경우
   ◎ 본래 객체화된 타입이 이가 상속받는 부모 타입으로 형변환되었다 하더라도, 이 객체를 다시 자식 객체로 강제 형변환할수 있다.

    Object o = new String("Hi");
    //String s = o; // 부모 타입의 객체를 자식 타입의 변수에 대입할 수 없다. (일반적으로)
    String s = (String) o; //하지만, 강제 형변환을 통하면 가능하다.

    Object o = new SimpleDateFormat("yyyy");
    String s = (String) o;
    System.out.println(o instanceof String); //false
    //단, 부모 타입의 변수에 할당된 객체의 원래타입(`SimpleDateTime`)과 관련 없는 타입(`String`)으로의 형변환은 불가능하다.
    // `instanceof` 연산을 사용하여 안전하게 강제 형변환이 가능한지 항시 확인해야 한다.



    <어노테이션(Annotation)>

    ◎ 어노테이션(Annotation)은 앳(At,@) 기호를 사용하여 표시한다.
    ◎ 어노테이션은 해당 어노테이션 뒤에 오는 대상(클래스,인터페이스,메서드,변수 등등)에 대한 부수적인 힌트(정보)를
      부여하고자 할때 사용한다.
    ◎ @Override : 해당 메서드가 재정의되었음을 알린다.
    ◎ @Deprecated : 해당 대상이 추 후에 출시될 버전에서 삭제될 수 있음으로 더 이상 사용되어서는 안된다고 알린다.

*/

'Programming > JAVA' 카테고리의 다른 글

이론_6. SWITCH  (0) 2024.03.06
이론_5. FOR 문 & 향상된 FOR  (0) 2024.03.06
이론_4.IF  (0) 2024.03.06
이론_2.주석  (0) 2024.03.06
이론_1.변수,상수 및 타입  (0) 2024.03.06