반응형
- C1102클래스배열
- C1102개념01_클래스배열
package C1102클래스배열;
class Member{
int number;
String id;
String pw;
String name;
int score;
}
public class C1102개념01_클래스배열 {
public static void main(String[] args) {
//데이터가 3가지 모양이다.
//문자열. 배열. 클래스
String data1 = "1001/1234/qwer/김철수/10"; //문자열
String[] dataList1 = {"1001", "1234", "qwer", "김철수", "10"};//배열
//클래스
Member member = new Member();
member.number = 1001;
member.id = "qwer";
member.pw = "1234";
member.name = "김철수";
member.score = 10;
//-------------------------------------------------
//위의 것들을 결국 배열에 담아야 한다.
String data2 = "";
data2 +="1001/qwer/1234/김철수/10\n";
data2 += "1002/asdf/2345/이영희/30";
String[][] dataList2 ={
{"1001" , "qwer" ,"1234", "김철수" , "10"},
{"1002" , "asdf" ,"2345", "이영희" , "30"},
};
//-------------------------------------------------
// 클래스 = 사용자 정의 데이터 타입
//지금 가장 쓰는 형태
Member[] memberList = new Member[2];
//클래스 배열
//머리만 만든거다.
System.out.println(memberList[0]);
System.out.println(memberList[1]);
Member m1 = new Member();
//몸통
m1.number = 1001;
m1.id = "qwer";
m1.pw = "1234";
m1.name = "김철수";
m1.score = 10;
memberList[0] = m1;//머리에다가 붙인다.
Member m2 = new Member();
//몸통
m2.number = 1002;
m2.id = "asdf";
m2.pw = "2345";
m2.name = "이영희";
m2.score = 30;
memberList[1] = m2;//머리에다가 붙인다.
for(int i=0; i<memberList.length; i++) {
System.out.println(memberList[i].name);
}
}
}
- 메모리
- Member[] memberList = new Member[2];
- memberlist가 있고
- 머리만 2개 만듬
- [0] - 여기에 m1이 들어온것
- [1]
- Member m1 = new Member();
- ml
- 이것을 [0]에 집어넣은것
- 5개. 클래스
- ml
- ml. m1. m2 만 main에 있고.
- 나머지는 전부 heap에 있다.
- Member[] memberList = new Member[2];

