My Profile Photo

DongChanS's blog


수학과 학생의 개발일지


Java (1) - Data type, operation, control flow

Java (1)

1-1. Naming Convention

  • Class
  • method
  • variable
  • CONSTANT

  • variousKeywordToCamelCase

1-2. Data types

  1. 종류

    Java Data Type 
    ㄴ Primitive Type
        ㄴ Boolean Type(boolean)
        ㄴ Numeric Type
            ㄴ Integral Type
                ㄴ Integer Type(short, int, long)
                ㄴ Floating Point Type(float, double)
            ㄴ Character Type(char)
            ㄴ BigInteger
    ㄴ Reference Type
        ㄴ Class Type
        	ㄴ String
        	ㄴ etc.
        ㄴ Interface Type
        ㄴ Array Type
        ㄴ Enum Type
        ㄴ etc.
    
  2. Reference Type & Primitive Type (참고링크)

    • Primitive Type

      • 비객체 타입 : null을 가질 수 없음
      • 반드시 사용하기 전에 선언해야함.
    • Reference Type

      • java.lang.Object를 상속받은 자료형

        1. Class

          객체를 참조하는 형태

          Myobject a = new MyObject(2);
          Myobject b = new MyObject(4);
          a = b;
          b.setIndex(6);
          System.out.println(a.getIndex()); // 6
          

          실제로 a와 b라는 변수가 가지는 것은 실제 객체가 아닌 객체의 주소를 가지고 있음.

          • String : 얘는 Immutable인 레퍼런스타입.
  3. Type Casting

    • Auto casting : 작은 크기의 타입 -> 큰 크기의 타입

      long var = 100;
      float fvar = var;
      System.out.println(fvar) // 100.0
      
    • Explict casting

      float fvar = 100;
      long var = fvar; // Error! incompatible types: possible lossy conversion from float to long
      long var = (long)fvar; // 이렇게 해야함.
      

1-3. Operators

  1. [] : 배열요소지정

    int[] arr = new int[5];
    System.out.println(arr[2]); // 0
    
  2. ++, – : 값 증가, 감소

    ++a increments and then uses the variable. a++ uses and then increments the variable.

    int var = 5;
    System.out.println(++var); // 6
    System.out.println(var++); // 6
    
  3. ~, ! : ~는 비트반전, !는 논리반전

    int var = 5; // 101
    System.out.println(~var); // -6
    System.out.println(!var); // Error! bad operand type int for unary operator '!'
    
    a = 5 = 0101 (In Binary)
       
    Bitwise Compliment Operation of 5
       
    ~ 0101
     ________
      1010  = 10 (In decimal) 
    

    그런데, 1010을 2의 보수로 반환해서 주기 때문에 결국 -6이 된다.

  4. (type) : 캐스팅연산자

  5. ==, !=

    • Primitive type : 값을 비교

    • Reference Type : 참조하고 있는 주소를 비교

      String a = "aaa";
      String b = a;
      String c = new String ("aaa");
           
      System.out.println(a.equals(b)); // true
      System.out.println(a==b); // true
      System.out.println(a==c); // false
      System.out.println(a.equals(c)); // true
      

      그래서 다른 주소를 가지고 있지만, 값은 같은 두개의 string을 비교하기 위해서 ==를 쓰면 안된다!

1-4. Conditional flow

  1. 각종 Flow들

    • if

      int i = 10;
      if (i % 2 == 1){
          // 자바에서는 i % 2만 냅두면 안됨.
          // int형으로 True, false를 구분해주기 않기 때문.
          int temp = 15;
          System.out.println("홀수"); 
      }
      System.out.println(temp); // cannot find symbol
                            // symbol:   variable temp
                            // location: class Tutorial.Conditional
      

      이런식으로 쓰면 됨. 다만, if문도 block을 이루기 때문에 블락 안에서 선언한 temp변수는 밖에서 사용할 수 없음.

    • switch

      int score = 90;
      switch (score) {
          case 100:
          case 90:
              System.out.println("A");
              break;
          default:
              System.out.println("satisfactory!")
      }
      

      주의할 점은 비교대상(score)은 반드시 정수형이어야 한다는 점

    • 3항연산자

      boolean flag = true;
      int what = flag ? 1 : -1; // 1
      
    • For

      int[] arr = new int[5];
      for (int num:arr) {
          System.out.println(num); // 0
      }
      

      이런식으로 자료구조의 변수들을 반복적으로 꺼낼 수 있는데, 성능이 좋다고한다.

  2. Keyword

    • break

    • continue

    • label

      • 다중 루프를 처리하고 있을 경우 지정된 label의 루프를 벗어남..!!!

        outer:
        for (int i=0; i<5; i++){
            for(int j=0; j<5; j++){
                for(int k=0; k<5; k++){
                    System.out.println(i + "," + j + "," + k);
                    if (k==3) break outer;
                }
            }
        }
        
        0,0,0
        0,0,1
        0,0,2
        0,0,3
        

        outer이라고 지정한 바깥 for문을 한번에 빠져나온 모습이다.

comments powered by Disqus