TIL(22.3.31.THU)

항과 연산자

  • 항이란?
    • 연산 시 사용되는 값을 의미
    • 피연산자랑 같은 말인듯
  • 삼항 연산자: 항이 세 개 💡 (3>1)?1:0 - () 조건에 따라 조건이 참이면 1을 답하고, 거짓이면 0을 답해라라는 의미

  • a가 조건에 맞다면 yes를 답하고 틀리면 no를 답해라
    public class MyPrac {
        public static void main(String[] args) {
            int a = 100;
    
            String aResult = (a == 100) ? "yes":"no";
            System.out.println("aResult = " + aResult);
        }
    }

대입 연산자

  • 대입 연산자 ⇒ =
    public class MyPrac {
        public static void main(String[] args) {
            int num = 100;
        }
    }

부호 연산자

  • 부호 연산자 ⇒ +,-
    public class MyPrac {
        public static void main(String[] args) {
            int num = 100;
            num = 10; num = +10; num = -10;
        }
    }
    • +10과 10은 같은것

산술 연산자

  • 더하기 ⇒ +
    public class MyPrac {
        public static void main(String[] args) {
            int numX = 10;
            int numY = 3;
            int result = 0;
            result = numX + numY;
            System.out.println(result);
        }
    }

  • 빼기 ⇒ -
    public class MyPrac {
        public static void main(String[] args) {
            int numX = 10;
            int numY = 3;
            int result = 0;
            result = numX - numY;
            System.out.println(result);
        }
    }

  • 곱하기 ⇒ *
    public class MyPrac {
        public static void main(String[] args) {
            int numX = 10;
            int numY = 3;
            int result = 0;
            result = numX * numY;
            System.out.println(result);
        }
    }

  • 나누기 ⇒ /
    public class MyPrac {
        public static void main(String[] args) {
            int numX = 10;
            int numY = 3;
            int result = 0;
            result = numX / numY;
            System.out.println(result);
        }
    }

  • 나머지연산 ⇒ %
    public class MyPrac {
        public static void main(String[] args) {
            int numX = 10;
            int numY = 3;
            int result = 0;
            result = numX % numY;
            System.out.println(result);
        }
    }

증가/감소 연산자

  • 증가 연산자 ⇒ ++
    • 뒤에 쓸 경우 ⇒ a++
      public class MyPrac {
          public static void main(String[] args) {
              int numZ = 1;
              System.out.println(numZ++);
              System.out.println(numZ);
          }
      }
      • 일단 여기서는 증가시키기전인 원래의 값을 사용하고, 그 다음에 증가시킬게 라는 의미
    • 앞에 쓸 경우 ⇒ ++a
      public class MyPrac {
          public static void main(String[] args) {
              int numZ = 1;
              System.out.println(++numZ);
              System.out.println(numZ);
          }
      }
      • 먼저 증가시킬게 라는 의미
  • 감소 연산자 ⇒ —
    • 뒤에 쓸 경우 ⇒ a—
      public class MyPrac {
          public static void main(String[] args) {
              int numZ = 1;
              System.out.println(numZ--);
              System.out.println(numZ);
          }
      }
      • 일단 여기서는 감소시키기전인 원래의 값을 사용하고, 그 다음에 감소시킬게 라는 의미
    • 앞에 쓸 경우 ⇒ —a
      public class MyPrac {
          public static void main(String[] args) {
              int numZ = 1;
              System.out.println(--numZ);
              System.out.println(numZ);
          }
      }
      • 먼저 감소시킬게 라는 의미

관계 연산자

  • 반환값이 boolean자료형 데이터값인 true or false.

  • 관계 연산자(비교 연산자?)
    public class MyPrac {
        public static void main(String[] args) {
            int numA = 10;
            int numB = 8;
    
            System.out.println(numA > numB);
            System.out.println(numA < numB);
            System.out.println(numA == numB);
            System.out.println(numA != numB);
        }
    }

논리 연산자

  • &&
    • 조건이 모두 참이면 결과값으로 true 반환
    • 하나라도 거짓이면 결과값으로 false 반환
  • ||
    • 조건이 하나라도 참이라면 결과값으로 true 반환
    • 조건이 모두 거짓이면 결과값으로 false 반환
  • !
    • true인 조건 앞에 붙이면 결과값으로 false반환
    • false인 조건 앞에 붙이면 결과값으로 true 반환

  • 논리 연산자
    public class MyPrac {
        public static void main(String[] args) {
            int numA = 10;
            int numB = 8;
    
            System.out.println((10 > 9) && (1 == 0));
            System.out.println((10 > 9) || (1 == 0));
        }
    }
    • &&는 어느 하나라도 거짓이라면 false반환
    • ||는 어느 하나라도 참이라면 true반환

