패키지가 모여있는데 main이 있으면 프로그램 아니면 라이브러리
패키지들의 모임을 빌드하면 -> .jar 파일
근데 다른 폴더에 있으면 완전 다른 프로젝트니까 내 프로젝트에서 쓸수가 없겠지 그래서 설정하는게 class path
명령어를 써서 빌드 -> 근데 요새는 빌드 도구들이 있음 그걸 써서 하니까 책 따라하진 말고 내용만 함 읽어보삼
예제 8.5실습하고 책 한번 쓱 읽어보기 예제 8.1을 말씀하시는 건가...??
equals vs ==
String name = "안녕"; -> 콜바이레퍼런스
int num = 10; -> 콜바이밸류
int num = 20;
컴파일러 입장에서 int 공간은 아니까 미리 할당할 수 있음
근데 대문자로 시작하는 모든 애들은 원래는 클래스라서 사이즈를 알 수가 없음=가변적. 그러니까 값을 넣지 않고 주소를 넣어놓음.
콜바이밸류는 다이렉트하게 액세스 / 콜바이레퍼런스는 두번 움직여야함. 그래서 후자가 속도가 느림.
그래서 자료형이 없는 언어는 액세스가 느림. 파이썬은 모든게 콜바이레퍼런스라 엄청 느림.
==
주소만 비교. if(name == "안녕")하면 false 뜸
equals
일단 주소를 비교하고 false가 돌아오면 어 얘가 포인터인가? 하고 주소로 가서 값을 비교함
JFrame 사용 예제
실행결과
마지막줄 : 창에서 엑스 누르면 데몬도 같이 종료
스테틱에 떠있는 메모리(실행시보다 이전에 설정되어있어야하니까. 근데 힙인지 스테틱인지는 어떻게 구분하지 ㅠㅠ) / 대문자로 되어있으니 final
FlowLayout 안 하면
이러케 실행됨
패널을 사용하는 예제
이렇게 패널을 형성하고 나서 panel.add() 하면 다 패널에 갖다 붙음.
패널을 형성하지 않으면 그냥 다 백그라운드(=컨텐트페인)가 되는 것.
add(panel); => 백그라운드에 패널을 추가해줌
왜 패널을 설정하지?
=> 칸을 두개 나눠서 하나는 플로우레이아웃 하나는 그리드레이아웃 이렇게 적용하고 싶을 수도 있자나? 그럴때 패널을 나누면 따로 적용할 수 있음
FlowLayout
왼쪽에서 오른쪽으로 버튼 배치. 각 컴포넌트들은 하나의 줄에서 차례로 배치되고 더이상 공간이 없으면 다음 줄에 배치된다.
이런 식으로
BorderLayoutTest
BorderLayouy은 아래 그림처럼 컨테이너를 5개의 영역 상 하 좌우 중앙으로 구분하고 각각의 영역에 컴포넌트를 배치할 수 있는 배치 관리자이다.
영역을 지정할때는 North South East West Center의 문자열을 사용한다.
EX add(button, "South")
GridLayout
GridLayout은 컨테이너 공간을 격자(grid)모양으로 나눈 후에 각 셀에 하나씩 컴포넌트들을 배치한다. 컴포넌트들이 추가되는 순서대로 격자의 셀을 채우게 된다. GridLayout은 깔끔하게 컴포넌트들을 배치할 수 있어서 자주 사용된다.