ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 TMI_2
    프로그래밍/Java 2023. 10. 13. 21:02


    1. Stack    Heap
      -  Stack은 정적으로 할당된 메모리영역
         -> 그래서 크기가 몇바이트인지 정해져있는 기본형 변수를 저장한다
         -> 추가로 크기가 정해져있는 참조형 변수의 주소값도 저장한다

      -  Heap은 동적으로 할당된 메모리 영역이다
         -> 그래서 크기가 계속 늘어날 수 있는 참조형 변수의 원본을 저장한다



    2. 비트연산   << >>
        0,1은 2진수 값이기 때문에
      - 자릿수를 왼쪽으로 옮기는 횟수만큼 2의배수로 곱셈이 연산되는 것과 동일함

      - 자릿수를 오른쪽으로 옮기는 횟수만큼 2의배수로 나눗셈이 연산되는 것과 동일함

    5<<2

    이는  ()안은 10진수
    101 (5)  <<  1010 (10)  << 10100 (20) 이다

    <<를 한번 쓸때마다 10진수의 값에 X2를 한 것임을 알 수 있다.





    20>>2 

    10100 (20)  >>  1010 (10)  >>  101 (5)





    3. for문에서 i는 index라는 의미였음

     


    4.  배열에서  .clone()은  2차원 이상의 배열에서는 제대로 동작하지 않는다

     


    5. length()?  length?   
       뒤에 ()를 붙일때가 있고 안붙일때가 있다  

       ()를 붙이는경우 - String에 붙일때.   문자열의 길이는 동적으로 변할 수 있기 때문에 메소드 형태로 처리한다.

       ()를 붙이지 않는 경우  -   배열.length;  배열의 길이는 배열이 생성될 때 고정되므로 괄호 ()가 필요하지 않다.




    6.    문자열과 문자배열의 전환

    String -> char[]
    char[] charArray = str.toCharArray();
    
    char[] -> String
    String charArrayString = new String(charArray);

     

      코테에서 매번 까먹던 내용이라 추가

     



    7.  Array -> 정적배열 (최초에 길이를 알아야함)
        List(ArrayList) -> 동적배열 (크기가 가변적으로 늘어난다)



     

    8. 깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy)


    깊은 복사는 실제값을 새 메모리 공간에 복사함
    얕은 복사는 값을 참조하고 있는 주소값을 복사함

    그래서 얕은 복사를 한 경우  내용을 변경하면  해당 주소에 있는 내용이 변경되기 때문에 해당 주소를 참조하는
    모든 객체가 변경된 내용을 참조하게 된다.

     

     



    9.  가변길이의 매개변수
       메소드( int ... 변수)  이렇게 ...을 사용하면 값을 ,로 구분하여 갯수 상관없이 전달가능 
       다만 가변길이를 사용시 이를 처리할수 있도록 내부 로직도 구현을 해줘야한다.   (for문 등)





    10.  접근제어자 관련  

    클래스의 접근제어자는 public와 default 둘 뿐이다. (상세히는 final, abstract도 있음)
    생성자에 접근제어자를 사용함으로 인스턴스의 생성을 제한할 수 있으며,
    일반적으로 생성자의 접근제어자는 클래스의 접근제어자와 일치한다.

     

     

    11. 제어자 사용시 주의사항
        메소드에 static과 abstract를 함께 쓸 수 없다 
           -> static메소드는 클래스 수준에서 호출되며 오버라이딩되는 대상이 아님
               그러나 추상메소드는 하위클래스에서 구현해야 하므로 오버라이딩의 대상임
               둘이 서로 역할이 모순되기 때문에 함께 쓸 수 없음

       

        클래스에 abstact와 final을 동시에 쓸 수 없다 
            -> 추상메소드는 하위클래스에서 구현되어야하는데 final 사용시 하위클래스에서 구현할 수 없기 때문

     

        abstract 메소드의 접근제어자가 private일 수 없다
            -> 위와 마찬가지로 private을 쓰면 하위클래스에서 구현할 수 없기 때문

     

        메소드에 private와 final을 같이 사용할 필요는 없다
            -> 이미 private으로 제한했기 때문에 굳이 final을 쓸 이유가 없다





     

    '프로그래밍 > Java' 카테고리의 다른 글

    깔끔한 코드 작성에 관한 의문 (과 해결)  (0) 2023.11.14
    자바 TMI_3  (0) 2023.10.26
    자바 TMI_1  (0) 2023.10.11
    java.time.패키지  (0) 2023.04.05
Designed by Tistory.