- C1102개념02_클래스배열
package C1102클래스배열;
/*
class Member{
int number;
String id;
String pw;
String name;
int score;
}
*/
public class C1102개념02_클래스배열 {
public static void main(String[] args) {
// 클래스 배열은 2차원배열과 비슷한 구조이다.
int[][] arr = new int[3][];
//머리만 만든것 / 몸통이 없다.
//현재 arr, 머리 3개
arr[0] = new int[3]; //몸통3개
arr[1] = new int[3]; //몸통3개
arr[2] = new int[3]; //몸통3개
//총 변수가 13개인거다.
Member[] memberList = new Member[3];
//변수 1개. 몸통3개.
memberList[0] = new Member(); //몸통 5개
memberList[1] = new Member(); //몸통 5개
memberList[2] = new Member(); //몸통 5개
//총 19개
}
}
- C1102개념03_클래스배열
package C1102클래스배열;
/*
class Member{
int number;
String id;
String pw;
String name;
int score;
}
*/
public class C1102개념03_클래스배열 {
public static void main(String[] args) {
String[][] dataList ={
{"1001" , "qwer" , "1234", "김철수" , "10"},
{"1002" , "asdf" , "2345", "이영희" , "30"},
};
int size = dataList.length;
Member[] memberList = new Member[size];
//String[][] dataList 데이터가 있는데.
//Member[] memberList = new Member[size];
//여기다가 어떻게 넣느냐.
// 방법1
for(int i = 0; i < size; i++) {
Member m = new Member(); //맴버 만듬
//따로 변수를 만들어서 집어넣기
m.number = Integer.parseInt(dataList[i][0]);
m.id = dataList[i][1];
m.pw = dataList[i][2];
m.name = dataList[i][3];
m.score = Integer.parseInt(dataList[i][4]);
memberList[i] = m;
}
// 방법2
for(int i = 0; i < size; i++) {
memberList[i] = new Member();
//직접 배열에 넣어도 된다.
memberList[i].number = Integer.parseInt(dataList[i][0]);
memberList[i].id = dataList[i][1];
memberList[i].pw = dataList[i][2];
memberList[i].name = dataList[i][3];
memberList[i].score = Integer.parseInt(dataList[i][4]);
}
}
}
- C1102개념04_클래스배열
package C1102클래스배열;
import java.util.Arrays;
/*
class Member{
int number;
String id;
String pw;
String name;
int score;
}
*/
public class C1102개념04_클래스배열 {
public static void main(String[] args) {
//궁극적으로
//이렇게 데이터가 넘어올것이다. 문자열로
String data = "";
data += "1001,qwer,1234,김철민,10\n";
data += "1002,asdf,2345,우중현,3\n";
data += "1003,zxcv,3456,이만수,30";
//-------------------------------------
System.out.println(data);
String[] tokens = data.split("\n");
//토큰으로 잘라서
System.out.println(Arrays.toString(tokens));
//------------------------------------------
// 위 데이터를 클래스 배열에 넣고 1등 이름출력
Member[] memberList = null;
int size = tokens.length;
memberList = new Member[size]; //머리 만들기
for(int i = 0; i < size; i++) {
// 1001,qwer,1234,김철민,10
String[] tokens2 = tokens[i].split(",");
//토큰에서 한번 더 자른다.
memberList[i] = new Member();
memberList[i].number = Integer.parseInt(tokens2[0]);
memberList[i].id = tokens2[1];
memberList[i].pw = tokens2[2];
memberList[i].name = tokens2[3];
memberList[i].score = Integer.parseInt(tokens2[4]);
}
int max = memberList[0].score;
String name = memberList[0].name;
for(int i = 0; i < memberList.length; i++) {
if(memberList[i].score > max) {
max = memberList[i].score;
name = memberList[i].name;
}
}
System.out.println(name);
}
}
- C1102개념05_클래스배열_암기
- 컨트롤러
- 한번 만드는것이 좋다.
- 암기는 외우는것?
package C1102클래스배열;
import java.util.Scanner;
/*
class Member{
int number;
String id;
String pw;
String name;
int score;
}
*/
public class C1102개념05_클래스배열_암기 {
public static void main(String[] args) {
/*
[문제] 클래스 배열을 이용해서 CRUD를 구현하시오.
*/
int max = 100;
Member[] memberList = new Member[max];
//이 배열에 넣는것
int size = 0;
int num = 1000; // 번호를 1000부터 시작
Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("[1]가입 [2]탈퇴 [3]수정 [4]검색 [5]전체출력 [0]종료");
int sel = scan.nextInt();
if(sel == 1) {
// 객체(instance)
Member member = new Member();
member.number = num;
num += 1;
System.out.println("[가입]아이디 입력 : ");
member.id = scan.next();
System.out.println("[가입]비밀번호 입력 : ");
member.pw = scan.next();
System.out.println("[가입]이름 입력 : ");
member.name = scan.next();
System.out.println("[가입]점수 입력 : ");
member.score = scan.nextInt();
memberList[size] = member;
size += 1;
}
else if(sel == 2) {
System.out.println("[탈퇴] 아이디 입력 : ");
String id = scan.next();
int index = -1;
for(int i = 0; i < size; i++) {
if(memberList[i].id.equals(id)) {
index = i;
break;
}
}
if(index == -1) {
System.out.println("아이디를 확인해주세요.");
}else {
for(int i = index; i < size-1; i++) {
memberList[i] = memberList[i + 1];
}
memberList[size - 1] = null;
size -= 1;
}
}
else if(sel == 3) {
System.out.print("[수정]아이디 입력 : ");
String id = scan.next();
int index = -1;
for(int i=0; i<size; i++) {
if(memberList[i].id.equals(id)) {
index = i;
break;
}
}
if(index == -1) {
System.out.println("아이디를 확인해주세요.");
} else {
while(true) {
System.out.println("[1]이름 수정 [2]성적 수정 [0]종료");
int menu = scan.nextInt();
if(menu == 0) {
break;
} else if(menu == 1) {
System.out.print("[수정]이름 입력 : ");
String newName = scan.next();
memberList[index].name = newName;
} else if(menu == 2) {
System.out.print("[수정]성적 입력 : ");
int newScore = scan.nextInt();
memberList[index].score = newScore;
}
}
}
}
else if(sel == 4) {
System.out.print("[검색]아이디 입력 : ");
String id = scan.next();
int index = -1;
for(int i=0; i<size; i++) {
if(memberList[i].id.equals(id)) {
index = i;
break;
}
}
if(index == -1) {
System.out.println("아이디를 확인해주세요.");
} else {
System.out.print(memberList[index].number + " " + memberList[index].id + " ");
System.out.println(memberList[index].pw + " " + memberList[index].name + " " + memberList[index].score);
}
}
else if(sel == 5) {
for(int i = 0; i < size; i++) {
System.out.print(memberList[i].number + " " + memberList[i].id + " ");
System.out.println(memberList[i].pw + " " + memberList[i].name + " " + memberList[i].score);
}
}else if(sel == 0) {
break;
}
}
scan.close();
}
}
- C1102개념06_클래스배열_주소
package C1102클래스배열;
class AA{
int a;
int b;
}
public class C1102개념06_클래스배열_주소 {
public static void main(String[] args) {
AA aa = new AA();
aa.a = 10;
aa = new AA();
aa.b = 20;
// 실행 전 예상하기
System.out.println(aa.a + " ," + aa.b);
}
}
- 메모리
- heap은 GC가비지컬렉터가 삭제한다.
- main은 중괄호가 끝나면 삭제된다.

