배열

2023. 12. 4. 23:42Daily Codig Reminder

1. 배열선언

데이터형 [] 베열명;

또는

데이터형 배열명 [];

 

2. 배열생성

배열명 =new 데이터형 [크기];

 

3. 배열초기화

배열명 [인덱스] = 값;

 

//1, 배열선언

int num [];

 

//2. 배열생성

num = new int [3];

sysout (num);

sysout(num[0]);

sysout(num[2]);

sysout(num.length);

 

num[0]=10;
num[1]=20;
num[2]=30;
System.out.println(num[0]);
System.out.println(num[1]);
System.out.println(num[2]);
System.out.println("=============");

 

for (int i =0; i <3; i++){
sysout("num['+i+"]:"+num[i]);

}

sysout("==========");

for (int =0; i <3; i++){

sysout(num[i]);
}sysout ("=======");

for(int data :num){ //배열을 자동순회

int count =0;

sysout("for each: " +count +"번째 데이터"+data);

count++;

}sysout ("배열 데이터 총합 =====");

int sum =0;

for ( int i =0; i<num.length; i++){

sum+=num[i]; //누적 총합

}sysout("총합:"+sum);

sysout("배열 데이터의 for each 총합 2.====");

int sum2=0;

for(int i:num){

sum2+=i; //누적합계

}sysout("총합"+sum2);

 

int []num = new int [4];

num [0]=1;
num [1]=2;
num [2]=3;
num [3]=4;
num = new int[3];
num[0]=10;
num[1]=20;
num[2]=30;
for (int i = 0; i < num.length; i++) {
System.out.println(num[i]);
}System.out.println("===========");
for (int x : num) {
System.out.println(x);

}sysout("======= 일반 for 누적합산1");

int sum =0;

for (int i =0; i<num.length; i++){

int j =num[i];

sum = sum+j;

}sysout("sum:"+sum);
sysout ("======= 일반 for 누적합산1");

sum =o;

for (int i :num){

sum +=i;

}sysout("sum: "+sum);

 

1.2 리터럴을 이용한

데이터형 [] 배열명 = { 값 , 값2 , 값3 };

 

//1. new 이용 num 배열 3개 생성 10 20 30

int num [];

num = new int [3];//생성

sysout(num[0]); //null

num[0]=10;
num[1]=20;
num[2]=30;

 

//일반 for 이용 순회 출력

for (int i =0; i<num.length; i++){

sysout(num[i]);

}sysout("========");

