20/10/27

아라·2020년 10월 28일
0

국비교육

목록 보기
12/30

배열 생성

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]; // 이후로 배열의 길이는 불변

배열의 복사

얕은 복사(Shallow Copy)

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으로 바뀌어 출력.

깊은 복사(deepcopy)

for (int i=0; i<nums1.length;i++){
	nums2[i]=nums1[i]
}
clone()
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();
Arrays.copyOf(원본, 길이)
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);

향상된 for문

루프변수가 없다. 안정성이 높고 코드가 간결하다. 무조건 순서대로만 가져오고(순서 제어 불가능), 무조건 처음부터 끝까지 가져온다. 속도가 빠르다.

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);
		}

0개의 댓글