ArrayEx3
public class ArrayEx3 {
public static void main(String[] args) {
int a = 100;
int b = 200;
System.out.println("a: " + a);
System.out.println("b: " + b);
int temp;
temp = a;
a = b;
b = temp;
System.out.println("---- 교환후 ----");
System.out.println("a: " + a);
System.out.println("b: " + b);
System.out.println("temp: " + temp);
System.out.println("================");
int[] nums = {100, 200, 300, 400, 500, 600, 700};
System.out.println("배열의 크기 : " + nums.length);
for (int i = 0; i < nums.length; i++) {
System.out.print(nums[i] + " ");
}
System.out.println();
System.out.println("--------");
printArray(nums);
System.out.println("-----------------");
System.out.println("======================");
for (int i = 0; i < nums.length / 2; i++) {
temp = nums[i];
nums[i] = nums[nums.length - (i + 1)];
nums[nums.length - (i + 1)] = temp;
}
printArray(nums);
}
static void printArray(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
ArrayLotto
public static void main(String[] args) {
int[] num = {30, 20, 50, 10, 40};
System.out.println(">>> 원본데이터");
printData(num);
System.out.println("---- 정렬 시작 ----");
if (num[0] > num[1]) {
int temp = num[0];
num[0] = num[1];
num[1] = temp;
}
printData(num);
if (num[0] > num[2]) {
int temp = num[0];
num[0] = num[2];
num[2] = temp;
}
printData(num);
if (num[0] > num[3]) {
int temp = num[0];
num[0] = num[3];
num[3] = temp;
}
printData(num);
System.out.println(">> 반복문으로 ");
num = new int[] {30, 20, 50, 10, 40};
System.out.println(">> 배열 변경전 데이터");
printData(num);
System.out.println("---첫번째 데이터 처리(인덱스: 0)---");
for (int i = 1; i <= 4; i++) {
if (num[0] > num[i]) {
int temp = num[0];
num[0] = num[i];
num[i] = temp;
}
printData(num);
}
System.out.println("---두번째 데이터 처리(인덱스: 1)---");
for (int i = 2; i <= 4; i++) {
if (num[1] > num[i]) {
int temp = num[1];
num[1] = num[i];
num[i] = temp;
}
printData(num);
}
System.out.println("---세번째 데이터 처리(인덱스: 2)---");
for (int i = 3; i <= 4; i++) {
if (num[2] > num[i]) {
int temp = num[2];
num[2] = num[i];
num[i] = temp;
}
printData(num);
}
System.out.println(">>> 정렬전");
num = new int[] {30, 20, 50, 10, 40};
printData(num);
for (int gijun = 0; gijun < (num.length - 1); gijun++) {
for (int i = (gijun + 1); i < num.length; i++) {
if (num[gijun] > num[i]) {
int temp = num[gijun];
num[gijun] = num[i];
num[i] = temp;
}
}
}
System.out.println(">>> 정렬후");
printData(num);
System.out.println("==== Arrays.sort() 사용 정렬 ====");
num = new int[] {30, 20, 50, 10, 40};
System.out.println(">>> 정렬전");
printData(num);
Arrays.sort(num);
System.out.println(">>> 정렬후");
printData(num);
System.out.println("---------");
num = new int[] {950, 120, 1110, 450, 337, 557, 782, 123, 1, 45, 88};
System.out.println(">>> 정렬전");
printData(num);
Arrays.sort(num);
System.out.println(">>> 정렬후");
printData(num);
}
static void printData(int[] num) {
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
System.out.println();
}
}
ArraySelctionSort
public static void main(String[] args) {
int[] num = {30, 20, 50, 10, 40};
System.out.println(">>> 원본데이터");
printData(num);
System.out.println("---- 정렬 시작 ----");
if (num[0] > num[1]) {
int temp = num[0];
num[0] = num[1];
num[1] = temp;
}
printData(num);
if (num[0] > num[2]) {
int temp = num[0];
num[0] = num[2];
num[2] = temp;
}
printData(num);
if (num[0] > num[3]) {
int temp = num[0];
num[0] = num[3];
num[3] = temp;
}
printData(num);
System.out.println(">> 반복문으로 ");
num = new int[] {30, 20, 50, 10, 40};
System.out.println(">> 배열 변경전 데이터");
printData(num);
System.out.println("---첫번째 데이터 처리(인덱스: 0)---");
for (int i = 1; i <= 4; i++) {
if (num[0] > num[i]) {
int temp = num[0];
num[0] = num[i];
num[i] = temp;
}
printData(num);
}
System.out.println("---두번째 데이터 처리(인덱스: 1)---");
for (int i = 2; i <= 4; i++) {
if (num[1] > num[i]) {
int temp = num[1];
num[1] = num[i];
num[i] = temp;
}
printData(num);
}
System.out.println("---세번째 데이터 처리(인덱스: 2)---");
for (int i = 3; i <= 4; i++) {
if (num[2] > num[i]) {
int temp = num[2];
num[2] = num[i];
num[i] = temp;
}
printData(num);
}
System.out.println(">>> 정렬전");
num = new int[] {30, 20, 50, 10, 40};
printData(num);
for (int gijun = 0; gijun < (num.length - 1); gijun++) {
for (int i = (gijun + 1); i < num.length; i++) {
if (num[gijun] > num[i]) {
int temp = num[gijun];
num[gijun] = num[i];
num[i] = temp;
}
}
}
System.out.println(">>> 정렬후");
printData(num);
System.out.println("==== Arrays.sort() 사용 정렬 ====");
num = new int[] {30, 20, 50, 10, 40};
System.out.println(">>> 정렬전");
printData(num);
Arrays.sort(num);
System.out.println(">>> 정렬후");
printData(num);
System.out.println("---------");
num = new int[] {950, 120, 1110, 450, 337, 557, 782, 123, 1, 45, 88};
System.out.println(">>> 정렬전");
printData(num);
Arrays.sort(num);
System.out.println(">>> 정렬후");
printData(num);
}
static void printData(int[] num) {
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
System.out.println();
}
}
- Arrays.sort( )를 사용하면 더 효율적이고 빠르게 정렬할수 있다.
- 실무에서는 자바에서 제공하는 기능을 적극 사용
ArrayCopy
public class ArrayCopy {
public static void main(String[] args) {
int [] num1 = new int[5];
int [] num2 = new int[5];
System.out.println("num1 : " + num1);
System.out.println("num2 : " + num2);
num1[0] = 10;
num1[1] = 20;
num1[2] = 30;
num1[3] = 40;
num1[4] = 50;
printData("num1", num1);
printData("num2", num2);
System.out.println("=== 배열복사(주소값 복사/ 얕은복사) ===");
num2 = num1;
num1[0] = 999;
printData("num1", num1);
printData("num2", num2);
System.out.println("num1 : " + num1);
System.out.println("num2 : " + num2);
System.out.println("=== 배열복사(물리적 복사/ 깊은 복사) ===");
int[] num3 = new int[5];
System.out.println("num3 : " + num3);
printData("num3", num3);
for (int i = 0; i < num1.length; i++) {
num3[i] = num1[i];
}
System.out.println(">>> 복사후 num3 <-- num1");
printData("num3", num3);
System.out.println("num3 : " + num3);
num1[0] = 888;
System.out.println("--- num1[0] = 888 변경후");
printData("num1", num1);
printData("num2", num2);
printData("num3", num3);
num3[1] = 777;
System.out.println("--- num3[0] = 777 변경후");
printData("num1", num1);
printData("num2", num2);
printData("num3", num3);
System.out.println("===========================");
System.out.println("==== system.arraycopy() ====");
int[] num4 = new int[num1.length];
printData("num4", num4);
System.arraycopy(num3, 0, num4, 0, num1.length);
System.out.println(">>> Sysyem.arraycopy() 복사후");
printData("num4", num4);
if (num3 == num4) {
System.out.println("> 같은 객체(동일 주소값 참조)");
} else {
System.out.println("> 다른 객체(2개의 독립된 데이터)");
}
System.out.println("==== 배열객체.clone() 복사 ====");
num4.clone();
int[] num5 = num4.clone();
printData("num4", num4);
printData("num5", num5);
System.out.println("num4 == num5 : " + (num4 == num5));
System.out.println("num1 == num2 : " + (num1 == num2));
}
static void printData(int[] num) {
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
System.out.println();
}
static void printData(String name, int[] num) {
System.out.print(name + " : ");
for (int i = 0; i < num.length; i++) {
System.out.print(num[i] + " ");
}
System.out.println();
}
}
ArrayCopyExam
public static void main(String[] args) {
int[] num1 = new int[3];
num1[0] = 10;
num1[1] = 20;
num1[2] = 30;
num1 = new int[] {10, 20, 30};
System.out.println(Arrays.toString(num1));
for (int i = 0; i < num1.length; i++) {
System.out.print(num1[i] + " ");
}
System.out.println();
num1[2] = 100;
printData(num1);
System.out.println("====== 문제2 배열복사 ======");
int[] num1Copy = new int[num1.length];
for (int i = 1; i < num1.length; i++) {
num1Copy[i] = num1[i];
}
printData(num1Copy);
System.out.println("num1 == num1Copy : " + (num1 == num1Copy));
}
static void printData(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
ArrayCopy
package com.mystudy.array4_copy;
import java.util.Arrays;
public class ArraysCopy {
public static void main(String[] args) {
int[] nums = {10, 11, 12, 13, 14};
System.out.println("nums : " + nums);
System.out.println(Arrays.toString(nums));
int[] numsCopy = Arrays.copyOf(nums, nums.length);
System.out.println("numsCopy : " + numsCopy);
System.out.println(Arrays.toString(nums));
if (nums == numsCopy) {
System.out.println("> 복사본 동일객체(주소값 복사)");
} else {
System.out.println("> 복사본 새로운객체(독립된 데이터)");
}
System.out.println("=============");
int[] numsCopyRange = Arrays.copyOfRange(nums, 0, 3);
System.out.println("numsCopyRange : " + numsCopyRange);
System.out.println(Arrays.toString(numsCopyRange));
System.out.println("--------");
numsCopyRange = Arrays.copyOfRange(nums, 1, 4);
System.out.println("numsCopyRange : " + numsCopyRange);
System.out.println(Arrays.toString(numsCopyRange));
}
}
ArrayTwoDimension
public static void main(String[] args) {
int[][] nums = { {10, 20},
{30, 40},
{50, 60},
{70, 80},
{90, 10},
{100, 110}
};
System.out.println("nums : " + nums);
System.out.println("nums[0] : " + nums[0]);
System.out.println("nums[0][0] : " + nums[0][0]);
System.out.println("-----------");
System.out.print(nums[0][0] + " ");
System.out.print(nums[0][1] + " ");
System.out.println();
System.out.print(nums[1][0] + " ");
System.out.print(nums[1][1] + " ");
System.out.println();
System.out.print(nums[2][0] + " ");
System.out.print(nums[2][1] + " ");
System.out.println();
System.out.println("----- for문으로 출력 -----");
for (int i = 0; i < 2; i++) {
System.out.print(nums[0][i] + " ");
}
System.out.println();
for (int i = 0; i < 2; i++) {
System.out.print(nums[1][i] + " ");
}
System.out.println();
System.out.println("==== 이중 for문으로 출력 ====");
System.out.println("nums.length : " + nums.length);
System.out.println("nums[0].length : " + nums[0].length);
System.out.println("nums[1].length : " + nums[1].length);
for (int k = 0; k < nums.length; k++) {
for (int i = 0; i < nums[k].length; i++) {
System.out.print(nums[k][i] + " ");
}
System.out.println();
}
System.out.println("=====================");
System.out.println(Arrays.deepToString(nums));
}