복합 대입 연산자

  • 대입 연산자와 다른 연산자를 조합
  • 대표적 코드
    • +=, %=

  • +=일 경우
    public class MyPrac {
        public static void main(String[] args) {
            int num1 = 10;
            int num2 = 5;
    
            num1 += num2;    // num1 = num1 + num2
            System.out.println("num1 = " + num1);
        }
    

  • %=일 경우
    public class MyPrac {
        public static void main(String[] args) {
            int num1 = 10;
            int num2 = 5;
    
            num1 %= num2;    // num1 = num1 % num2  
            System.out.println("num1 = " + num1);
        }
    }

  • -= 일 경우
    public class MyPrac {
        public static void main(String[] args) {
            int num1 = 10;
            int num2 = 5;
    
            num1 -= num2;    // num1 = num1 - num2
            System.out.println("num1 = " + num1);
        }
    }

  • *= 일 경우
    public class MyPrac {
        public static void main(String[] args) {
            int num1 = 10;
            int num2 = 5;
    
            num1 *= num2;
            System.out.println("num1 = " + num1);
        }
    }

  • /= 일 경우
    public class MyPrac {
        public static void main(String[] args) {
            int num1 = 10;
            int num2 = 5;
    
            num1 /= num2;
            System.out.println("num1 = " + num1);
        }
    }

2진법, 2의 보수

  • 2의 보수(보수)
    • 자리올림수가 발생하기 위해 필요한 최소의 숫자
      • 2의 제곱수에서 빼서 얻은 이진수
        • 10진수 3의 보수⇒10의 보수
          • 10진수3이 10진수10이 되기위해 10진수7이 필요하므로 7이 10진수 3의 보수임.
      • 2진수
        • 2진수 3의 보수⇒2의 보수
          • 2진수3(11)이 (100)이되기 위해 최소 01즉 2진수1(01)이 필요하다. 따라서 2진수 3의 2의 보수는 2진수1이다.
        • 음수를 의미할수 있음
          • 10진수에서 +3의 음수는 -3이고 이둘을 합치면 0이 된다.
          • 2진수 5(101)이 합해서 000이 되려면 011이 필요. 자리올림수 발생하여 1000이 되나 비트구간을 1제외하고 000으로 설정한다 가정하면 즉 011가 2진수5의 보수이면서, 2진수5의 음수 표현이 되는거니까, 2의보수를 음수라고도 이야기함.
        • 2의 보수는 음수다
        • 2의 보수 빠르게 구하는 법
          • 예시 101
            • 일단 반전 시킨다. 010
            • 다시 1을 더해준다. 011
            • 011이 101의 2의보수

비트 논리 연산자

  • 두 개의 비트 값이 모두 1인 경우에만 결과1

  • 기본출력 print에서 줄넘김 ln을 enter키를 추가해서 출력하라는 의미였음.
  • AND연산자 ⇒ &이용
    public class MyPrac {
        public static void main(String[] args) {
            int num1 = 5;
            int num2 = 3;
            int result = 0;
    
            result = num1 & num2;
            System.out.println("result = " + result);
        }
    }
    • 숫자를 2진수로 변환해서 표현하기
      • System.out.println(Integer.toBinaryString(변환시키려는 숫자));
        public class MyPrac {
            public static void main(String[] args) {
                int num1 = 5;
        
                System.out.println(Integer.toBinaryString(num1));
            }
        }

    • 2진수를 4개의 자릿수로 고정하고 서식문자 정수이용하여 정수형으로 출력하기
      • System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(2진수로 바꿀 숫자)));
        • printf는 "%04d\n"와 같이 우리가 포맷을 만들어서 만든 포멧에 맞게 데이터값을 넣어서 출력하게 해주는 출력문
          - %04는 4개의 자릿수를 출력할건데 4개자리에 못 미치면 앞에 0을 채워서 4자리 맞춰주라는 의미
          - d는 서식문자. %와 묶여서 사용됨. 정수형 데이터를 받을 수 있는 서식문자.
          - 자료형 타입에 맞게 서식문자도 다 다르게 존재.

          public class MyPrac {
              public static void main(String[] args) {
                  int num1 = 5;
                  int num2 = 3;
                  int result = 0;
          
                  result = num1 & num2;
                  System.out.println("result = " + result);
                  System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num1)));
                  System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num2)));
                  System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));
          
              }
          }

        • &은 비트의 값이 둘다 1인 경우에만 결과가 1로 나옴

  • 비트 값 중 하나라도 1이면 결과 1

  • OR연산자 ⇒ | 이용
    public class MyPrac {
        public static void main(String[] args) {
            int num1 = 5;
            int num2 = 3;
            int result = 0;
    
            result = num1 | num2;
            System.out.println("result = " + result);
    
        }
    }
    • 2진수를 4개의 자릿수로 고정하고 서식문자 정수이용하여 정수형으로 출력하기
      public class MyPrac {
          public static void main(String[] args) {
              int num1 = 5;
              int num2 = 3;
              int result = 0;
      
              result = num1 | num2;
              System.out.println("result = " + result);
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num1)));
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num2)));
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));
          }
      }
      • |은 비트의 값이 어느 하나라도 1인 경우에만 결과가 1로 나옴
  • 두 개의 비트 값이 같으면 0, 다르면 1

  • XOR 연산자 ⇒ ^이용
    public class MyPrac {
        public static void main(String[] args) {
            int num1 = 5;
            int num2 = 3;
            int result = 0;
    
            result = num1 ^ num2;
            System.out.println("result = " + result);
        }
    }
    • 2진수를 4개의 자릿수로 고정하고 서식문자 정수이용하여 정수형으로 출력하기
      public class MyPrac {
          public static void main(String[] args) {
              int num1 = 5;
              int num2 = 3;
              int result = 0;
      
              result = num1 ^ num2;
              System.out.println("result = " + result);
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num1)));
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num2)));
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));
          }
      }
      • ^은 비트의 값이 같으면 0, 다르면 1의 결과가 나옴
  • 비트를 반전 시킴
  • ~5가 어떻게 -6이 나오는지 모르겠음 아무리 봐도 -2인데?
    • bit1을 부호비트라 한다면 1을 놔두고, 나중에 계산결과에 적용해준다.
      • 일단 반전시킨다. 1010 → 0101
      • 1을 더한다 0101 + 1 → 0110 → 6
      • 부호비트 bit1이 1이였으므로 -를 붙여서 결과값은 -6

  • 반전 연산자 ⇒ ~이용
    public class MyPrac {
        public static void main(String[] args) {
            int num1 = 5;
            int result = 0;
    
            result = ~num1;
            System.out.println("result = " + result);
        }
    }
    • 2진수를 4개의 자릿수로 고정하고 서식문자 정수이용하여 정수형으로 출력하기
      public class MyPrac {
          public static void main(String[] args) {
              int num1 = 5;
              int result = 0;
      
              result = ~num1;
              System.out.println("result = " + result);
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(num1)));
          }
      }

    • 2진수를 서식문자 문자열이용하여 문자열형으로 출력하기
      public class MyPrac {
          public static void main(String[] args) {
              int num1 = 5;
              int result = 0;
      
              result = ~num1;
              System.out.println("result = " + result);
              System.out.printf("%s\n", Integer.toBinaryString(result));
          }
      }
      • 0101이 반전되어 1010이 됨.
      • 바이트 체계가 32개라서 원래 다 0으로 되어있던 것이 반전이 되어 전부 1로 바뀐것을 확인할 수 있다.

