수업계획
8월말까지 자바
8월말에 DB
그담에 프론트. jquery를 넣을까 말까 고민중
다음 아두이노 ㅇㅅㅇ.
--
유클리드 호제법
두 양의 정수 a,b(a>b)에 대하여 a = bq + r (0<=r<b)라고 하면
a,b의 최대공약수는 b,r의 최대 공약수와 같다. gcd(a,b) = gcd(b,r)
a = 12345 / b = 1234
12345 = 1234*10 + 5 ( a = bq + r )
1234 = 5*246 + 4 ( a` = b`q + r )
5 = 4*1 +1 ( a`` = b``q + r )
4 = 1*4 (a``` = b```q + r )
while(b!=0){
int n = a % b;
a = b
b = n
if( n==0 ) return a; }
시간복잡도 O((log n)^2)
6*4 6*3
24 18
24 = 18 * 1 + 6
18 = 6*3
최대공약수 6?
최소공배수는 어케 하냐
24 48 72
18 36 54 72
뭔가 패턴이 보이는 거 같기도?
--
Math.pow(밑, 지수) WoW
2진수 8진수 16진수 변환..
int i = 127;
String binaryString = Integer.toBinaryString(i); //2진수
String octalString = Integer.toOctalString(i); //8진수
String hexString = Integer.toHexString(i); //16진수
System.out.println(binaryString); //1111111
System.out.println(octalString); //177
System.out.println(hexString); //7f
--
알고리즘을 공부하려면 컴퓨터 구조도 알아야하네?
드가자잇~
--
상속처럼 인터페이스 타입으로 변환된 객체도 원래 자아를 찾아 떠날 수 있다.
돌아가면 자아를 찾아서 자신만의 메소드나 필드를 다시 쓸 수 있지.
instanceof 쓰는것도 똑같다.
결국 상속의 상위호환이 인터페이스 아닐까
--
멤버 클래스의 경우 컴파일 시 클래스별로 따로 저장되긴 한데,
A의 필드안에 있는 B클래스(멤버 클래스)라면 B.class가 아닌 A$B.class로 저장된다.
A의 메소드 안에 있는 B클래스(로컬 클래스)면 A$1B.class로 저장.
멤버 클래스 안에도 static 선언에 따라
선언X : 인스턴스 멤버 클래스
선언O : 정적 멤버 클래스로 분류된다.
인스턴스 멤버 클래스는 인스턴스 필드와 메소드만 선언이 가능하다. static성님 못만져!
정적 멤버 클래스는 다 가능 ㅇㅇ 성님 하고싶은대로 다 해버려~
로컬 클래스 : 접근제한자 필요없고~(차피 부르는 메소드 안에 있을거아녀) static 성님 못만져!
주로 비동기처리를 위해 스레드 객체를 만들때 사용한다.
메소드를 실행하는 스레드와 다르므로 메소드가 종료된 후에도 로컬 스레드 객체는 실행 상태로 존재할 수 있다.
자바는 컴파일 시 로컬 클래스에서 사용하는 매개변수나 로컬변수의 값을 로컬클래스 내부에 복사해두고 사용한다.
그런데 매개변수나 로컬변수의 값이 달라진다면? 망하지 않겠나.
자바 7 이전까지는 final키워드 없이 사용하면 아주 혼냄. 자바 8 이후부터는 final 없어도 사용이 가능하다.
왜냐? JVM성님이 알아서 final시켜줌 ㅇㅇ. final 안붙였다고 막 바꿀려고 하다가는 컴파일러 형님한테 혼나요~
중첩 클래스에서 바깥 클래스 참조하기.
this는 객체 자신의 참조. 바깥놈 이름이 A라면 A.this.필드 / A.this.메소드() ㅇㅋ?
중첩 인터페이스는 뭐냐 ㅁㅊ 클래스 안에 인터페이스가 있어? 뉴 월드네
인스턴스 멤버 / 정적 멤버 인터페이스 모두 가능.
인스턴스는 바깥 클래스의 객체가 있어야 사용 가능, 정적은 바깥 객체없이 바깥 클래스만으로 바로 접근
보통 정적으로 처리, UI프로그래밍에서 이벤트를 처리할 때 주로 사용.
중첩 클래스 - 이놈이 특정한 한 녀석과만 소통할 때 그냥 안에 집어 넣어버려라?
멤버들 접근도 편하고 외부에는 보이지도 않으니 복잡성 Down
인스턴스 멤버 클래스, 정적 멤버 클래스, 로컬 클래스 3개로 ㅇㅇ
--
인터페이스 내부 - 변수 > 상수, 메소드 구현부 X > abstract,
디폴트 메소드 > 오버라이딩 되고 뭐 알아서 써라, 정적 메소드 > 객체 없이도 써라.
디폴트 메소드 : 이미 짜여진 코드를 나중에 기능을 추가할 경우? 아니면 공통적인 특성이지만 다형성이 필요없을 경우?
선택에 따라 객체를 다르게 만든다.
선택 이후 객체를 핸들링해야 하는데? 이름이 같으니 못찾는다.
객체를 반환하는 메소드? >> 그냥 미리 맹글어두고 집어넣어버리기~
--
Anonymous 익명객체
조건 : 상속하거나 구현해야 함. ( 왜 예제는 상속 구현 안했는데 되냐? ㅡㅡ )
부모클래스(or 인터페이스) + 변수 = new 부모클래스(or 인터페이스)(생성자 파라미터 맞춘 인자값){ ... }
바로 실행문이 있는걸 보면 그냥 이걸 해라! 이런건가
재사용되지않고 특정 위치에서 사용할 경우 생성한다는데 이때만 쓸 일회용품으로 실행문까지 쓰는거지
부모 생성자 불러서 호다닥 만들어서 써먹고 버려~
필드 메소드 선언 가능 주로 부모 메소드 오버라이딩 ㅇㅇ 생성자는 당연히 불가능
자식 클래스의 필드에도, 메소드에도 다 올 수 있다.
필드에 초기값으로 박히거나, 메소드에서 로컬 변수마냥 ㅇㅇ
메소드의 매개변수가 부모 타입일 경우(???) 메소드를 호출하는 코드에서 익명객체 생성해서 매개값으로 익명 자식 ㅎㅇ
익명 자식 객체에 새롭게 정의된 필드와 메소드는 내부에서만 사용, 외부에서는 접근 금지. 차피 부모 타입 것만 쓰니까? 근데 오버라이딩하는 메소드는 부름ㅋ 신기방기~
인터페이스를 부모로 생성하는 익명 객체는 추상화 된 모든 메소드들을 살려야 안혼나겠지?
익명 스레드 객체를 사용할 때. 메소드 종료 후에도 스레드가 살아있다면? 그리고 그 메소드의 매개변수나 로컬변수를 익명 객체가 쓴다면? Holy S**t
알아서 JVM 성님이 final로 선언해줍니다.. 로컬클래스 복습 하러갓!
--
예외가 생기면 프로그램은 그 즉시 죽는다. 죽지마!!
예외도 일반 예외, 실행 예외로 나뉘어진다. 맞지. exception을 상속받는 runtime exception
핸들링한다면 예외 처리 가능! 프로그램 잘 돌아가게 잘 짜야해
실행 예외는 컴파일러가 바로 잡지 않기 때문에 경험과 기본기가 있어야 한다.
다중 catch! 하위 예외 클래스부터 이쁘게 작성하자. Object가 맨 위에 있으면 안되지
throws로 메소드 호출한놈한테 예외 떠넘기기.
API봤는데 생성자와 메소드에 throws 있는 놈 쓸려면, 예외처리를 해야한다.
main에서 짬때리는 놈은 JVM이 최종적으로 예외처리 함. 콘솔에 출력하는 방식으로 ㅇㅇ. >> 비추
'2022_Java > 메모' 카테고리의 다른 글
| 7월 5주차 끄적임 (0) | 2022.07.31 |
|---|---|
| 7월 4주차 끄적임 (0) | 2022.07.22 |