위로
아래
배열
배열 (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 클래스 메소드
- Arrays 클래스의 메소드는 모두 static이므로, 객체 생성 없이 사용 가능.
- 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이 몇 번째 있는지 인덱스 번호 반환. (정렬이 선행되어야 함)