static 설계도
stack
Heap 인스턴스, 참조타입,
static stack Heap
Fish f = new Fish();
stack은 == 로 비교하고
해시코드는 equals로 비교
== 은 별로 안좋음
new 하면 hashcode
원래 hashcode는 전부 다 다르다!
참조 타입은 다 다르다 new 하면 다 다름!
BUT String만 내용이 같으면 hashcode가 같음!!
new 안하면 래퍼런스도 같음! new 쓰면 래퍼런스는 다름
그래서 주의할 것이 string은 == 쓰지 마라!
equals 써라!
String은 참조타입
Copy by value, deep copy
concatnation이 있는데 값을 버린다 메모리 낭비 심함
VS StringBuilder 는
Copy by reference, shalow copy
OOP => A PIE
Inheritance
부모것은 내것, extends, extends object
cf) private, 생성자 (비자금, 이름)
Object 메모리 관리
4대 메소드
getClass, toString, hashCode, equals
메특
자생부생 자식이 생성되면 위로 부모도 다 생성됨 Heap
자설부설 자식의 설계도가 올라가면 부모 설계도도 올라감 Static
생주부주 생성된 주소는 부모의 주소다 (부모님하고 같이 사니깐 부모 주소로 놀러감)
설공메사 설계도에 공개되면 메소드를 다 사용가능 하다
다형성
부타자생 부모의 타입으로 자식을 생성하면
부타자참 부모의 타입으로 자식을 참조하면
부메자호 부모의 메서드로 자식을 호출할 수 있게 함 (override)
final
더 이상 자식이 없어
메소드에다가 하면 Overriding 금지!
배열
같은 타입의 나열
참조타입 null , 기본타입 0
int [] a = {1,2,3};
int [] b = new int[3];
b[0] = 1;
int [] c = new int[]{1,2,3};
int [] d = a;
Integer aa = 10;
int ab = aa;
JAVA에서는 실수 연산에서 변수는 int 형으로 연산됨 byte쓴다고 메모리 안아껴짐
static
가장 바깥에 있는 class 는 static class 없다
생성 없이 쓰자! 클래스 이름으로 변수 써야 한다! 영역은 static 영역에
스 -> 논스 못부름 / 논스 -> 스 부를 수 있음
static 끼리 overriding 없음 overloding 만 있음
의존
동그라미 - 인터페이스, 라인 글러브 - implements
extends
abstract
오버로딩
같은 역할! 인데 변수로 구분하여 편의성
오버라이딩
상속하면서 아버지 성격을 완전히 엎을 때
heap에서만 일어남
접근 제한자 기존 public , private , default, protected
package 물리적 묶음 단위, 소문자 다르면, 다른 클래스, import 해야하지만 안해도 되는 java.lang , Object String Wrapper
1차로 총 정리이고 좀 더 학습하면서 내용들을 추가하면서 완벽하게 정리본을 만드는 것이 목표! 😎