int[] nums=new int[10]; // 주로 사용
int nums2[]=new int[10]; // 이 방법은 사용 안 하는 방법
자바 배열의 길이는 컴파일단계에서 정해지지 않고, 아래처럼 런타임단계(실행중)에서 결정할 수 있다.
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("학생수 : ");
int count=Integer.parseInt(reader.readLine());
int[] eng=new int[count]; // 이후로 배열의 길이는 불변
int[] nums1=new int[3];
nums1[0]=100;
nums1[1]=200;
nums1[2]=300;
int[] nums2=new int[3];
nums2=nums1; // 값 자체를 복사하는게 아니라 주소값을 복사(얕은 복사. Shallow Copy)
System.out.println(nums2[0]); // 100 출력
nums1[0]=500;
System.out.println(nums2[0]); // nums1[0]을 바꿨는데 nums2가 500으로 바뀌어 출력.
for (int i=0; i<nums1.length;i++){
nums2[i]=nums1[i]
}
double[] d1=new double[3];
d1[0]=1.23;
d1[1]=2.34;
d1[2]=3.45;
double[] d2=new double[3];
d2=d1.clone();
double[] d1=new double[3];
d1[0]=1.23;
d1[1]=2.34;
d1[2]=3.45;
double[] d2=new double[3];
d2=Arrays.copyOf(d1, d1.length);
루프변수가 없다. 안정성이 높고 코드가 간결하다. 무조건 순서대로만 가져오고(순서 제어 불가능), 무조건 처음부터 끝까지 가져온다. 속도가 빠르다.
String[] names=new String[5];
names[0]="홍길동";
names[1]="아무개";
names[2]="유재석";
names[3]="신동엽";
names[4]="강호동";
for (String name:names) {
System.out.println(name);
}
System.out.println();
정수배열이면 0
실수 배열이면 0.0
문자 배열이면 '\0'(null문자, 문자코드값 0)
논리 배열이면 false
참조형 배열이면 null
int[] nums1=new int[5];
nums1[0]=100;
nums1[1]=65;
nums1[2]=23;
nums1[3]=97;
nums1[4]=81;
int[] nums2=new int[] {100, 65, 23, 97, 81}; // nums2는 nums1과 똑같은 배열이다. 이렇게 배열을 초기화하는 방법이 편하다.
더 간단히 하자면,
int[] nums2={100, 65, 23, 97, 81};
int count=1000;
String[] name=new String[count];
int[] age=new int[count];
int[] gender=new int[count];
String[] address=new String[count];
// 나이(19~59)
for (int i=0;i<count;i++) {
age[i]=(int)(Math.random()*41)+19;
}
// 성별
for (int i=0;i<count;i++) {
gender[i]=(int)(Math.random()*2)+1;
}
// 이름
String[] n1= {"김", "이", "박", "최", "정", "한", "지", "조", "유", "임"};
String[] n2= {"대", "은", "창", "미", "준", "수", "진", "우", "채", "원", "경", "민", "훈", "철", "승", "제"};
String[] a1= {"서울시", "인천시", "부산시", "광주시", "대전시"};
String[] a2= {"동대문구", "서대문구", "중구", "남구", "북구"};
String[] a3= {"역삼동", "대치동", "성내동", "논현동", "염재동", "풍납동"};
for (int i=0;i<count;i++) {
name[i]=n1[(int)(Math.random()*n1.length)]+
n2[(int)(Math.random()*n2.length)]+
n2[(int)(Math.random()*n2.length)];
}
for (int i=0;i<count;i++) {
address[i]=a1[(int)(Math.random()*a1.length)]+" "+
a2[(int)(Math.random()*a2.length)]+" "+
a3[(int)(Math.random()*a3.length)]+" "+
(int)(Math.random()*200);
}