Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 티스토리챌린지
- 스파르타코딩클럽
- bootstrap
- Eclipse
- 자바
- spring
- HTML
- 이클립스
- myBatis
- error
- Firebase
- Spring Security
- 깃허브
- 김영한
- AJAX
- 웹개발
- github
- JavaScript
- vscode
- 기업설명회
- CSS
- java
- SQLD
- restapi
- 오블완
- 배포
- SQL
- ChatGPT
- jQuery
- 코딩
Archives
- Today
- Total
푸들푸들
[JAVA] 기본형, 참조형 본문
기본형
변수에 사용할 값을 직접 넣을 수 있는 데이터 타입
해당 값 바로 사용 가능, 연산 가능
소문자로 시작(int, long, double, boolean)
참조형
데이터에 접근하기 위한 참조(주소, 참조값)를 저장하는 데이터 타입
객체(.), 배열([ ])에 사용됨
기본형을 제외한 나머지 모두
String - 클래스
변수 대입
대원칙 = 자바는 항상 변수의 값을 복사해서 대입한다.
기본형: 해당 값 복사
참조형: 참조값만 복사됨
package ref;
public class Data {
int value;
}
Data dataA = new Data();
dataA.value = 10;
Data dataB = dataA;
System.out.println("dataA 참조값=" + dataA);
System.out.println("dataB 참조값=" + dataB);
System.out.println("dataA.value = " + dataA.value);
System.out.println("dataB.value = " + dataB.value);
>결과
dataA = ref.Data@x001
dataB = ref.Data@x001
dataA.value = 10
dataB.value = 10
메서드 호출
메서드 호출할 때 사용하는 매개변수(파라미터) => 변수
값 복사해서 전달
package ref;
public class MethodChange2 {
public static void main(String[] args) {
Data dataA = new Data();
dataA.value = 10;
System.out.println("메서드 호출 전: dataA.value = " + dataA.value);
changeReference(dataA);
System.out.println("메서드 호출 후: dataA.value = " + dataA.value);
}
static void changeReference(Data dataX) {
dataX.value = 20;
}
}
> 결과
메서드 호출 전: dataA.value = 10
메서드 호출 후: dataA.value = 20
- 기본형: 메서드로 기본형 데이터를 전달하면, 해당 값이 복사되어 전달됨. 메서드 내부에서 매개변수 값을 변경해도, 호출자의 변수 값에는 영향X
- 참조형: 메서드로 참조형 데이터를 전달하면, 참조값이 복사되어 전달됨. 메서드 내부에서 매개변수로 전달된 객체의 멤버 변수를 변경하면, 호출자의 객체도 변경됨
ex. 학생정보 출력 - 메서드 활용
package ref;
public class Method1 {
public static void main(String[] args) {
Student student1 = new Student(); // x001
initStudent(student1, "학생1", 15, 90);
Student student2 = new Student(); // x002
initStudent(student2, "학생2", 16, 80);
printStudent(student1);
printStudent(student2);
}
static void initStudent(Student student, String name, int age, int grade) {
student.name = name;
student.age = age;
student.grade = grade;
}
static void printStudent(Student student1) {
System.out.println("이름:" + student1.name + " 나이:" + student1.age + " 성적:" + student1.grade);
}
}
-> 코드 중복 줄이기
package ref;
public class Method2 {
public static void main(String[] args) {
Student student1 = createStudent("학생1", 15, 90); //메서드 호출 후 결과 반환
Student student2 = createStudent("학생2", 16, 80);
printStudent(student1);
printStudent(student2);
}
static Student createStudent(String name, int age, int grade) {
Student student = new Student(); // x001
student.name = name;
student.age = age;
student.grade = grade;
return student; // x001
}
static void printStudent(Student student1) {
System.out.println("이름:" + student1.name + " 나이:" + student1.age + " 성적:" + student1.grade);
}
}
return = 매서드 호출 결과 반환
'SELF-STUDY' 카테고리의 다른 글
[JAVA] 절차 지향, 객체 지향 프로그래밍 (2) | 2025.03.26 |
---|---|
[JAVA] 변수와 초기화 (1) | 2025.03.25 |
[JAVA] 클래스, 객체 (0) | 2025.03.20 |
[IntelliJ] Window 단축키 (0) | 2025.03.13 |
Join과 Subquery (0) | 2025.02.21 |