-
java :: 2차원 배열 및 메소드 설명IT/Java & JSP & FW 2011. 12. 14. 12:442차원 배열
-2차원 배열 선언
자료형 배열명[][]
자료형 []배열형[]
자료형 [][]배열명
-2차원 배열 메모리 생성하기
배열명=new 자료형[행수][열수]
-2차원 배열 초기화하기
배열명[행][열]=값;
-선언시 사용하는 []의 위치의 의미 (이해할 것)
1. int []i, j, k; - 1차원, 변수, 변수
2. int i[], k; - 1차원, 변수
3. int []i[], j; - 2차원, 변수
4. int i[][], j; - 2차원, 변수
5. int []i[], j[]; - 2차원, 1차원
예제1
(day08_01.java)
import java.io.*; public class day08_01 { public static void main(String[] args) throws IOException{ System.out.println("2차원 배열"); //1. 선언하기 int arr[][]; // 하나를 쓰면 1차원 2개를 쓰면 2차원, 3차 4차 []을 계속 붙이면 됨. //2. 생성 arr=new int[3][2]; //3행의 2열이 됨. //3. 초기화 arr[0][0]=10; arr[0][1]=20; arr[0][0]=30; arr[0][1]=40; for(int i=0;i<arr.length;i++){ // 2차원 배열은 다중 for문을 이용한다. 행과 열에 접근해야 하기 때문이다. for(int j=0;j<arr[i].length;j++){ //2차원 배열에서의 length 작동 원리를 이해할 것. System.out.print("arr["+arr[i][j]+"]\t"); } System.out.println(); } } }
예제2
(day08_01.java)
import java.io.*; public class day08_01 { public static void main(String[] args) throws IOException{ System.out.println("2차원 배열"); //1. 선언하기 int arr[][]; // 하나를 쓰면 1차원 2개를 쓰면 2차원, 3차 4차 []을 계속 붙이면 됨. //2. 생성 arr=new int[5][5]; //3행의 2열이 됨. // 2차원 배열을 이용하여 // 10000 // 01000 // 00100 // 00010 // 00001 // 출력 시키기 for(int i=0;i<arr.length;i++){ // 2차원 배열은 다중 for문을 이용한다. 행과 열에 접근해야 하기 때문이다. for(int j=0;j<arr[i].length;j++){ //2차원 배열에서의 length 작동 원리를 이해할 것. if(i==j){ arr[i][j]=1; } System.out.print(arr[i][j]); } System.out.println(); } // 배열의 원리와 구조를 이해하면 // 열에 똑같은 값을 넣지 않아도 2차원 배열이 생성됨을 알 수 있다. int c[][]=new int[4][]; c[0]=new int[7]; c[1]=new int[4]; c[2]=new int[6]; c[3]=new int[3]; for(int i=0;i<c.length;i++){ for(int j=0;j<c[i].length;j++){ System.out.print(c[i][j]+" "); } System.out.println(); } } }
메소드 (Method)
프로그램의 유연성을 위하여 반복되어 사용 되는 내용을 묶어서 특정 이름으로 관리하는 것.
클레스에 종속이 되어 있어야 한다. (클레스 하단에 작성한다.)
-형식
public static void main(String[] args){
}
접근제한자[지정예약어] 반환타입 메소드명(매개변수들){
처리할 ............
내용들 ............
}
모두 소문자를 쓸 경우 변수로 인식, 앞 글자를 대문자로 쓸 경우 클래스로 인식하기 때문이다.
모두 대문자로 적으면 상수로 인식할 가능성이 있다.
-메소드 3가지
call by name :: 이름을 불러서 쓸 수 있는 메소드
call by value :: 원본의 값을 복사해서 쓰는 메소드 원본에 변형이 없다.
call by reference :: 원본의 주소값을 복사해서 쓰는 메소드, 원본에 변형이 있다.
예제
(Methodtest.java)
public class Methodtest { //call by name //메소드 작성 //public - 아무나 접근 가능 //static - 메모리에 바로 올림 //void - 반환타입 없음 public static void xLine(){ System.out.println("--------------------------"); } //call by value //반환형 int public static int maxNum(int x, int y){ int max=x>y?x:y; //보조제어문 return max; //max의 값을 넘길 수 있게 된다. 딱 1개의 값을 넘길 수 있다. } //call by value //기본 8가지 형을 넘기는 것 (값을 복사함) public static void swapNum(int x, int y){ int temp; temp=x; x=y; y=temp; } //call by reference //넘기는 값이 주소값이므로 실제 데이터를 변형시킨다. public static void refTest(int temp[]){ temp[1]=1004; } public static void main(String[] args) { xLine(); //이름을 불러주면 xLine메소드의 내용을 출력한다. System.out.println("이름: 홍길동"); xLine(); System.out.println("나이: 20살"); xLine(); System.out.println("거주지: 서울"); xLine(); //밑줄을 긋는 행위는 반복이 되므로 메소드를 만들어 편하게 사용할 수 있게끔 한다. int x=10; int y=20; System.out.println("x="+x+"/y="+y); swapNum(x,y); System.out.println("x="+x+"/y="+y); //스왑을 했으나 변화가 없음을 볼 수 있다. //이유는 swapNum 에서 복사한 값을 가지고 있기 때문에 실제 값에 영향을 미치지 않는다. //이렇게 기본 데이터를 복사해서 사용하는 메소드를 "call by value" 라 부른다. int z=maxNum(x,y); //maxNum메소드에서 값을 처리한 다음 변수 z 에 값을 저장시킴 System.out.println("최대값은 "+z); int a[]={10,20,30,40,50}; for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } System.out.println("\n--------------------------"); refTest(a); for(int i=0;i<a.length;i++){ System.out.print(a[i]+" "); } } }
메소드를 이용해 print 구문 간략화하기
(print.java)
import java.io.*; public class print { public static void print(String str){ System.out.println(str); } public static void main(String[] args) throws IOException { print("3346323"); print("1"); print("209230923"); } }
메소드를 이용해서 사칙연산 프로그램 만들기
(last.java)
import java.io.*; public class last { //실제 사칙연산 메소드 부분. public static int call(int x, int y,char c){ int result=0; switch(c){ case '*':result=x*y;break; case '+':result=x+y;break; case '-':result=x-y;break; case '/':result=x/y; } return result; } public static void main(String[] args) throws IOException{ BufferedReader in= new BufferedReader(new InputStreamReader(System.in)); System.out.println("사칙연산 계산 프로그램"); System.out.print("첫 번째 수>"); int x=Integer.parseInt(in.readLine()); System.out.print("두 번째 수>"); int y=Integer.parseInt(in.readLine()); System.out.print("+ - / * 중 연산자 선택>"); char c=(char)in.read(); //연산자 받는 부분을 잘 보도록한다. System.out.println(x+"/"+y+"/"+c); int res=call(x,y,c); System.out.println("사칙연산 결과입니다."); System.out.println(x+""+c+""+y+"="+res); } }
'IT > Java & JSP & FW' 카테고리의 다른 글
java :: OOP-2, 추상화, 은닉화, 다형성 (1) 2011.12.16 java :: OOP-1, Object Oriented Programming(OOP) (0) 2011.12.15 java :: 예제 프로그램, 1차원 배열 기초 (0) 2011.12.13 java :: for문, while문, do while문 예제 프로그램 (2) 2011.12.12 java :: 다중 if 문, switch문, for문 각종 예제 프로그램 (4) 2011.12.09