비트 이동 연산자

  • 부호비트에 값이 그대로 부호비트에 들어간다
    • 3의 나머지 비트를 왼쪽으로 1칸 이동
  • 2배만큼 증가시키는 결과

  • (<<)연산자 이용

    • 2진수를 4개의 자릿수로 고정하고 서식문자 정수이용하여 정수형으로 출력하기
      public class MyPrac {
          public static void main(String[] args) {
              int numA = 3;
              int result = 0;
              
              result = numA << 1;
              
              System.out.println("numA = " + numA);
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(numA)));
              System.out.println("result = " + result);
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));
          }
      }
  • 부호비트에 값이 그대로 부호비트에 들어간다

    • 3의 나머지 비트를 오른쪽1칸 이동
  • 2로 나누는 효과를 가짐. 소수점은 버리게 됨.


  • (>>)연산자 이용

    • 2진수를 4개의 자릿수로 고정하고 서식문자 정수이용하여 정수형으로 출력하기
      public class MyPrac {
          public static void main(String[] args) {
              int numA = 3;
              int result = 0;
      
              result = numA >> 1;
      
              System.out.println("numA = " + numA);
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(numA)));
              System.out.println("result = " + result);
              System.out.printf("%04d\n", Integer.parseInt(Integer.toBinaryString(result)));
          }
      }
  • 부호비트에 무조건 0으로 채우고

    • 3의 나머지 비트를 오른쪽 1칸 이동

  • (>>>)연산자 이용
    • (>>)연산자 (>>>)연산자 비교
      public class MyPrac {
          public static void main(String[] args) {
              int numA = -5;
              int result = 0;
              result = numA >> 1;
      
              System.out.printf("%s\n", Integer.toBinaryString(numA));
              System.out.printf("%s\n", Integer.toBinaryString(result));
      
              result = numA >>> 1;
              System.out.printf("%s\n", Integer.toBinaryString(numA));
              System.out.printf("%s\n", Integer.toBinaryString(result));
          }
      }
      • 마지막 출력값에서 맨앞 부호비트의 0이 생략되어 있다.
        • 부호비트에 0고정은 맨 앞의 부호비트만 해당하는것 같다

