Java 시작

(21-11-29) [다차원배열 / 클래스 / 메소드 / 생성자 / 스캐너]

yooky 2021. 11. 29. 23:55

다차원배열

 

타입[ ] 변수명 = new 타입[크기]  → 1차원배열

타입[ ][ ] 변수명 = new 타입[크기][크기]  → 2차원배열

 

 

ex) int[ ] [ ] arr = { { 1, 3, 5 }, { 2, 4, 6 } }

   

   System.out.println(arr.length);

        → arr은 크게 2가지 방으로 구성되있으므로 출력값은 2

              0번지 {1,3,5} 1번지 {2,4,6}

 

     

  System.out.println(arr[0].length);

        → arr 0번지의 해당하는 길이는 3.

 

 

 

for(int i = 0; i < arr.length;i++) {
			for(int j = 0; j < arr[i].length; j++) {
				System.out.print(arr[i][j] + " ");
			}
				System.out.println();
		}

2차원 배열을 통해 위와 같은 것도 구현할 수 있다. for문을 두번 사용할 필요없이 3개의 열과 2개의 행을 구현 할 수 있다.

 

클래스 : 형태를 이루고 있음. 클래스에는 클래스, 변수, 메소드, 생성자만 올 수 있다.

우리가 아직 배운 접근권한은 public밖에 없다.

           public : 어디서나 사용가능하다. 오픈되어있는 접근권한

             

형태:    접근권한 class 클래스명{      

                                  

}                                   

파일명은 접근권한으로 선언된 클래스명과 동일해야됨.

 

 

클래스를 사용하려면 객체생성이 필요하다.

클래스명 변수명 = new 생성자;

자바에서 객체생성시점은 new가 왔을때다

객체생성은 실체화라고 생각하면 된다. 실제 동작하는 것을 만든 거를 객체생성!

 

생성자 : 객체 생성시 1회만 호출

생성자는 보편적으로 초기값 지정 시 사용

 

메소드(method) : 기능 (동작을 정의)

 

접근권한  반환타입  메소드명(인자타입,인자명, ~)  {

                   ↳ 메소드 실행 후 해당위치에 돌려줄 값의 형태

  내용

 * 단, 반환타입이 void가 아니면

  return값;

 

※ null과 void

null : 공간은 있지만 값이 없음

void : 공간도 없음, 정보가 없음 → 리턴값이 없다 선언부에 void 명시

결과 타입에 따라 선언부에 명시되는 반환타입이 다르다

 

void은 null 엄연히 다름

public class Test10s {
	public String  s = "Hello";
	/* 
	 *  기본생성자는 기본적으로 생략이 가능하다.
	 * 	다만 추가생성자가 존재하고 기본생성자를 사용하려면
	 *반드시 기본생성자를 선언하여야 사용이 가능하다
	*/
	public Test10s() {
		System.out.println("기본생성자 호출");
	}
	public Test10s(String str) { // str에 hi~가 있음
		System.out.println("추가생성자 호출 : "  +str);
	
	}

 

 

public class Test10 {

	public static void main(String[] args) {
			Test10s ts = new Test10s("hi");
			
			System.out.println(ts);
			System.out.println(ts.s);
	}

}

먼저 Test10s 객체를  생성해주고 여기에 

ts에 문자열이 저장되있기때문에 출력문은 " 추가생성자 호출 : " hi가 나오고 함께 저장된 주소가 나온다 // 맞나 ?

그리고 ts의 s에 저장된 hello와 함께 출력된다? 

// 내일 질문하기 ..

 

 

ifecycle(생존범위) : 생성 시점부터 부모형태의 종료시점까지 생존

 

public class 클래스명{

	int a=10;

	public void 메소드1( ){

		int a=3; 

	System.out.println(this.a) 

}

	public void 메소드2( ){

for(int i=0; ~ ){ // i는 for문 끝나면 죽음

           }

      }

}

 

전역변수 : 전체영역 (클래스안)

지역변수: 특정영역 (메소드안)

 

전역변수와 지역변수는 생존 가능한 범위에서

동일한 명칭 사용 가능 단, 각 영역별 1개씩만 존재 가능

 

this : 해당 클래스

해당 클래스안에 있는 동일한 명칭을 가진 변수 사용시 this 사용

전역변수와 지역변수가 동일명칭일경우 사용 시 가장 가까운 것(지역변수)을 사용한다.

 

Scanner(스캐너)

import java.Scanner;
	public class Test11{
      public static void main(String[] args) {
              Scanner sc = new Scanner(System.in);
              
              String s= sc.nextLine(); 
              System.out.println("입력값 " + s);
              // nextLine() : 한줄을 입력받는다. 입력이 완료될 때까지 대기상태.
              //              엔터로 구분  
       
       		  //nextInt() : 입력된 숫자를 정수로 받는다. 띄어쓰기로 구분
              sc.nextLine();
              System.out.println("입력값 " + a);
              
              
              // next() : 입력된 문자열 단어를 받는다. 띄어쓰기로 구분
              //String s2=sc.next();
              String s2=sc.next();
              System.out.println("입력값 " + s2);
          }
}