자바는 포인터 타입!
-> equals 로 비교
String s1="잰";
String s2="잰";
String t1=new String("잰");
String t2=new String("잰");
System.out.println(s1==s2);
System.out.println(s1==t1);
System.out.println(t1==t2);
t1과 t2는 주소가 다름 그래서 false
string 타입 new..............................객체를 생성 하더라도 힙에 리터럴 풀이라는 상수 풀에 항상 객체가 있는지 찾는다 처음에
없으면 홍길동을만들ㅇ서 등록을 해논다 있으면 주소값을 가지고옴
리터럴 풀 상수 풀에 항상 등록후 사용!
new String 하면 매번 객체가 만들어지구~
==은 주소값 비교라고 생각하면댐(스택! )
int i=123;
int j=123;
i==j 를 했을 때 값이 같냐를 물어보는건뎅? // 스택
홍길동이란 스트링은 힙에 내용이 저장되고 스택에 주소값이 저장되서 재사용 됨, 스택에 있는 값비교가댐
String t1 하면 힙의 값을 가리키는 주소값이 들어가게 되고 new 하면다름
System.out.println(s1.equals(s2));
System.out.println(s1.equals(t1));
System.out.println(t1.equals(t2));
equals.() 함수는 가리키는 값이 같냐를 물어보기 떄문에
모두 true 가 댐 ,, 내용 비교!!
내용비교로 쓰고싶으면 오버라이드를 시켜놔야함
오브젝트 클래스로부터 상속을 받았음
//다형성, 스트링, ,,,,
==은 주소값 비교 equals는 값비교 인데 equals 는 추가 작업이 필요
//String이라는 method에 equals가 오버라이딩이 되어 있음 //따라서 위와 같이 내용을 비교하기 위해서는 equals를 오버라이딩 시켜야함. //Person에는 equals가 없는데, 그래서 자바 최 상위 부모로부터 equals를 상속 받아서 이와 같은 결과를 도출하게됨 //p1에 equals 위에 F3을 눌러보면 알 수 있음 (this==obj)라고 나와있음.
탐욕(Greedy) 알고리즘
-> 그때그때 생각나는 대로 작은단위 최적해 구하는거, 근데 크게 봤을때 최적이라는 보장은 없다
순열, Permutation
서로 다른것중 몇개를 뽑아 한줄로 나열
재귀 호출 : 알면 이해하기 쉽고 모르면 어려움, 코드가 간결하나 스택오버플로우가 날수있음 -> 언제 멈출껀지 조건을 달아줘야함
디버깅할때
더블 클릭 : 중단점 잡기
F5 -> 실행 값 보기
F6 -> 중단점 내리기
F8 -> 중단점에서 실행값 내려가는거 보기
_ 디버깅 많이 해보기,,
부호비트
<< 두개하면 음수는 음수 정수는정순데 <<<세개하면 다 정수
System.out.println(1<<(0%32));//32를 한거랑 0을한거랑 같음!
System.out.println(1<<1);
System.out.println(1<<2);
System.out.println(1<<3);
System.out.println(2<<1);
System.out.println(2<<2);
System.out.println(32>>32+0);
System.out.println(32>>32+2);
System.out.println(32>>2);
System.out.println(-32>>3);
System.out.println(-32>>4);
System.out.println(-32>>>4);
System.out.println(-32>>>0);결과
1
2
4
8
4
8
32
8
8
-4
-2
268435454
-32
System.out.println(0b10&0B01);
System.out.println(0b10|0B01);
System.out.println(((1234&1)==0)?"짝":"홀");
//결과
0
3
짝
System.out.println(0b10&0B01); //이진수를 나타냄
System.out.println(0b10|0B01);
System.out.println(((1234&1)==0)?"짝":"홀");
System.out.println(0B1111&(1<<0)); //1의자리랑 AND하는고
System.out.println(0B1101&(1<<1)); //00
System.out.println();
&연산자 : i&(1<<j): i의 j번째 비트가 1인지 아닌지 리턴
Permutation, Combination
% 내가더해야될꺼
di,dj 방향값ㅇ 다시보기
비트연산 다시보기
8월: 소금쟁이 합계 중첩 정도는 한시간 안에 풀어야댐
반복 재귀 익히기
'잰이_취미 > 교육 정리' 카테고리의 다른 글
# 190718_Java (0) | 2019.07.18 |
---|---|
#190717 java 수업 정리 (0) | 2019.07.17 |
190716 Algo 수업 정리 (0) | 2019.07.17 |