조건문

if문

  • 조건에 따라 무엇을 실행할지 판단하는 분기 구조
  • 조건에 맞는다면 해당 조건에 관련된 실행문이 실행되고 종료됨. 즉, 다른 조건은 신경 안씀.

  • if문
    public class MyPrac {
        public static void main(String[] args) {
            int waterTemperature = 99;  // 99로 초기화
    
            if (waterTemperature >= 100) {
                System.out.println("물이 끓습니다.");
            } else {
                System.out.println("물을 끓이는 중입니다.");
            }
        }
    }

    public class MyPrac {
        public static void main(String[] args) {
            int waterTemperature = 100;  // 100으로 초기화
    
            if (waterTemperature >= 100) {
                System.out.println("물이 끓습니다.");
            } else {
                System.out.println("물을 끓이는 중입니다.");
            }
        }
    }

    public class MyPrac {
        public static void main(String[] args) {
            int score = 90;    // 90으로 초기화 
            char grade =0;
    
            if (score >= 90) {
                grade = 'A';
            } else if (score >= 80) {
                grade = 'B';
            } else if (score >= 70) {
                grade = 'C';
            } else {
                grade = 'F';
            }
            System.out.println("grade = " + grade);
        }
    }

    public class MyPrac {
        public static void main(String[] args) {
            int score = 60;    // 60으로 초기화 
            char grade =0;
    
            if (score >= 90) {
                grade = 'A';
            } else if (score >= 80) {
                grade = 'B';
            } else if (score >= 70) {
                grade = 'C';
            } else {
                grade = 'F';
            }
            System.out.println("grade = " + grade);
        }
    }

switch문

  • 입력값에 따라 어떤 case를 실행할지 판단하는 분기 구조
  • break를 써야 case가 종료됨. 쓰지 않는다면 그 다음 case로 이동되어 실행됨.
  • default는 if의 else와 같은 맥락.

  • switch문
    public class MyPrac {
        public static void main(String[] args) {
            String fruit = "apple";    // apple로 초기화
    
            switch (fruit) {
                case "apple":
                    System.out.println(fruit + "은 5000원 입니다.");
                    break;
                case "pineapple":
                    System.out.println(fruit + "은 7000원 입니다");
                    break;
                default:
                    System.out.println("해당 과일이 없습니다.");
                    break;
            }
        }
    }

    public class MyPrac {
        public static void main(String[] args) {
            String fruit = "peach";    // peach로 초기화
    
            switch (fruit) {
                case "apple":
                    System.out.println(fruit + "은 5000원 입니다.");
                    break;
                case "pineapple":
                    System.out.println(fruit + "은 7000원 입니다");
                    break;
                default:
                    System.out.println("해당 과일이 없습니다.");
                    break;
            }
        }
    }

반복문

