당근개발자
당근당근
당근개발자
전체 방문자
오늘
어제
  • 분류 전체보기 (157)
    • codepresoo (13)
    • JAVA (1)
    • JS (12)
    • 코딩 테스트 (7)
    • Spring (21)
    • 자료구조 (4)
    • HTTP (7)
    • JSP (36)
    • Etc (21)
    • RESTful (11)
    • React (1)
    • k8s (0)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • queue#자료구조
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #수강하고있는강의명
  • @JsonFilter#당근개발자
  • 패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기
  • stack#자료구조
  • dobule_linked_list#java
  • S
  • #코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online.
  • thymleaf#layout#fragment#thymleaf layout 적용안됌
  • Primitive#Wrapper
  • thymleaf error#template might not exist
  • 한 번에 끝내는 코딩테스트 369 Java편 초격차 패키지 Online
  • HATEAOD
  • 코드프레소. #codepresso #대외활동 # IT교육 #코딩강의 #코딩 이러닝 # 무료 IT교육 #무료 코딩교육
  • 이

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
당근개발자

당근당근

JSP

Static

2021. 5. 17. 21:13

Static 이라는 키워드를 사용하여 static 변수와 static메서드를 만들수 있는데, 다른 말로 정적필드와 정적메서드라고 하며,

이 둘을 합쳐 정적 멤버라고 한다.

정적 필드와 정적메서드는 객체에 소속된 멤버가 아니라 클래스에 고정된 멤버이다.

그렇게 때문에 클래스 로더가 클래스를 로딩해서 메서드 메모리 영여게 적재할대 클래스별로 관리된다.

따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수있다.

 

Static ->  주로 클래스들이 할당 / Garbage Collector  관여 X / 모든 객체가 메모리를 공유

heap -> 주로 객체들이 할당 / Garbage Colector 관여 O / 메모리를 공유하지 않음

 

Static 키워드로 통해 생성된 정적 멤버들은 Heap 영역이 아닌 Static영역에 할당된다.

Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조할 수있는 장점을 가지지만,

Garbage Collector 의 관리 영역 밖에 존재하기에  Static 영엑에 있는 멤버들은 프로그램의 종료시까지 메모리가 할당된 채로 존재한다.

너무 Static 을 너무 남발하게 되면 만들고자 하는 시스템 성능에 악영향을 줄 수있다.

 

정적(Static) 멤버 선언

 

필드나 메서드를 생성시 인스턴스로 생성 시 인스턴스로 생성할것인지 정적으로 생성할것인지에 대한 판단 기준은 공용으로 사용하는냐 아니냐로 내리면 된다. 그냥 생성한다면 자동으로 인스턴스로 생성되며 정적으로 생성하려면 필드와 메서드 선언시 static이라는 키워드를 추가적으로 붙이면 된다.

staitc int num =0;

public static void static_method(){}

 

정적(Static) 필드 사용 예시

class Number{

          static int num =0;

          int num2 = 0;

}

 

public class Static_ex{

 

        public static void main(String[] args){

            Number number1 = new Number();      // 첫번째 number

            Number number2 = new Number();     // 두번쪠 number

 

           number1.num++;         // 클래스 필드 num을 1증가시킴

           number1.num2++;      // 인스턴스 필드 numdmf 1 증가시킴

           System.out.println(number2.num);   // 두번째 number의 클래스 필드 출력

           System.out.println(number2.num2);  // 두번째 number의 인스턴스 필드 출력

            }

}

Number 이라는 클래스안에 클래스 변수 num과 인스턴스 변수 num2를 생성하였고 두개의 Number 인스턴스 number1과 number2를 생성하였을때 number1 에서 num1과 num2를 각각 1씩 증가시키고 ,number2에서 num1와 num2를 각각 출력시켰을때는 num1은 1, num2는 0이 출려되었다.

왜이렇냐, 인스턴스 변수는 인스터스가 생성될 때마다 생선되므로 인스턴스마다 각기 다른 값을 가지지만 정적 변수는 모든 인스턴스가 하나의 저장공간을 공유하기에 항상 같은 값을 가지기에 나타난 현상이다.

 

정정(Static) 메서드 사용 예시

class Name{

      static void print(){

           System.out.println("내 이름은 홍길동입니다.");

      }

      void print2(){

         System.out.println("내 이름은 이순신이다.");

     }

 

public class Static_ex{

        public static void main(String[] args){

                    Name.print();

                    Name name = new Name();

                     name.print2();

}

'JSP' 카테고리의 다른 글

css 속성 종류  (0) 2021.05.31
JNDI  (0) 2021.05.19
jsp:include 와 <%@ include %> 차이  (0) 2021.05.13
커스텀 태그  (0) 2021.05.12
EL(Expression Language)  (0) 2021.05.11
    'JSP' 카테고리의 다른 글
    • css 속성 종류
    • JNDI
    • jsp:include 와 <%@ include %> 차이
    • 커스텀 태그
    당근개발자
    당근개발자

    티스토리툴바