[java] 클래스 활용

2024. 10. 10. 23:57·JAVA

🔎클래스 사용 전 함수 사용


      
public static int add(int a, int b) {
int r = a + b;
return r;
}
public static void changeUpper(String name) {
name = name.toUpperCase();
}
public static void swap(int c, int d) {
int t = c; //지역변수 t라서 swap의 기능이 제대로 안된다.
c = d;
d = t;
System.out.println("c=" + c + ",d=" + d);
}

이때 스택은 각 함수마다 따로 있으며 리턴문은 변수 하나만 리턴할 수 있다.

c=5
d=8

swap 메서드에서는 이렇게 swap이 된 상태로 나온다. 


      
public static void main(String[] args) {
int a = 7, b = 2;
int result1 = add(a, b);
System.out.println(result1); //9
// ---------------------------------
int c = 8, d = 5;
System.out.println("c=" + c + ",d=" + d); //c=8,d=5
swap(c, d); //메인 변수를 지정해 swap메서드에 파라미터c,d전달
System.out.println("c=" + c + ",d=" + d); //c=8,d=5
// ---------------------------------
String name = "Tony Stark";
System.out.println(name); //Tony Stark
changeUpper(name);
System.out.println(name); //Tony Stark
}

c=5, d=8 이렇게 나올 것 같지만 실제로는

c=8
d=5

이렇게 초기설정 그대로 나오게 된다.

  • swap과 main의 값만 전달되며, 주소(reference)는 상이하다.
    ∵ t가 swap메서드의 지역변수로 설정되있기 때문
  • 또한, 함수가 끝나면 스택이 사라지기 때문에 main에서 swap메서드와 chageUpper메서드가 전달이 되지않아  함수가 적용이 되지 않는다.

 

🔎클래스 사용 후 함수 사용


      
class Data {
int c; int d;
@Override public String toString() {
return "Data [c=" + c + ", d=" + d + "]";
}
}

클래스를 사용하는 이유는 함수(swap)에서 변경된 값을 객체에서 메인으로 돌려받기 위한 것이다.


      
public class ParamTest02 {
public static void swap(Data data) {
int t = data.c; //main함수에서 data객체에 c를 담은 것을 t로 정의한다.
data.c = data.d;
data.d = t;
System.out.println(data); //c=5, d=8
}
public static void main(String[] args) {
Data data = new Data();
data.c=8;
data.d=5;
System.out.println(data); //c=8, d=5
swap(data);
System.out.println(data); //c=5, d=8
}
}
  • Data data = new Data(); : 인스턴스 변수data는 스택에 생성된다.
  • 이때, new는 heap에 생성되며 data.c는 heap에 있는 data가 가리키는 c를 의미하며 그 c에 8을 입력하는 것이다.
  • Data 클래스를 설정해두었기 때문에 main함수의 data나 swap함수의 data나 동일한 것이 된다.
  • swap(data): 메인변수 data를 불러와서 swap메서드에게 파라미터 c,d를 전달한다.

객체 생성 및 메소드 호출

 

 


swap메소드 실행 및 종료

'JAVA' 카테고리의 다른 글

[java]접근제어자  (0) 2024.08.26
[java]InetAddress(컴퓨터 주소 찾기), InetSocketAddress(단방향 채팅프로그램)=>TCP통신  (0) 2024.08.26
[java]Thread(스레드)  (0) 2024.08.26
[java] 외부파일을 읽어서 출력하기(FileReader,BufferedReader,FileWriter,BufferedWriter)  (0) 2024.08.24
[java]Collection Framework  (3) 2024.08.22
'JAVA' 카테고리의 다른 글
  • [java]접근제어자
  • [java]InetAddress(컴퓨터 주소 찾기), InetSocketAddress(단방향 채팅프로그램)=>TCP통신
  • [java]Thread(스레드)
  • [java] 외부파일을 읽어서 출력하기(FileReader,BufferedReader,FileWriter,BufferedWriter)
라텐느
라텐느
이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
괴발개발이제 막 개발을 시작한 초보가 개인공부를 하는 공간입니다.
  • 라텐느
    괴발개발
    라텐느
    • 개발자 (150)
      • HTML|CSS (14)
      • JAVA (29)
      • JAVACSCRIPT (15)
      • SQL (15)
      • 기타 (6)
      • JSP (2)
      • SPRING (13)
      • SPRING BOOT (6)
      • Git&GitHub (1)
      • 시행착오 (2)
      • 개발일지 (35)
        • GreenMiniProject1 (12)
        • GreenMiniProject2 (9)
        • GreenFinalProject (14)
      • Flutter (5)
      • 자격증 (1)
        • SQLD (1)
      • AWS (2)
      • Linux (1)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 태그
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    태그
    개발자
    input
    javascript
    SQL
    일지
    오블완
    JS
    자기계발
    tag
    CSS
    db
    링크
    java
    AJAX
    HTML
    link
    티스토리챌린지
    JQuery
    부트캠프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
라텐느
[java] 클래스 활용

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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