for문

  • 주어진 횟수만큼 반복하여 실행하는 구조
  • 초기값부터 조건문에 해당하는 어떤 횟수 이하까지 증가치는 1이 증가할수도 2가 증가할수도 그러한 특정값만큼 증가를 하면서 조건문에 이제 만족할때 까지 반복할 내용을 반복하면서 실행을 하게 됨.

  • 기본방법 사용 ⇒ for문
    public class MyPrac {
        public static void main(String[] args) {
            for (int i =0; i < 5; i++) {
                System.out.println(i);
            }
        }
    }
    • 순서가 이런식인듯
      • 먼저 초기치 → 조건문 → 조건에 부합 → 반복하여 실행할 내용 실행 → 증가치적용 → 초기치에 대입 → 조건에 부합 → 반복하여 실행할 내용 실행 → 증가치 적용 → 초기치에 대입 → 조건문에 부합하지 않음 → 실행 종료
  • 별 갯수 하나씩 증가하며 나타내기(반복문 중복하여 사용)
    public class MyPrac {
        public static void main(String[] args) {
            for (int i =0; i < 5; i++) {
                for (int j = 0; j < i + 1; j++) {
                    System.out.print("*");
                }
                System.out.println();
            }
        }
    }
    • continue와 break섞어서 사용
      • continue는 반복문이 continue를 만나면 아래 실행 코드는 건너뛰고 그다음 조건을 실행시킨다.
        public class MyPrac {
            public static void main(String[] args) {
                for (int i =0; i < 5; i++) {
                    if (i == 2) {
                        continue;
                    }
                    for (int j = 0; j < i + 1; j++) {
                        System.out.print("*");
                    }
                    System.out.println();
                }
            }
        }
        • i = 2일 때 continue를 만나면 j의 반복문을 실행하지 않고, i = 3일 경우로 넘어감.
      • break는 반복문이 break를 만나면 반복문이 바로 탈출함.즉, 더이상 실행되지 않음.
        public class MyPrac {
            public static void main(String[] args) {
                for (int i =0; i < 5; i++) {
                    if (i == 2) {
                        break;
                    }
                    for (int j = 0; j < i + 1; j++) {
                        System.out.print("*");
                    }
                    System.out.println();
                }
            }
        }
        • i = 2일 때 break를 만나면 j의 반복문이 실행하지 않을 뿐더러 심지어 i의 다음 조건에 대한 반복문도 실행되지 않고, 코드를 종료시킨다.
  • for each문
    • 기존 방법
      public class MyPrac {
          public static void main(String[] args) {
              int[] nums = {1,2,3,4,5};
              for (int i = 0; i < 5; i++) {
                  System.out.println(nums[i]);
              }
          }
      }
      
      • i < 5 대신 i < nums.length으로 해도 무방
    • for(반복하고자 하는 대상의자료형 자작한 변수명 : 반복하고자 하는 대상명) {}
      public class MyPrac {
          public static void main(String[] args) {
              int[] nums = {1,2,3,4,5};
              for(int num : nums) {
                  System.out.println(num);
              }
          }
      }
      • for (int 자작변수명 : 배열명)
        • 배열안에 있는 원소들을 모두 순회하면서 다 출력함.
          • 굉장히 편리함.
      • 증감문의 형태가 특이할 경우 예를 들어 i++처럼 1씩 증가가 아닌 2씩 증가한다던지 3씩 증가한다던지 증감문에 변형이 있을 경우
        • 기존방법 사용 ⇒ for (초기치; 조건문; 증가치) {}
      • 모든 원소를 순회할 경우
        • for each문 사용 ⇒ for(반복하고자 하는 대상의자료형 자작한 변수명 : 반복하고자 하는 대상명) {}

