유재범 | 참석 |
최다인 | 참석 |
이지수 | 참석 |
김용준 | 참석 |
김정민 | 참석 |
- java를 할 때에는 JDK(Java Development Kit)와 Eclipse가 필요하다. 하지만 JDK는 필수이고 Eclipse는 다른 것으로 대체 할 수 있다.
- 비유를 하자면 Eclipse는 word, JDK는 Word를 PDF로 변환해주는 것, JRE는 PDF 리더라고 하면 된다.
- hello.java로 저장되면 javac라는 2byte라는 바이트코드로 변환되고 다시 hello.class로 3byte 반기계어로 변환된다. 그리고 hello.class가 인터프리터 java로 변환이 되어 결과가 나온다.
- 바이트코드 : 어셈블리와 비슷한 것이다. java 파일을 코딩하면 나오는 것인데 일종의 목적 코드(Object Cod)와 비슷하다. JVM에 돌아가는 언어가 바이트코드이다.
- JVM : Java Virtual Machine의 약자로 읽은 내용을 자신의 각 메모리에 배치하는 역할을 한다.
- 왜 안드로이드에서 JVM에서 달빅으로 바꾸었는가? : 모바일에 쓰이므로 JAVA와 달리 메모리와 전력 관리가 필요하기 때문에 새로 만든 것이다. 그리고 달빅이 안드로이드 관련 최적화를 더 많이 해 더 빠르다. 하지만 하드웨어 성능이 올라갔고 전력 관리를 하는 부분의 성능 전하가 문제가 되지 않기 때문에 달빅을 버린 것이다.
- JVM안에는 스택 영역, 동적 할당 메모리 영역, 상수와 메서드 영역, Register 영역이 있다.
- 사실 java에는 레지스터가 없다. 다만 컴퓨터에 있기 때문에 나온 것이다.
- 레지스터는 CPU에 있고 나머지 영역은 메모리에 있다. 둘의 위치는 전혀 다르다.
- 스택 메모리는 동적 할당 메모리 위에 있고 동적 할당 메모리는 상수 메모리 위에 있다. 그래서 스택은 위에서부터 쌓이고 동적 할당 메모리는 아래서부터 쌓이게 된다. 여기서 스택 메모리와 동적 할당 메모리가 메모리 전체 양을 넘어서면 흔히 말하는 블루 스크린이나 스택 오버플로우가 뜨게 된다. 상수와 메서드는 스태틱한 메모리이기에 위에 동적인 동적 할당 메모리가 존재해도 상관 없다.
- 스택 영역은 지역변수가 저장 되는 곳.
- 동적 할당 메모리 영역은 Garbage Collection heap으로도 불리며 배열같은 연속 공간이나 클래스에 포함된 멤버를 할당하는 영역이다. Garbage Collector에 의해 관리된다.
- 상수와 메서드 영역(Constant&Code Segment)은 상수나 추상화 형식을 지닌 메서드(함수)를 저장한다.
- JAVA의 특징
- 내부적 포인터 사용
- 이식성이 높다. 같은 JVM이 설치되어 있으면 모두 돌아 간다.
- 객체지향적 언어이다.
- java 프로그래밍의 코딩 규칙
- package>import>class 순서로 작성된다.
- pacakge는한 파일에 한 번만 사용 할 수 있다.
- import는 #include와 같다. import는 여러 클래스에 한 번만 사용 될 수 있으며 java.lang 뒤에 붙은 클래스가 많으므로 Import.java.lang.*로 줄여서 사용한다.
- 사실 import를 하지 않고 뒤에 package명을 다 붙여서 쓰면 쓸 수 있다. 하지만 이게 귀찮아서 import를 쓰는 것이다.
- C의 #include는 복붙이라면 java의 import는 참조이다. 그래서 C는 컴파일을 하고 include를 한 것을 바꿔도 이미 올라가 있어서 바뀌지 않으나 java는 import를 한 것을 바꾸면 참조이기 때문에 바뀌어서 내용이 들어간다.
- java.lang는 sun에서 미리 기본적으로 클래스 안에 import 해두었기 때문에 java.lang 내의 클래스에 한해서는 import를 생략 할 수 있다.
- class는 여러 개를 사용 할 수 있으나 public라는 예약어를 사용할 수 있는 클래스는 하나 뿐이다. 그리고 이 public class는 파일명과 완벽히 동일한 이름이어야 한다.
- 모든 클래스가 public이라는 이름을 사용하지 않아도 상관 없지만 쓴다면 오직 1개만 써야 한다.
- public static void main(String[] ar). 이것은 실행의 주체가 되는 main() 메서드를 찾게 된다.
- ar은 사용자 정의 명칭이며 대소문자와 순서를 준수해야 하지만 []와 ar의 순서는 바뀌어도 상관 없다.
- 사용자 정의 명칭이 사용 되는 곳 : 폴더(package)의 이름, 클래스의 이름, 메서드의 이름, 필드(Field)의 이름
- class, method(함수), field(변수)의 경우 첫 글자는 $, _, 영문 대,소문자여야 한다.
- 글자 수에는 제한이 없다.
- 공백문자는 포함할 수 없다.
- 특수문자는 사용할 수 없다.
- 숫자는 첫글자만 아니면 사용 할 수 있다.
- 예약어는 사용할 수 없다.
- 알아두면 유용한 코딩 규칙
- class : 첫 글자는 $, _, 대문자를 사용하자. 소문자로 시작하는 클래스는 현재까지 sun에서 제공되는 문서는 없다.
- method(함수) : 첫 글자는 $, _, 소문자를 사용하자. 대문자로 시작하는 method는 현재까지 sun에서 제공되는 문서는 없다.
- Field(변수) : 일반적으로 전부 대문자인 경우는 static final 필드(C의 const)이고 나머지는 소문자이다. 기본적으로는 소문자로 시작하고 나머지는 낙타모형으로 쓴다.
- 합성어의 첫글자는 대문자로 한다. Class, Method, Field 모두에 해당되며 예를 들어 HelloJava라는 경우 J를 대문자로 한 것이 그것이다.
4. 다음 진행 ¶
- Chapter 2 ~ Chapter 4
- 발표 : 김용준
- JDK와 Eclipse를 깔고, Hello World! 를 화면에 출력하는 프로그램 만들어보기
- 김용준 : public static void main(String[] {})에서 {}안에 그냥 아무 영어나 넣으면 됨. 무슨 의미가 있는지 확인할 필요가 있음.
- 알아본 결과 {} 임시 매개변수라 그렇다는데 여기에 String[] {} 대신 int A 같은 것을 넣으면 무슨 의미 인지 궁금하다.