- C1102개념07_클래스배열_주소
package C1102클래스배열;
class BB{
int a;
int b;
}
public class C1102개념07_클래스배열_주소 {
public static void main(String[] args) {
BB [] bb = new BB[3];
//머리만 3개 만듬
//BB [] bb => 1번째 main에 생긴다.
//new BB[3]; => heap에 생긴다.
for(int i = 0; i < bb.length; i++) {
bb[i] = new BB();
bb[i].a = 10;
bb[i].b = 20;
}
// 실행 전 예상하기
for(int i = 0; i < bb.length; i++) {
System.out.println(bb[i].a + bb[i].b);
}
}
}
- 메모리

- C1102개념08_클래스배열_주소
package C1102클래스배열;
class CC {
int a;
int b;
}
public class C1102개념08_클래스배열_주소 {
public static void main(String[] args) {
CC[] ccList = new CC[3];
//ccList => main에 생김
//CC[3] => heap 머리 3개 만듬
//
for (int i = 0; i < ccList.length; i++) {
ccList[i] = new CC();
ccList[i].a = 10;
ccList[i].b = 20;
}
// 실행 전 예상하기
for (int i = 0; i < ccList.length; i++) {
System.out.println(ccList[i].a + " " + ccList[i].b);
}
System.out.println("----------------------------");
CC cc = ccList[0];
//cc => main에 생김
cc.a = 100;
// 실행전 예상하기
for (int i = 0; i < ccList.length; i++) {
System.out.println(ccList[i].a + " " + ccList[i].b);
}
}
}
- 메모리

- C1102개념09_클래스배열_주소
package C1102클래스배열;
class DD {
int a;
int b;
}
public class C1102개념09_클래스배열_주소 {
public static void main(String[] args) {
DD[] ddList = new DD[3];
//ddList => main에 생김
//heap에 DD[3] => 머리 3개 생김
DD d1 = new DD();
//d1 => main에 생김
//heap에 DD . 클래스니까. a와 b가 생김
d1.a = 100;
//int a = 100을 넣은것
ddList[0] = d1; //넘겨주고
d1 = new DD();
//heap에 new. a와 b가 생김
//GC컬렉터는 실행이 안 된다.
//X1을 알고 있는 애가 있다.
//d1이 new를 하기 전에 넘겨주고 new를 한거다.
d1.a = 200;
ddList[1] = d1; //넘김
d1 = new DD();
d1.a = 300;
ddList[2] = d1;
// 실행 전 예상하기
for(int i = 0; i < ddList.length; i++) {
System.out.println(ddList[i].a);
}
}
}
- 메모리

- C1102개념10_클래스배열_주소
package C1102클래스배열;
import java.util.Arrays;
class EE {
int arr[] = {1,2,3};
}
public class C1102개념10_클래스배열_주소 {
public static void main(String[] args) {
EE ee[] = new EE[3];
//main에 ee가 생기고 = x
//heap에 머리 3개가 생긴다. = x
for(int i = 0; i < ee.length; i++) {
ee[i] = new EE();
//heap에 arr3개가 생긴다.
}
EE test1 = new EE();
//main에 test1이 생기고
//heap에 ee가 생김
int arr[] = {4,5,6};
test1.arr = arr; //GC 삭제됨
ee[1] = test1;
arr[1] = 100;
// 실행 전 예상하기
for(int i = 0; i < ee.length; i++) {
System.out.println(Arrays.toString(ee[i].arr));
}
}
}
- 메모리

반응형
'코딩 > 2-JAVA' 카테고리의 다른 글
| C1201메서드_개념 (0) | 2025.07.03 |
|---|---|
| C1103클래스배열_문자열 , C1104클래스배열_심화 (1) | 2025.07.03 |
| C1101클래스 (0) | 2025.06.30 |
| C1005파싱 , C1006입력 (1) | 2025.06.27 |
| C1001문자열, C1002문자열함수, C1003형변환, C1004문자열과데이터 (5) | 2025.06.27 |