byte a = 10;
byte b = 20;
byte c = a+b;
System.out.print(c);
이렇게 하면 컴파일 에러 발생 byte는 int 보다 작으므로 int로 변환되어 int 로 되는데
c 에 int를 담을 수 없어 타입 명시를 해줘야함 byte c = (byte) (a+b);
long c = 1000000 * 200000;
오버 플로우 발생함. 이러한 경우 하나의 값에 (long)으로 타입 변환 해줘야함.
그럼 long int 만 되어도 long long 으로 변하게됨.
char c1 ='a';
char c2 = c1+1;
char c2 = 'a'+1;
char + int 는 int + int 로 변하게됨. 그래서 c2 에서 컴파일 에러 발생
'a' +1 는 에러가 발생하지 않음. 왜냐 컴파일러 최적화 때문에 에러가 발생하지 않음.
문자간의 뺼셈은 숫자로 변환되어 뺄셈이 진행됨.
'd' - 'a' = 3
같은 값일경우 float 와 double을 비교하면 false가 나옴.
이유는 float 가 double로 바뀌는데 바뀌면 값이 다름.
그래서 true 가 나오게 하려면 직접 double을 float로 바꾸면 true 가 나옴.
equals는 두 문자열이 아예 같은 경우 true
equalsIgnoreCase는 대소문자 비교를 하지않고 두 문자열을 비교 후 true
|(OR 연산자) : 둘중에 하나가 1이면 1, 아니면 0
&(AND 연산자) : 둘다 1이면 1 아니면 0
^(XOR 연산자) : 두개가 다르면 1 아니면 0
~을 붙이면 ! 와 같이 기능한다 반대로 1은 0 0은 1
8을 2진수로 하면 000010000 8 << 2 2자리 왼ㄴ쪽으로 이동
=> 00100000 => 즉 32가 된다.
같은 타입의 여러 변수를 하나로 묶은 것
배열 길이는 생성 후 변경불가
int[] sccore;
score = new int[5] //
int [] score = {1,2,3,4,5}; // 초기화
for 문을 사용해도 되지만 System.out.print(Arrays.toString(score)); 하면 출력됨
System.arraycopy()로 배열을 복사할 수 있음.
System.arraycopy(num,0,newNum,num.length);
num의 0번 index 부터 newNum의 0번 index 부터 num.length만큼 카피한다.
"abc".charAt(2); // 'c'
"abcdef".substring(1,4); // 'bcd'
"abc".toCharArray(); // ['a','b','c']
서로 관련된 것들을 하나의 묶음으로 다뤄서 복잡도를 낮추는 것.?
클래스는 설계도 객체는 제품
클래스 -> 객체 인스턴스화 시켜 객체로 만듬.
객체는 변수와 메서드로 이루어짐

클래스 안에 속성(변수) 및 기능(메서드)가 존재
Tv t;
t = new Tv();
t.channel = 7; // 변수
t.channelDown(); //메서드
클래스의 객체를 참조하기 위한 참조 변수 선언 후 0
클래스의 객체를 생성, 그 후 변수 및 메서드를 사용할 수 있음.
Tv t;
t1 = new Tv();
t2 = new Tv();
t2 = t1;
t2 = t1 을 하면 t1 이 저장하고 있는 값(주소)을 t2에 저장
그리고 t2는 접근이 불가해짐 그래서 가비지 컬렉터가 자동적으로 t2 메모리를 제거시킴.
int i; // 인스턴스 변수
static int c; // 클래스 변수(공유변수)