Java (1)
1-1. Naming Convention
- Class
- method
- variable
-
CONSTANT
- variousKeywordToCamelCase
1-2. Data types
-
종류
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.
-
Reference Type & Primitive Type (참고링크)
-
Primitive Type
- 비객체 타입 : null을 가질 수 없음
- 반드시 사용하기 전에 선언해야함.
-
Reference Type
-
java.lang.Object를 상속받은 자료형
-
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인 레퍼런스타입.
-
-
-
-
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
-
[]
: 배열요소지정int[] arr = new int[5]; System.out.println(arr[2]); // 0
-
++, – : 값 증가, 감소
++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
-
~
,!
:~
는 비트반전,!
는 논리반전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이 된다.
-
(type) : 캐스팅연산자
-
==
,!=
-
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
-
각종 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 }
이런식으로 자료구조의 변수들을 반복적으로 꺼낼 수 있는데, 성능이 좋다고한다.
-
-
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문을 한번에 빠져나온 모습이다.
-
-