for (int data:num){
sysout(data);

 

//2. 값만 이용, 생성과 동시에 초기값 저장

int [] num2 = {10,20,30};

sysout(num2.length);

sysout(num2[0]);

int []num1;

num1 = num2;

num1 [0]=100;

System.out.println(num2[0]);
System.out.println(num2);
System.out.println(num1);

//num1 순회 출력
for (int i = 0; i < num1.length; i++) {
System.out.println(num1[i]);
}System.out.println("=========");

//num2 순회 출력
for (int i = 0; i < num2.length; i++) {
System.out.println(num2[i]);
}System.out.println("=========");
int []num3 = {1,2,3,4,};
num2 =num3;
for (int i : num2) {
System.out.println(">>"+i); }

//역순 출력

int []arr = {10,20,30,40,50,60,70,80,90,100};
for(int i = 1 ; i <= arr.length; i++) {
System.out.print(arr[arr.length-i] +" "); }

  1. int[] arr = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};:
    정수 배열 **arr**을 선언하고 초기화합니다.
  2. for (int i = 1; i <= arr.length; i++) {
    : 반복문을 시작합니다. i는 1부터 시작하여 배열의 길이(arr.length)까지 1씩 증가합니다.
  3. System.out.print(arr[arr.length - i] + " ");
    : 현재 인덱스 **arr.length - i**의 배열 요소를 출력합니다.
    이 부분에서 **arr.length - i**는 배열의 끝에서부터 역순으로 요소를 선택하는 역할을 합니다.
    • 첫 번째 반복에서는 **arr[arr.length - 1]**이 선택되어 100이 출력됩니다.
    • 두 번째 반복에서는 **arr[arr.length - 2]**이 선택되어 90이 출력됩니다.
    • 세 번째 반복에서는 **arr[arr.length - 3]**이 선택되어 80이 출력됩니다.
    • 이런식으로 반복이 진행됩니다.
  4. 최종적으로 반복문을 통해 배열의 모든 요소를 역순으로 출력합니다.

다른방법 역순
System.out.println();
System.out.println("===============");
for (int i= arr.length-1; i>=0; i--) {
System.out.print(arr[i]+" ");


int num[]= {10,20,30};
int min =0;
for (int i = 0; i < num.length; i++) {
if (min > num[i]); {
min=num[i];
} // System.out.println(max);

 

Scanner scan = new Scanner (System.in);
sysout("키의 최댓값을 구합니다.");

sysout('사람 수");

int num = scan.nextInt():

int [] height = new int [num];

for (int i=0; i<num; i++){

for (int i = 0; i < num; i++) {
System.out.println("사람 "+(i+1)+": ");
height[i] = scan.nextInt();
}

int max = height[0];
for (int i = 0; i < height.length; i++)
if (height[i]>max) {
max =height[i];
}
System.out.println("최댓값은 "+ max +"입니다."); }

 

  1. Scanner 클래스를 사용하여 사용자로부터 입력을 받을 수 있는 객체 **scan**을 생성합니다.
  2. "키의 최댓값을 구합니다."와 "사람 수: "를 출력하여 사용자에게 목적을 알리고, 사용자로부터 사람 수를 입력받습니다.
  3. 입력받은 사람 수(num)만큼의 크기를 갖는 정수 배열 **height**를 선언하고 초기화합니다.
  4. for 반복문을 사용하여 각 사람의 키를 입력받습니다. 각 입력된 키는 배열 **height**에 저장됩니다.
  5. 배열 **height**의 첫 번째 요소를 **max**로 초기화합니다.
  6. 다시 for 반복문을 사용하여 배열 height를 순회하면서 최댓값을 찾습니다. 만약 현재의 키(height[i])가 현재까지의 최댓값(max)보다 크면 최댓값을 갱신합니다.
  7. 반복문이 끝나면 최종적으로 찾은 최댓값을 출력합니다.

따라서, 이 코드는 사용자로부터 입력받은 여러 사람의 키 중 최댓값을 찾아 출력하는 프로그램입니다.

 

1. 4 이차원 배열생성

1. 배열선택

데이터형 [][] 배열명;

2. 배열생성

배열명 = new 데이터형 [행크기][열크기];

배열명 = new 데이터형 [행크기][]

 

for (int i =0; i <2; i++){

for (int j = 0; j < 3; j++) {
System.out.println("num["+i+"]["+j+"]= "+ num[i][j]);
} System.out.println("=========================");
for (int i = 0; i < num.length; i++) {//행번호2
// for (int j = 0; j < num.length; j++) { //각 행 방의 열 방 갯수 따로 구함
// System.out.println(num[i][j]);

 

//3.누적

int sum1=0;

for (int i =0; i<num.length; i++){

for (int j =0; j<num,length; j++){

sysout(num[i][j]);

sum1+= num[i][j];

}

}sysout(sum1);

 

//4. for each 를 이용한 출력

for (int[] row : num){// row :열 0 1 2
for (int data :row){ //data: 10 20 30

System.out.println(data); 

} int sum =0; 
for(int [] row:num) { 
for(int data: row) { 
sum+= data;  }  }

 

int [][]num = new int [2][]; //2행 열지정 없음
num[0] = new int [3];
num[1] = new int [2];
//초기화
num[0][0]=10;
num[0][1]=20;
num[0][2]=30;
num[1][0]=40;
num[1][1]=50;
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num.length; j++) {
System.out.println("num["+i+"]["+j+"]="+num[i][j]);
}System.out.println("=============");
} int sum =0;
for (int[] row : num) {
for (int data: row) {
System.out.println(data); } }

 

int [][]arr= {
{10,20,30}, { 50, 40, 60 }, { 80, 80, 90 } };
for (int i= arr.length-1; i>=0; i--) {
for (int j =arr.length-1; j>=0; j--) {
System.out.print(arr[i][j]+" "); } }
90 80 80 60 40 50 30 20 10


call by ref :함수 호출 시 주소가 전달 : 기본형 제외 모든것.
배열은 주소가 같고 아예 값을 100으로 바꿈
private static void test2(int[] num2) {
num2[0]=100; }
public static void main(String[] args) { /
/ // int num=10;
// System.out.println("main함수: "+num);
// test(num);//함수호출, 데이터 전달
// System.out.println("main test 호출 후: "+num);
int [] num2 = {10,20,30};
for (int i : num2) {
System.out.println(i);
}System.out.println("===========");
test2(num2); //test함수에 num2 정수 배열 전달,
System.out.println("test2 함수 호출 후=========");
for (int i : num2) {
System.out.println(i);
} } test3(num2[2]); → num2의 2를 가져와서 복사 해서 value
} private static void test3(int i) { i = 1;
System.out.println(num2[2]);

}

'Daily Codig Reminder' 카테고리의 다른 글

메소드  (1) 2023.12.06
클래스(객체), 메소드  (1) 2023.12.05
문장  (1) 2023.11.30
식별자와 데이터형, 연산자  (0) 2023.11.29
CSS+ JAVA  (1) 2023.11.29