• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 일본어 (0)
        • 모모타로TMC (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [Java] 26. 참조 변수 this, this의 3가지 용법
        2024년 04월 18일
        • Song hyun
        • 작성자
        • 2024.04.18.오전09:38
        728x90
        반응형

        [Java] 26. 참조 변수 this, this의 3가지 용법

         

        1. 참조 변수 this
        this: 인스턴스(객체) 자신의 메모리를 가리키는 참조 변수이다. (=인스턴스의 주소.) this는 컴파일러에서 자동으로 생성한다. 생성자 내부에서 매개 변수와 필드 이름이 동일할 때, 혼동을 피하기 위해 많이 쓰인다.
        -생성자에서 또 다른 생성자를 호출할 때 사용할 수 있다.
        -자신의 주소(참조값, 주소값)을 반환시킬 수 있다.


        2. this의 세 가지 용법
        (1) 자기 자신을 가리키는 this
        메서드는 이름이 같으면 가장 가까운 변수를 사용한다.
        매개변수를 설계할 때, 멤버변수와 이름을 다르게 한다.

        프로그램 내부의 변수가 많아, 변수의 이름을 변경하기 보다는 
        this.를 통해 객체 내부의 변수를 가리키는 경우가 많다.

        (2) 생성자에 다른 생성자를 호출하는 this()
        -괄호 안의 매개변수의 개수, 자료형을 다른 생성자에서 호출 할 수 있다. 
        -this로 생성자를 호출할 때는 다른 생성자를 가장 먼저 호출하고, 다른 수식을 작성해야 한다.
        (다른 수식이 먼저 올 수 없다.)
        -생성자가 많으면 많을 수록, 코드의 반복을 줄일 수 있다. (반복문과 비슷하다.)

        (3) 자신의 주소(참조값, 주소값)을 반환시킬 수 있다.
        -return this;

         

         

         


         

        3. 연습 문제

        (1) Person 클래스 내부에 getter/setter 메서드를 만들어라.

        (2) setter 메서드를 통해 객체 person1의 name 변수를 "티모"로 변경해보자.

         

        풀이 과정

        (1) Person 클래스 내부에 getter/setter 메서드를 만들어라.

        -각각 이름/나이/전화번호/성별의 요소마다 getter/setter 메서드를 만든다. 

        -getter 메서드는 파라미터 없이 해당 변수를 바로 리턴하는 메서드이다.

        -setter 메서드는 리턴 없이 해당 변수를 파라미터값으로 초기화하는 메서드이다.

         

        (2) setter 메서드를 통해 객체 person1의 name 변수를 "티모"로 변경해보자.

        -setter 메서드는 해당 객체의 변수를 파라미터값으로 초기화하는 메서드이다.

        -person1.setName("티모")를 입력하면, 클래스 내부의 setName 메서드가 실행되면서 멤버변수 name이 "티모"로 변경된다.

         

         

        아래는 순서대로 (1) Person 클래스, (2) Person 클래스의 객체,메서드를 호출하는 PersonTest의 소스코드이다.

        package basic.ch11;
        
        public class Person {
        	// this의 세 가지 사용방법
        	// 1. this는 자기 자신을 가리킨다.(인스턴스의 주소)
        	// 2. 생성자에 다른 생성자를 호출할 때 사용할 수 있다.
        
        	// 변수-> private(필수)
        
        	private String name;
        	private int age;
        	private String phone;
        	private String gender;
        
        	// 생성자
        	// 메서드는 이름이 같으면 가장 가까운 변수를 사용한다.
        	// 매개변수를 설계할 때, 멤버변수와 이름을 다르게 한다.
        
        	public Person(String name, int age) {
        		// 자기 자신의 멤버변수 name에 외부에서 들어오는 지역변수 name을 대입한다.
        		this.name = name;
        		this.age = age;
        	}
        
        	public Person(String name, int age, String phone) {
        		// 생성자에서 다른 생성자를 호출할 수 있다.
        		this(name, age);
        		this.phone = phone;
        	}
        
        	public Person(String name, int age, String phone, String gender) {
        		this(name, age, phone);
        		this.gender = gender;
        	}
        
        	// 3. 자신의 주소값을 반환시킬 수 있다.
        	public Person getPerson() {
        		// 자신의 주소값을 반환시킨다.
        		return this;
        	}
        	
        	public String getName() {
        		return this.name;
        	}
        	
        	public int getAge() {
        		return this.age;
        	}
        	
        	public String getPhone() {
        		return this.phone;
        	}
        	
        	public String getGender() {
        		return this.gender;
        	}
        
        	public void showInfo() {
        		System.out.println("이름 : " + name + " 나이 : " + age);
        	}
        
        	// 연습 문제
        	// 1. setName 메서드 만들기(setter)
        	public void setName(String name) {
        		this.name = name;
        	}
        	
        	public void setAge(int age) {
        		this.age=age;
        	}
        	public void setPhone(String phone) {
        		this.phone=phone;
        	}
        	public void setGender(String gender) {
        		this.gender=gender;
        	}
        
        	
        }
        package basic.ch11;
        
        public class PersonTest {
        	public static void main(String[] args) {
        		Person person1 = new Person("홍길동", 100);
        		Person personBox = person1; // Person 클래스 내부의 객체는 현재 1개이다.
        		// 현재 객체 person1은 스택에 주소값, 힙에 변수값이 저장되어 있다.
        		// 하지만 personBox는 주소값을 할당받았기 때문에, 변수값이 따로 없으며
        		// heap 내의 person1의 값을 링크하고 있다!
        
        		// 위 코드까지는 Heap 메모리 영역에 객체가 2개 생성된 상태이다.
        		// 지역변수인 person1, personBox는 같은 객체를 가리킨다.
        
        		// 연습 문제
        		// 1. setName 메서드 만들기
        
        		Person personLee = new Person("이순신", 101);
        		// 이 코드가 어떤 의미를 지니는지 한 줄 한 줄 주석을 달면 빨리 는다.
        
        		// 2. 홍길동의 이름을 setter 메서드를 이용해 팀으로 바꿔라.
        
        		person1.setName("티모");
        		person1.showInfo();
        		personBox.setName("가츠");
        		person1.showInfo();
        
        	} // end of main
        
        } // end of class
        728x90
        반응형

        'Java' 카테고리의 다른 글

        [Java] 28. Static 변수와 원리  (0) 2024.04.18
        [Java] 27. Java로 스타크래프트 모델링하기  (0) 2024.04.18
        [Java] 25. getter/setter 메서드  (0) 2024.04.17
        [Java] 24. 접근 제어 지시자와 정보 은닉  (0) 2024.04.17
        [Java] 23. 개념 응용하기: 함수와 메서드를 이용한 응용문제  (0) 2024.04.16
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
      • [Java] 26. 참조 변수 this, this의 3가지 용법
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바

      단축키

      내 블로그

      내 블로그 - 관리자 홈 전환
      Q
      Q
      새 글 쓰기
      W
      W

      블로그 게시글

      글 수정 (권한 있는 경우)
      E
      E
      댓글 영역으로 이동
      C
      C

      모든 영역

      이 페이지의 URL 복사
      S
      S
      맨 위로 이동
      T
      T
      티스토리 홈 이동
      H
      H
      단축키 안내
      Shift + /
      ⇧ + /

      * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.