목록Java/개체지향 프로그래밍 with JAVA (14)
Lewis's Tech Keep
- 보통은 4가지 특성 - 문헌에 따라 3가지 또는 7가지로 나누기도 함 중요한 3가지 - 캡슐화 (encapsulation) : 데이터 & 데이터에 작용하는 메서드를 하나로 묶는 것 : 정보 숨기기 (data hiding): 개체 안에 있는 데이터를 외부로 부터 보호 - 상속 (inheritance) : 이미 존재하는 개체를 기반으로 확장 -> 진화와 같음 새로운 개체는 상속되는 개체의 모든 것을 이어받는 존재 : 코드 중복을 막는다, 사람은 점진적 개념일 때 가장 효율적이다 - 다형성(polymorphism) : 같은 지시를 내렸지만 다른 종류의 개체가 동작을 달리하는 것 (overriding) : 함수 구현이 실행될 지는 실행 중에 결정 된다 = 늦은 바인딩 (late binding) [ early..
- 생성자가 생성됨과 동시에 유효한 상태임을 보장해야 한다. - 해당 사항이 지켜지지 않을 경우 : 1. 중복 생길 우려가 크다. 2. 기능 추가 시 여러 군데에 추가해야 할 가능성이 있다. 3. 수정 시 대응하기 어려워 질 가능성이 크다. - private 메서드 내에서 같은 클래스에 속한 개체는 private 멤버에 접근 가능! public class A() { private int a; private void method(A a) { A.a += 1; // 됨. this.a = 100; // 됨. } }
자바에서 String 비교를 할 때 문자열 비교라면 그냥 맹목적으로 equals를 써야 한다고 생각했다. == 비교는 주소를 비교하는 것이라 같은 String 일 지라도 다른 주소에 저장되어 있을 수 있기 때문이다. 하지만 왜 그런지 궁금했다. Ex) String a = "hi"; String b = "hi"; 를 하고 a == b 는 true Ex2) String a = "hi"; String b = new String("hi"); 를 하고 a == b 는 false ex1과 ex2가 다른 답을 뱉어내는 이유는 다른 주소에 저장 되어 있기 때문 but 여기서 ex1 은 왜 정답일지 생각해본 적이 없었다. 어떻게 그냥 알아서 a와 b가 같은 주소가 되었을까? (참고로 타 언어에서 a == b 가 문자열 ..
자바 자료형은 두 가지로 나뉘어 진다. 1. Primitive Type (원시 타입) byte 8bits -2^7 ~ 2^7-1 (-128 ~ 127) short 16bits -2^15 ~ 2^15-1 (-32768 ~ 32767) int 32bits -2^31 ~ 2^31-1 (-2147483648 ~ 2147483647) long 64bits -2^63 ~ 2^63-1 (-9223372036854775808 ~ 9223372036854775807) float 32bits 0x0.000002P-126f ~ 0x1.fffffeP+127f double 64bits 0x0.0000000000001P-1022 ~ 0x1.fffffffffffffP+1023 char 16bits \u0000 ~ \uffff (0..
자바는 Cross Platform 인가? 에 대한 대답 - Yes and No - 왜냐하면 자바는 JVM 위에서 올라가는 프로그램인데 이 JVM이 MAC OS, LINUX, WINDOWS 등에 깔려야 Cross Platform으로 돌아가기 때문이다.
- 패키지 : 연관된 클래스들끼리 묶는 기법 패키지 2종류 자바 기본 (빌트 인) 패키지 java.~~ 으로 시작하는 패키지 커스텀(user-defined) 패키지 패키지의 목적 최대 목적 : 클래스 이름 충돌 방지 가능 ex) Java.util.ABC && com.lewis.ABC (클래스 이름이 같지만 사용이 가능해진다.) - 빌드 및 실행 빌드 시 cmd javac -d 컴파일 하면 .class 컴파일 된 파일이 나옴 -> 여기 안에는 바이트 코드가 들어있음. 실행 시 cmd java -classpath 실행 클래스에는 main 함수가 필요함 (JAVA에서 실행 시 main 함수는 약속과 같은 존재 실행 클래스 이름으로 그냥 ABC가 아닌 com.lewis.ABC 와 같은 패키지 이름을 포함해야 함..