Java - 배열
2020. 8. 23. 09:25ㆍJava/Java
반응형
거의 모든 프로그래밍 언어에는 배열이라는 개념이 존재한다.
Java에서 배열은 같은 자료형의 자료를 더욱 편리하게 관리하기 위해서 사용한다.
배열은 우리가 생활에서 같은 종류의 물건들을 한 상자에 담아서 관리하는 것이라 생각하면 비슷하다.
배열=>같은 자료형의 변수들의 집합체 <-> 서로 다른 자료형의 변수들의 집합체(=>구조체)
배열을 사용하지 않으면 1.변수이름이 많아지면 관리상의 어려움이 있다.
2.처리속도가 느려진다.
int s[];
String str[];
위와 같이 자료형을 적어주고 []을 붙임으로써 배열을 선언했다.
int su[]=new int[3];
이렇게 3의 크기를 가진 배열을 생성했다. 자바에서 배열의 크기는 변하지 않는다.
su[0]=10; su[1]=20; su[2]=30;
배열의 인덱스는 0부터 시작하고, 위와 같이 인덱스를 통해서 값을 넣고, 값을 뺄 수 있다.
값을 찾을 때는 반복문을 통해서 찾는 방법이 많이 사용된다.
배열의 사용 예시 코드
public class ArgTest {
public static void main(String args[]) {
// TODO Auto-generated method stub
//int su,su2,su3;
//형식) 자료형 배열명[]=new 자료형[갯수];
int su[]=new int[3];//0,1,2
System.out.println("su=>"+su);
su[0]=10; su[1]=20; //su[2]=30;
System.out.println("su[1]=>"+su[1]);
System.out.println("su[2]=>"+su[2]);
/*
int su4;
System.out.println(su4);
*/
System.out.println("2.배열의 두번째 작성방법");//배열을 생성하고나서 바로 초기화
//형식) 자료형 배열명[]={요소값,요소값2,,,,};
int c[]= {10,20,30,40,50,60,70,80,90};
/*
* int c[]=new int[11]; c[0]=10,c[1]=20,,,,c[10]=110
* 배열의 자동으로 갯수설정=>배열명.length
*/
for(int i=2;i<c.length;i++)
System.out.println("c["+i+"]="+c[i]);
//확장 for문(=향상된 for문)=>단순히 배열,객체(=Collection)의 저장된 값을 출력
//형식) for(배열의 자료형 출력할 변수명:배열명 or 컬렉션 객체명)
for(int num:c)
System.out.print("num="+num+"\t");
}
}
2차원 배열 예제
public class DoubleTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("2차원배열을 생성 및 가변배열");
//1.형식) 배열의 자료형 배열명[][]=new 자료형[행수][열수]
int c[][]=new int[3][3];//c[0][0]=10,c[0][1]=20,,,c[2][2]=90;
//2.형식) 배열의 자료형 배열명[][]={{열의값1,값2,,},{열의값2,,,},{}}
int b[][]= {{10,20,30},{40,50},{60,70,80,90}};//3*3=9
// b[0][0]=10 b[1][1]=50 b[2][2]=90
for(int i=0;i<b.length;i++) {
//System.out.println("b["+i+"]="+b[i]); 행의 주소출력=>열을 찾아갈수있다.
for(int j=0;j<b[i].length;j++) {
System.out.println("b["+i+"]["+j+"]="+b[i][j]);
}//inner for
}//outer for
System.out.println("===확장 for문(2차원 배열) 배열의 첨자와 상관없음===");
/* for(2차원배열의 자료형 배열명[][]:3차원배열명)=>참조
* for(1차원배열의 자료형 배열명[]:2차원배열명) //[][] (X)
* 형식) for(1차원 배열의 자료형 출력변수명:1차원 배열명)
*/
//for(int b[][]:x){
for(int tmp[]:b) {//2차원배열에서 1차원배열의 값을 하나씩 꺼낸다.
for(int su:tmp) {//tmp[]->su
System.out.print(su+"\t");//가로로 이동하면서 출력
}
System.out.println();//줄바꿈
}//outer for
}
}
배열과 오버로딩을 이용한 활용
매개변수에 String ... names을 통해 동적으로 변수를 받아 오버로딩을 생성 가능하다.
public class VarArgTest {
//(1)오버로딩(자료형은 같고 갯수가 다른경우)
/*
public void print(String a) {
System.out.println("a=>"+a);
}
public void print(String a,String b) {
System.out.println("a=>"+a+",b=>"+b);
}
public void print(String a,String b,String c) {
System.out.println("a=>"+a+",b=>"+b+",c=>"+c);
}*/
public void print(String ... names){//(String names[]) { 일반적인 배열
/* 동적배열(크기 자동증가) 가변매개변수=>매개변수가 그때마다 다르다
* String names[]={"홍길동"}
* String names[]={"홍길동","테스트"}
* String names[]={"홍길동","테스트","테스트김"}
*/
for(int i=0;i<names.length;i++) //for(String su:names)
System.out.print(names[i]+",");//System.out.print(su+",");
System.out.println();//줄바꿈
}
public static void main(String args[]) {
// TODO Auto-generated method stub
VarArgTest vat=new VarArgTest();//메서드호출 목적
vat.print("홍길동");
vat.print("홍길동","테스트");
vat.print("홍길동","테스트","테스트김");
vat.print("홍길동","테스트","테스트김","임시");//4
vat.print("홍길동","테스트","테스트김","임시","임시2");//5
vat.print("홍길동","테스트","테스트김","임시","임시2","임시3");//6
}
}
반응형
'Java > Java' 카테고리의 다른 글
Java - 상속(2) - super() (0) | 2020.08.23 |
---|---|
Java - 상속(1) (0) | 2020.08.23 |
Java - this (0) | 2020.08.21 |
Java - 오버로딩 (0) | 2020.08.21 |
Java - 캡슐화 (0) | 2020.08.19 |