위로 아래

배열

배열 (Array) 기본형

( 배열은 length, 문자열은 length() )

//1번 
int[] scores;
int[] scores = {100,90,50};

//2번
int scores[];
int scores[] = {100,90,50};

//3번
int[] scores = new int[] {100,90,50};

//4번
int[] scores;
scores = new int[] {100,90,50};

 

배열 출력

 //배열 출력
 Arrays.toString(배열명)
 
//예시
int[] scores = {89, 99, 109, 98, 101};
Arrays.sort(scores);   // 배열 
System.out.println(Arrays.toString(scores));   // 배열 출력 Arrays.toString(배열명)
// 결과[89, 98, 99, 101, 109]

 

예시

더보기
import java.util.Scanner;

public class Array01Demo {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		int scores[] = new int[5];
		int sum = 0;
		
		for(int i = 0; i <scores.length; i++) {
			scores[i]= input.nextInt(); 
		}
		for(int i = 0;i<scores.length;i++) {
			sum +=scores[i];
		}
		
		int tot=0;
		for(int s : scores) {tot+=s;}
		System.out.println(tot);
	}
}

 

다차원 배열

다차원 배열 예시

public class Array2Demo {
	public static void main(String args[]) {
		double[][] interests = {{3.2,3.1,3.2,3.0},{2.9,2.8,2.7,2.6},{2.7,2.6,2.5,2.7}};
		double[] sum1 = {0.0,0.0,0.0};
		double sum2=0.0;
		
		for(int i=0;i<interests.length;i++) {
			for(int j=0;j<interests[i].length;j++) {
				sum1[i] += interests[i][j];
			}
			
			System.out.printf("%d차년도 평균 이자율 = %.2f%%\n", i+1, sum1[i]/4);
			sum2 += sum1[i];
		}
		System.out.printf("3년간 평균 이자율 = %.2f%%\n", sum2/(3*4));
	}
}

동적배열

자바의 다차원 배열은 층마다 배열의 크기를 다르게 줄 수도 있다 

public class Array2_1Demo {
	public static void main(String[] args) {
		int[][] values = {{1,2,3},
				{10, 20, 30, 40, 50},
				{112,113,114,115},
				{100,200}};
		for(int i=0;i<values.length;i++) {
			for(int j=0;j<values[i].length;j++) {
				System.out.print(values[i][j]+"\t");}
			System.out.println();
		}
	}
}

 


객체 배열

기본형

//클래스 이름 Circle, 참조변수 이름 C1, 배열 길이 5
Circle[] C1 = new Circle[5]

예시

더보기
------------------------같은 패키지에 String7Demo.java 파일-------------------------
public class String7Demo {
	public static void main(String[] args) {
		String7Circle[] C1 = new String7Circle[5];   // 생성 없이 선언만
		
		for(int i=0;i<C1.length;i++) {
			C1[i] = new String7Circle(i+1.0);
			System.out.printf("원의 넓이(반지름 : %.1f) = %.2f\n",C1[i].getRadius(),C1[i].findArea());
		}
	}
}

----------------------같은 패키지에 String7Circle.java 파일-----------------------
public class String7Circle {
	double radius;
	String7Circle (double radius){this.radius = radius;}
	public double getRadius(){return this.radius;}
	double findArea() {return 3.14*this.radius*this.radius;}
}

 

 

Call by reference, Call by value

Call by reference : 참조 변수가 클래스 안 값의 주소를 가리키기 때문에 클래스 내부의 값 수정 가능 

Call by value : 클래스 안에 들어가서 값을 가지고와서 참조변수에 대입해서 사용. 클래스 내부의 값 수정 불가능.

 

예시

더보기
------------------------같은 패키지에 String7Demo.java 파일-------------------------
public class String7Demo2 {
	public static void main(String[] args) {
		String7Circle c1 = new String7Circle(10.0);
		String7Circle c2 = new String7Circle(10.0);
		
		zero(c1);   // call by reference
		System.out.println("원1의 반지름 : "+c1.radius);   // 결과 0.0
		zero(c2.radius);   // call by value 방식
		System.out.println("원2의 반지름 : "+c2.radius);   // 결과 10.0
	}
	public static void zero(String7Circle c) {c.radius = 0.0;}
	public static void zero(double r) {r=0.0;}
}

----------------------같은 패키지에 String7Circle.java 파일-----------------------
public class String7Circle {
	double radius;
	String7Circle (double radius){this.radius = radius;}
	public double getRadius(){return this.radius;}
	double findArea() {return 3.14*this.radius*this.radius;}
}

 

 


Arrays 클래스 메소드

  1. Arrays 클래스의 메소드는 모두 static이므로, 객체 생성 없이 사용 가능.
  2. java.util.Arrays;
Arrays.copyOf(arr, 3);   // arr 배열을 길이 3만큼 복사.
Arrays.copyOfRange(arr, 시작 인덱스 번호, 끝 인덱스 번호)   // arr 배열의 index번호 범위를 복사.

Arrays.sort(arr);   // arr 배열을 오름차순 정렬.
Arrays.sort(arr, Collections.reverseOrder());   // arr 배열을 내림차순 정렬.

Arrays.toString(arr);   // 1차원 배열일 경우. arr배열의 요소를 출력
Arrays.deepToString(arr);   // 다차원 배열일 경우. arr배열의 요소 출력

Arrays.equals();   // 1차원 배열일 경우. 배열을 비교해서 true, false 반환
Arrays.deepEquals();   // 다차원 배열일 경우. 배열을 비교해서 true, false 반환

Arrays.fill(arr,1);   // arr 배열의 남은 자리를 1로 채우기

Arrays.binarySearch(arr, 3); // 배열 검색 속에서 3이 몇 번째 있는지 인덱스 번호 반환. (정렬이 선행되어야 함)