220106

조영혜·2022년 1월 6일
0

Java

비정방형배열

각 배열의 길이가 다르기 때문에 생성시 길이 지정할 수 없음.

int [][] arr = new int [4][]; // <-행의 길이만 알고 있는 경우. 

int[][] a = {{1}, [1, 2], [{1, 2, 3}}; 

for(int i=0; i<a.length; i++){
  for (int j=0; j<a[i]; j++){
    ststem.out.print(a[i][j]+"\t");
    }
  system.out.println();
}

=> 1 
   1  2 
   1  2  3
   
// 이차원(비정방형 배열)도 값을 알고 있는 경우에는 배열 생성 후에 바로 레퍼런스 변수 선언해야함. 

메소드

: 어떤 작업을 수해하기 위한 명령문의 집함. 해당 작업이 필요할 때마다 호출해서 사용하면 됨.
(메소드는 이용할 때마다 가져와서 사용 하면 됨. )

  • 매개변수 : 작업을 수행하는 데 필요한 재료.

  • 반환값 : 기능을 수행했을 때 '받은' 결과물.

믹서기에 오렌지(매개변수) 넣고 갈았을 때 마시려면 컵에 따라야 하니까 그냥 결과(갈린 오렌지)만 나오는 경우, 그 결과를 나에게 주는 경우. (반환값)
매개변수와 반환값은 필수는 아니지만(믹서게 아무것도 안 넣어도 돌릴 수는 있으니까.) 필요하다면 꼭 적어줘야함!

public static int addNunber(int num1, int num2){
int result = num1+num2;
return result; 

접근 제한자 : 접근할 수 있는 범위를 지정해줌. ex) public, protected, default, private

  • public : 모든 접근 허용. 임폴트 자바 유틸 패키지 안에서 쓰는 거 -> 퍼블릭. ex. 스캐너, 랜덤 etc.
  • protected : 같은 패키지에 있는 객체와 상속관계(부모-자식관계)에 있는 객체만 허용. 같은 폴더에 있는 객체끼리 공유(접근) 가능.
  • defalut : 같은 패키지에 있는 개체만 허용. (작성하지 않았을 때 기본값-생략가능)
  • private : 현재 객체 내에서만 허용.

메소드의 구조

사용 이유 : 코드를 효율적으로 이용하기 위해.
소스 코드의 가독성이 좋아진다. > 특정 작업이 필요할 떄마다 해당 코드를 작성하면 코드가 굉장히 길어짐>다른 사람이 내 코드를 보기 힘들어짐.
소스 코드의 재사용성이 좋아진다. > 특정코드가 여러번 사용될 경우 해당 코드를 메소드로 정의해두고 필요할 때마다 호출해서 사용할 수 있음.

정적(static) : 정적 멤버(정적변수, 정적 메소드) 선언 시 사용. 클래스에 고정된 멤버, 클래스 로딩이 끝나는 즉시 바로 사용 가능.

  • static area : Static이 붙은 제이터, 전역변수를 저장하는 영역. 프로그램의 시작부터 종료가 될 떄까지 메모리에 남아있음. (어디서든 바로 사용 가능.) 한 영역에 남아있음.
  • heap area : 참조형(Reference Type)의 데이터 타입을 객체(인스턴스), 배열 등을 저장하는 영역. (실제 데이터가 담겨져 있는 부분.) 참조값은 stack영역에 저장.
  • stack area : 기본자료형(Primitive Type)의 데이터에 해당하는 지역변수를 저장하는 영역. 메소드가 호출될 떄 메모리에 할당되며 종료되면 해제. (int, char, boolean)

반환타입 : 메소드 실행 후 반한되는 값의 타입 지정. 반한활 값이 없는 경우에는 void작성.

메소드이름 : 메소드 호출 시 사용할 이름 지정. 기능이 무엇인지 예상할 수 있는 이름으로 작성하는 게 좋음.

매개변수 : 메소드 실행 시 필요한 인자 작성하는 곳, 필요한 개수만큼, 필요한 인자의 타입, 위치를 맞춰서 작성.

반환값 : 메소드 실행 후 반환해줄 값 작성, 반환하지 않을 경우에는 작성하지 않음. 반환할 값 있을 경우, return키워드 작성.

Random rd = new Random(); //도구(=객체, 인스턴스) 생성. new키워드 사용. 
//생성한 도구의 참조값을 알고 있어야만 사용 가능. 참조값 = rd 
//주소를 알려줘야 찾아갈 수 있음. = NON-STATIC 메서드 : 참조값을 알아야 호출 할 수 있는 메서드.
rd.nextInt(); 
		
Math.abs(2); //Math 클래스의 abs메서드 사용. 
//abs: static메서드. new 키워드 없어도됨 => 객체, 인스턴스 생성 X. 바로 사용 가능
//랜드마크. 주소 없어도 찾아 갈 수 있음. 
Scanner s = new Scanner(System.in);
System.out.print("첫번째 수 : ");
int num1= s.nextInt();
System.out.print("두번째 수 : ");
int num2=s.nextInt();
		
getMinusVal(num1, num2);
		
}
//접근제한자, 정적(static), 반환타입메서드이름() { 
private static void getMinusVal(int a, int b) {
System.out.println("합계 : "+(a-b));

static메소드 안에서 non-static메서드 호출 불가능.
non-static메소드 호출 하고 싶으면, 객체(인스턴스) 생성 후 호출 가능.

0개의 댓글