본문 바로가기
PROGRAMING📚/Java📑

Java::구성 - 배열[Array]

Ta이니 2024. 6. 21.
728x90
반응형

배열

 

같은 변수의 이름으로 반복되는 작업을 위한 저장 공간

 

선언과 초기화를 한번에 진행

int[] arr = new int[10];

선언과 초기화 분리

String [] strings;
strings = new String[3];

선언과 초기화를 직접 값 입력해서 선언

int [] arr1= new int[]{0,1,2,3,4};
int [] arr2= {0,1,2,3,4};

타입에 따른 기본변수 와 참조변수의 기본값 

public class Ex01Array {
  public static void main(String[] args) {
    //배열 : 같은 변수의 이름으로 반복되는 작업을 위한 저장 공간
    int[] arr = new int[10];
    Utils.typeOf(arr); //int[]
    Object[] objects = new Object[5];
    Utils.typeOf(objects); //Object[]
    String [] strings = new String[3];
    Utils.typeOf(strings); //String
  }
}

배열은 객체

length 는 배열을 만들면 따라오는 속성 

System.out.println(arr.length); //arr의 길이 = 10개

 

데이터 접근하기

 

인스턴스화 되면서 초기화되서 값을 0을 가짐

System.out.println(arr[0]);

 배열의 범위(0~4)를 넘어가서 오류 발생

System.out.println(objects[5]); 

참조형 변수의 기본값은 null 으로 null 출력

System.out.println(objects[4]);
System.out.println(strings[2]);

 

arr의 0~9번째까지 입력 받고 출력하기

arr[0]=1;
arr[1]=2;
for (int i =0; i<arr.length; i++) 
{
  System.out.println(arr[i]);
}

 


70~100 사이의 랜덤한 값을 score 배열에 담아서 출력하기

package p04_Array;

public class Ex02applicate {
  public static void main(String[] args) {
    int [] score= new int[10];
    for (int i = 0; i < 10; i++) {
      score[i]= (int)((Math.random()*(100-70+1)+70));
      System.out.println(score[i]);
    }
  }
}

 

score[i]= (int)((Math.random()*(100-70+1)+70));

 

  • Math.random()은 0 이상 1 미만의 난수를 반환합니다.
  • (100 - 70)은 30이 되고, 따라서 Math.random() * 30은 0 이상 30 미만의 값을 반환합니다.
  • 이 값을 (int)로 형변환하면 소수점 아래를 버리고 정수 부분만 남깁니다.
  • 마지막으로 70을 더하면 최종적으로 범위가 70 이상 100 미만의 정수를 반환하게 됩니다.
  • 이는 원하는 범위의 상한값에 1을 더해줌으로써, Math.random()이 생성할 수 있는 난수의 범위를 증가시키는 것입니다. (100 - 70 + 1)입니다.
System.out.println(Arrays.toString(score));

 

 

메서드 함수(prArr())를 만들어서 배열 출력하기

public class Ex02applicate {
  public static void main(String[] args) {
    int [] score= new int[10];
    for (int i = 0; i < 10; i++) {
      score[i]= (int)((Math.random()*(100-70+1)+70));
      System.out.println(score[i]);
    }
    prArr(score);
  	}
	public static void prArr(int []arr){
    for (int i = 0; i < arr.length; i++) {
      System.out.print(arr[i]);
      if(i != arr.length-1){
        System.out.print(",");
      }
    }
  }
}

 

 

2차원 배열 선언하기

 

package p03_method;

public class Ex03Dimension {
  public static void main(String[] args) {
    int [][]arr= new int[3][3];
    arr = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
    int [][]arr2 = {{1,2,3},{4,5,6},{7,8,9}};
  }
}

 

출력하기

 int[][] arr = new int[3][3];
    arr = new int[][]{{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int[][] arr2 = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
    int sum =0;
    for (int i = 0; i < arr2.length; i++) {
      for (int j = 0; j < arr2[i].length; j++)
      {
        if(j != 0) System.out.print(",");
        System.out.print(arr2[i][j]);
        sum += arr2[i][j];
      }
      System.out.println();
    }

 

향상된 For 문

package p04_Array;

public class Ex04enhancedfor {
  public static void main(String[] args) {
    String [] arr ={"홍길동","이순신","장보고","김유신"};
    for(String item : arr){
      System.out.println(item);
    }
  }
}

 

//자바에서의 배열의 단점
//1) 설정된 크기를 변경 할 수 없다
int [] nums = {1,2,3};
System.out.println(nums.hashCode());
int [] nums2 = {1,2,3,4};
System.out.println(nums2.hashCode());
nums = nums2;
System.out.println(nums.hashCode());
728x90
반응형

댓글