[배열]
-배열은 참조자료형
-변수를 인덱스당 하나씩 할당하고 new로 생성시에 메모리에 동적으로 할당해줌
-각 인덱스 번호의 주소에 들어있는 값을 들고옴
-반복을 쓰기 위해 배열을 사용
예시1
int num1 = 10;
int num2 = 20;
int num3 = 30;
int num4 = 40;
int num5 = 50;
System.out.println(num1);
System.out.println(num2);
System.out.println(num3);
System.out.println(num4);
System.out.println(num5);
// 배열은 참조자료형
// new는 생성할 때 무조건 동적할당
// 인덱스 사용
// 각 번호의 인덱스 주소를 참조함
int[] nums = new int[5];
nums[0] = 10;
nums[1] = 20;
nums[2] = 30;
nums[3] = 40;
nums[4] = 50;
for(int i = 0; i < 5; i++) {
System.out.println(nums[i]);
}
예시2
public static void printNames(String [] names) {
// @.length : @의 크기를 참조하여 유동적으로 들고옴
// names 이름은 동일하지만 다른 변수임
for (int i = 0; i < names.length; i++) {
System.out.println("이름[" + (i + 1) + "] : " + names[i]);
}
System.out.println();
}
public static void main(String[] args) {
// 배열을 미리 만들어놓고 그 뒤에 값을 넣는것
// 들어갈 값이 정해져있지 않을때, 들어갈 내용과 용량이 확실할 때 사용
String[] names = new String[3];
names[0] = "김상현";
names[1] = "임나영";
names[2] = "김종환";
// 배열 생성과 동시에 값을 넣는것
// 다음과 같은 배열을 쓸 때는 크기를 지정해두면 안됨
// 이 이후에 들어오는 값을 보고 공간을 할당해줌
String[] names2 = new String[] {"이상현", "손지호", "이강용"};
// 2번을 줄인것
String[] names3 = {"김두영", "강대협", "이현수", "김재영"};
printNames(names);
// 이런식으로도 사용가능
printNames(new String[] {"이상현", "손지호", "이강용"});
printNames(names3);
}
예시3
// 랜덤 임포트 해야함
Random random = new Random();
// nums 라는 10개의 공간을 만들어놓음
int[] nums = new int[10];
// // 0 ~ 9까지 랜덤하게 출력
// System.out.println(random.nextInt(10));
// for (int i = 0; i < 10; i++) {
// nums[i] = i;
//
// System.out.println(i);
// }
// for문의 목적 : 배열의 처음부터 끝까지 값을 넣기위해
// i : 배열의 인덱스 값
for (int i = 0; i < nums.length; i++) {
//
while (true) {
boolean findFlag = true;
// 랜덤한 값을 하나 만들어 변수에 넣어둠
int randomNum = random.nextInt(nums.length) + 1;
// 현재 nums[]안에 들어있는 값을 j값이 도는동안 꺼내와서 랜덤값과 비교
// j가 증가할 동안 배열에 있는 값을 꺼내와 비교했을때 같은 값이 없으면 그냥 for문 다 돌고 종료
for (int j = 0; j < nums.length; j++) {
if (nums[j] == randomNum) {
// 만약 값이 같으면 플래그를 false로 변경
findFlag = false;
// 배열을 비교하다 같은값이 있으면 멈추는 브레이크
break;
}
}
// 따로 값을 쓰지 않으면 ()안의 조건이 true일때라는 조건임
if (findFlag) {
nums[i] = randomNum;
// while 의 무한루프를 멈춰주는 브레이크
break;
}
}
}
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
예시4
J12_User[] users = new J12_User[3];
J12_User[] users2 = new J12_User[] {
new J12_User("aaa", "1234", "김종환", "aaa@gmail.com"),
new J12_User("bbb", "1234", "이종현", "bbb@gmail.com"),
new J12_User("ccc", "1234", "진채희", "ccc@gmail.com")
};
J12_User[] users3 = {
new J12_User("aaa", "1234", "김종환", "aaa@gmail.com"),
new J12_User("bbb", "1234", "이종현", "bbb@gmail.com"),
new J12_User("ccc", "1234", "진채희", "ccc@gmail.com")
};
users[0] = new J12_User ("aaa", "1234", "김종환", "aaa@gmail.com");
users[1] = new J12_User ("bbb", "1234", "이종현", "bbb@gmail.com");
users[2] = new J12_User ("ccc", "1234", "진채희", "ccc@gmail.com");
for (int i = 0; i < users.length; i++) {
System.out.println(users[i].toString());
}
예시5
private static void transferArray(int[] oldArray, int[] newArray) {
for (int i = 0; i < oldArray.length; i++) {
newArray[i] = oldArray[i];
}
}
// 배열을 받아와서 newArray에 받아온 배열의 크기에 1을 더하여 newArray에 대입
// transferArray에 받은 배열과 newArray를 붙임
private static int[] addArrayLength(int[] array) {
int[] newArray = new int[array.length + 1];
transferArray(array, newArray);
return newArray;
}
// 배열과 데이터를 받아와서 addArratLength를 통해 newArray에다 새 배열 등록
public static int[] addData(int[] array, int data) {
int[] newArray = addArrayLength(array);
newArray[array.length] = data;
return newArray;
}
// 메소드명만 보고도 하는 동작을 알수 있어야 함(클린코드)
// 클래스간의 응집도는 높고 결합도가 낮아야 좋다
public static void main(String[] args) {
int[] nums = new int[0];
// 새로만든 배열에 addData를 사용하여 값을 넣어줌
nums = addData(nums, 1);
nums = addData(nums, 2);
nums = addData(nums, 3);
nums = addData(nums, 4);
nums = addData(nums, 5);
//
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
예시6
String[] names = { "박성진", "조병철", "황창욱" };
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
System.out.println("==============<forEach>==============");
for(String name : names) {
System.out.println(name);
names[1] = "김준일";
}
int[] nums = {1, 2, 3, 4, 5};
for (int i : nums) {
System.out.println("i : " + i);
}
'백엔드개발자 준비하기' 카테고리의 다른 글
[백엔드개발자 준비하기] 상속 (0) | 2023.01.11 |
---|---|
[백엔드개발자 준비하기] 배열 활용 (0) | 2023.01.06 |
[백엔드개발자 준비하기] 깃, 깃허브, 소스트리 활용하기 (0) | 2023.01.05 |
[백엔드개발자 준비하기] 접근지정자 (0) | 2023.01.05 |
[백엔드개발자 준비하기] 생성자 (0) | 2023.01.05 |