잰이_취미/교육 정리

#190722_algo

janey25 2019. 7. 22. 19:12

#190722_algo

  • 자바는 포인터 타입!

    -> 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