hwangpro 2021. 2. 2. 01:30
1.29 금 수업 복습

 *     제어문
 *      if문
 *      switch문
 *   반복문 (무한루프 신경써야됨)
 *      for문
 *      while문
 *      do ~ while문
 *      for each문 


2.1.월

배열: array 
        동일한 데이터타입을 메모리상에 순차적으로 확보.

         장점: 일괄처리.
           단점: 메모리 추가, 삭제 힘들다.
               처음부터 여유있게 잡아서 쓰자. 나중에 모자란 것보다 남는게 남.

            int a,b,c;

      선언
      
        DataType [ ](첨자) 레퍼런스이름; // int []arr; 

        arr = new int [ 3 ];

배열을 쓸 때는 레퍼런스 변수가 필요하고, 레퍼런스 변수를 실제로 잡아야 한다.
= new 처럼


용어 avg=average

--------------------------------------------------------------------------------------------

반복문을 이용해서 배열을 하는 이유 : 일괄처리가 가능하기 때문에
oveflow 오류 발생하면 *(실제 접근하고 있는 레퍼런스).length*를 써라

[ 형변환(Casting) ]
1.자동형변환 *알아서 해주는 것! ( 서로 다른 타입을 연산할 때 발생. ) 
  : 작은 타입이 큰 타입으로 바뀌어서 연산.

  3 + 4
  3 + 4.1(double로 인식) -> ( int(3) + double(4.1) ) => 3.0 + 4.1 = 7.1 ( 모두 타입이 double )

2.강제형변환 * ( 같은 타입을 연산할 때 개발자가 필요에 의해 처리 )

                        int a = 3;
                        int b = 4;
  3/4                 (double)a/(double)b;  -> 바꾸고 싶은 타입을 써서 명시.(앞에선 float, double 중에 선택)  연산할 때만! 잠시 바뀌는 것. 데이터가 바뀌는 건 아니다.
  

1차원배열  [ 요소의 개수 ]
2차원배열  [ 행의 개수 ] [ 열의 개수 ] 
             
             int [][] arr2;
             arr2 = new int[2][2];

3차원배열.. [ 면의 개수 ] [ 행의 개수 ] [ 열의 개수 ]


      (예제)  int[][][]arr3 = new int[2][3][2];
      
[ for each문 ] 
for(int data:arr) { // data를 찍은 이유 : 하나씩 하나씩 꺼내오기 때문에
			System.out.println(data); }


문자열 String Class는 데이터를 바꿀 수 없다. 객체를 바꾸는 것.

equals 알아두기.

	String []str = new String[3]; -> 객체를 3개 만든 게 아니라 레퍼런스를 3개 만든 것.

[] 첨자
              
              **중요 문법**

	1. String []str = new String[3]; (**객체) -> new String에 소괄호가 없다. 객체 새로 안 만든 것. 소괄호 유무로 확인!
                 내가 객체를 배열로 만들고 싶다면 내가 쓰고 싶은 만큼의 레퍼런스가 필요하다. 
                 레퍼런스 배열을 먼저 만들어놓고 객체한테 주렁주렁 열매 맺듯이 일괄처리를 하는 것.

 	2. str[0] = new String("Superman"); -> 이렇게 소괄호가 ( ) 있어야 객체가 새로 만들어진 것.

실행하고 있는 중에 쓰는 메모리 = 동적메모리

              name = new String[num];
	score = new int[num][4];
	avg = new float[num];


method : 자기자신의 특정기능을 수행.

사용자정의 method

1. instance method
2. static method


모듈화 (기능대로 나누겠다.)
1. call by name - 호출 값. ( 주고 받는 게 없음. 각자 자기 역할이 확실함. 문제가 생겼을 때 확실함. 대신 기능적으로 확장성이 떨어진다. 그래서 다른 거랑 같이 씀. )
2. call by value - 값을 주고 받으면서 무언가를 준다. / * 직접 접근할 수 없다.
3. call by reference - 값의 위치를 알려줌으로서 무언가를 준다. / * 직접 접근할 수 있다.

 

 

 

2차원배열 행열구분
arr

 

arr3[0] = new int[3];

 

예제int[][][]arr3 = new int[2][3][2];