Lewis's Tech Keep
06/15 TIL (자바 문법 기본) 본문
- 메인 함수
- JAVA 프로그램 실행 시 반드시 필요한 약속
- 없을 시에 컴파일 오류 발생
- 패키지 목적
: 이름 중복 시 다른 패키지 안에 있다면 충돌 회피 가능
: 패키지 이름 중복 최소화
- 컴파일
: javac(java compile) -d <컴파일 결과물 저장 경로> <컴파일할 .java 파일>
: 결과물 -> .class 파일 = byte 코드로 되어 있음.
: java -classpath <클래스 path> <클래스 이름(패키지 이름 포함 해야 함)>
: .class 파일에는 반드시 main 함수가 있어야 함.
: 배포 방법 : .jar 파일을 만듦. -> lib
: jar -> jar -cfm(compile file & manifest) <패스> <manifest>
- 자바 is Crossplatform (yes and no at the same time)
: 맞기도하고 아니기도 하다. (jvm이 올라가 있어야 cross platform 처럼 작동하기 때문)
: jvm 설치과정이 필요
- 자바 정수 자료형
byte 1바이트
short 2바이트
int 4바이트
long 8바이트
float 4바이트
double 8바이트
boolean 1비트 (1/8 바이트)
char 2바이트
unsigned 존재 하지 않음 : color -> byte (-128~127 이라서 불가능 -> short 씀..)
- 자바 String
: immutable ->한번 만든 String 은 변경 불가
- 리터럴
16진수 : 0xFF
2진수 : 0b1100
8진수 : 0
float : F or f (소문자가 좀 더 많이 보임)
\ : escape 문자
null : null pointer
_ : 큰 숫자 가독성
- final
할당된 이후에는 바뀌지 않는다는 뜻
1. 지역변수
2. 클래스 멤버 변수
3. 메서드 매개변수
4. 클래스와 메서드
- 문자열
string constant pool 에 의해
String name1 = "a";
String name2 = "a";
일 때 name1 == name2 -> true 가 된다 (singleton 과 같은 개념)
- java 연산자 오버로딩
: java는 연산자 오버로딩을 지원하지 않는다.
- goto
: 은근히 쓸만한 기능 (java의 예약어이긴 하지만 실제 기능까지는 없다)
: ex1) 3중 포문의 경우 for,for,for -> 안에서 바로 break; 가능
: 단, 남용하면 실행 순서가 위로 갔다 아래로 갔다 하므로 알기 어려워지게 됨.
: goto 같은 거 (실제 goto는 아님)
loop_exit :
for...
for...
for...
break loop_exit;
으로 사용 (break 라벨 이름)
: 어느 코드로 점프하는 것은 불가능, break 감싸고 있는 라벨만 탈출 가능
: continue 라벨도 가능
- 다차원 배열
: 자바 다차원 배열은 진짜 다차원 배열은 아님
: C# 배열의 배열이나 C 포인터 배열과 비슷
: 즉 안쪽 배열 길이가 다 다르게 만들 수도 있음
- 열거형
: 독자적 or 클래스 내부에 선언 가능
: 자바에서는 값을 대입하지 못 함.
: 데이터형으로만 최대로 사용할 것 (다른 언어 쓰던 사람들과 헷갈릴 수 있음)
- var
: js var과 비슷 컴파일러가 자료형을 추론해 줌(가독성 해칠 수 있어서 최대한 사용 지양)
: 배열 선언해도 변수이름에 [] 안 됨
: 선언 동시에 {} 안에 값 넣는 것 불가능
람다
: anonymous function 으로 내포 함수라고도 부름 (일회성)
모듈
: (개인적 의견 : 패키지의 상위 개념이라고 생각함)
: 기존에는 실행 중에 app이 사용하는 클래스 목록을 찾는 공식적인 방법이 없음
: 내가 실행 중에 어떤 라이브러리를 로딩해야 하는 지 목록이 없었음
: 실행 중 오류 발생. 기존에는 모든 필요한 라이브러리를 한번에 다 올렸음 (덩치 너무 커짐)
: 기존에는 public 클래스 있으면 누구나 다 사용 가능 했었음. (패키지 단위 사용권한 제어가 불가능)
-> 그래서 모듈이 나옴
: 각 모듈 안의 패키지를 설정
'Java > 개체지향 프로그래밍 with JAVA' 카테고리의 다른 글
06/15 TIL (클래스와 개체) (0) | 2021.06.15 |
---|---|
06/15 TIL (OOP 필요성) (0) | 2021.06.15 |
[OOP] OOP 특성 (0) | 2021.05.18 |
[JAVA] 개체 지향 - 생성자 및 접근 제어자 (0) | 2021.05.11 |
[JAVA] 문자열 비교 String 에 관하여 (0) | 2021.05.01 |