while문

  • while문
    • 조건문이 만족하는 동안 반복하여 실행
  • while과 do-while의 차이
    • 조건을 따지냐 안 따지냐
    • while문
      • 일단 조건문먼저 검사하고나서 실행
      • 즉 조건에 따라 실행할수 있고 안 할수 있다.
    • do-while문
      • 일단 실행먼저 하고, while 조건문 검사함.
      • 즉, 무조건 실행하고 나중에 조건문 검사함.

  • 기존방법 사용 ⇒ while문
    public class MyPrac {
        public static void main(String[] args) {
            int i = 0;
            while (i < 5) {
                System.out.println(i);
            }
        }
    }
    • i 즉, 초기치를 바깥부분에 선언해준다.
    • while문에 조건을 명시하고, 반복할 내용을 적는다.
    • 주의
      • 위와 같이 코드를 실행하면 무한 루프에 빠진다.
        • i가 계속0인 상태에서 조건문에서 탈출하지 못하고 계속 출력되는것
    • 해결법
      • while문의 반복하여 실행할 내용부분에 증감문을 작성한다.
        public class MyPrac {
            public static void main(String[] args) {
                int i = 0;
                while (i < 5) {
                    System.out.println(i);
                    i++;
                }
            }
        }
        or
        public class MyPrac {
            public static void main(String[] args) {
                int i = 0;
                while (i < 5) {
                    System.out.println(i++);
                }
            }
        }

    • continue사용
      public class MyPrac {
          public static void main(String[] args) {
              int i = 0;
              while (i < 5) {
                  if (i == 2) {
                      i++;
                      continue;
                  }
                  System.out.println(i++);
              }
          }
      }

    • break사용
      public class MyPrac {
          public static void main(String[] args) {
              int i = 0;
              while (i < 5) {
                  if (i == 2) {
                      i++;
                      break;
                  }
                  System.out.println(i++);
              }
          }
      }

  • do-while문
    public class MyPrac {
        public static void main(String[] args) {
            boolean knock = false;
            do {
                System.out.println("knock");
            } while (knock);
        }
    }
    • 일단 false이지만 do-while로 시작했으니까 무조건 한 번 실행하고 그 다음 조건문에 걸려서 탈출(코드실행 종료)하게 됨.

다차원 배열

  • 삼차원까지는 종종 사용한다. 점점 복잡해지니 4차원이상은 잘 가지 않는다.
    • 그중에서도 이차원을 많이 사용한다.

  • 일차원 배열
    • 기본방법 ⇒ for문 사용하기
      public class MyPrac {
          public static void main(String[] args) {
              int[] myArray = {1, 2, 3};
              System.out.println("myArray[1] = " + myArray[1]);
             
              for (int i = 0; i < myArray.length; i++) {
                  System.out.println(myArray[i]);
              }
          }
      }

    • for each 사용하기
      public class MyPrac {
          public static void main(String[] args) {
              int[] myArray = {1, 2, 3};    // 데이터 초기화
              
              for (int i : myArray) {
                  System.out.println(i);
              }
          }
      }

이차원 배열

  • 데이터를 초기화하는 방법
    • 중괄호안에 데이터를 초기화

  • 데이터를 초기화하지않고, 사이즈로 바로 생성할 때
  • 이차원 배열 구조

  • 이차원 배열
    • 기본방법 ⇒ for문 사용하기
      • 첫 번째 반복문은 행을 돌리고, 두 번째 반복문에서 열을 돌린다.
        public class MyPrac {
            public static void main(String[] args) {
                int[][] myArray2 = {{1, 2, 3}, {4, 5, 6}};    // 데이터 초기화
                System.out.println("myArray2[1][2] = " + myArray2[1][2]);
        
                for (int i = 0; i < myArray2.length; i++) {
                    for (int j = 0; j < myArray2[i].length; j++) {
                        System.out.println(myArray2[i][j]);
                    }
                }
            }
        }
        • myArray2[1][2]
          • 1번째 행의 2번째 열을 의미

        • myArray2.length 는 바깥 중괄호를 가리켜 행을 의미함
          • 2를 반환할듯
        • myArray2[i].length 는 안쪽 중괄호를 가리켜 열을 의미함.
          • 3을 반환할 듯
    • for each문 사용하기
      • 이차원 배열에서 하나를 따오면 일차원 배열이기에 그 일차원 배열을 일차원 배열타입인 ints라는 변수에 할당한다.
        public class MyPrac {
            public static void main(String[] args) {
                int[][] myArray2 = {{1, 2, 3}, {4, 5, 6}};
                System.out.println("myArray2[1][2] = " + myArray2[1][2]);
        
                for (int[] ints : myArray2) {
                    for (int anInt : ints) {
                        System.out.println("anInt = " + anInt);
                    }
                }
            }
        }
        • myArray2가 이차원배열이라서 이차원배열을 하나 따서 갖고 오면 일차원 배열이기에 자료형을 int의 배열자료형으로 만들어준것임.
          • 한 번더 for each문을 통해서 작성해줌

좋은 웹페이지 즐겨찾기