JAVA

자바기초2

구름이팡팡 2021. 6. 9. 10:15
728x90

[이클립스 세팅]

<퍼스펙티브 perspective>

- 뷰view(창)들의 집합: 책상정리
- 기본값: 자바(우측상단의 오픈퍼스펙티브에서 확인)
cf)만약 debug 퍼스펙티브 사용시 익스플로러에서 클래스 생성이 중복되어 보이는 현상 발생(사용하지말것)
- 사용자형 뷰정리: 윈도우>show view
cf)선호뷰: 패키지 익스플로러+소스뷰+problems뷰+콘솔뷰
- 초기화: 윈도우>퍼스펙티브>리셋...

<이클립스 기본동작>

- 파일 실행(F11)시 저절로 컴파일함 (앞시간에 javac. 등 하는거)
.java는 소스 .class로 컴파일해서 쓰는 것
- class 만드는게 java 파일 만드는거
cf) inherited 상속
- // :주석 , 히스토리봐야하고 맞았던 코드일 수도 있어서 사용해야 좋음.
cf) /* */: 뭉탱이로 주석처리 할 때
cf) 마우스 블럭 걸쳐놓은 상태로 ctrl+/(슬래시) 로 주석처리와 취소 자유자재가능
- 마우스 오른클릭으로 쇼라인넘버 유무 체크 가능
- 빨간색줄: 에러예고, 노란색줄: 원인알려줌

<파일명설정>

모든 컴퓨터 파일은 숫자로 시작 무척 싫어함. 문자로 시작하자~!!!
클래스 첫글자는 대문자 , 한글도x, 빈칸x

<주석문>설명문

소스코드내에 설명하는 부분(실행안됨)
특정줄의 on/off 역할로 더 많이 쓰임
//: 해당 하나의 줄만 on/off
/*~*/: 연속범위 여러줄을 설명문
ctrl+/: 해당블럭의 on/off(이클립스전용)

<폰트크기>

윈도우>프리퍼런스>제너럴>어피어런스>컬러&폰트>베이직>텍스트폰트>에디트...

cf) d2coding 폰트 추천 (다운 후 *.ttc>R>설치)

<테마변경>

윈도우>프리퍼런스>제너럴>어피어런스>우측테마>다크모드추천>재실행

<출력문 단축키>

- 자동완성: ctrl+스페이스바
cf) sysout + ctrl+스페이스바
- 실행: F11

<유니코드 변경>

윈도우>프리퍼런스>제너럴>워크스페이스>텍스트파일인코딩>other>utf-8
cf)윈도우기본문자세트: MS949(EUC-KR)

<작업공간>

워크스페이스: 이클립스의 프로젝트를 저장하는 기본폴더
(변경시: 파일>switch workspace>other...)
프로젝트: 하나의 프로그램 생성을 위해 필요한 모든 파일들의 모음

<.java vs .class>(복습내용)

.java 소스파일: src 폴더
.class 바이트코드: bin 폴더

<이클립스의 컴파일>

-'저장'(ctrl+s)시 자동컴파일: 오토세이브 추천
-모두저장: ctrl+shift+s
cf) 파일명에 *: 저장전이라는 뜻
cf) 저장이랑 실행이랑 다름 컴파일이랑 저장이랑 동시에 되는 것임 실행이 아니고(저장은 그냥 저장, 실행은 실행)


[기초코드]

<식별자>
모든 이름들: 변수명, 클래스명...

<명명규칙, 네이밍룰>


- 시작: 문자(영한)만 가능, 숫자는 불가능, 특수기호불가능(단, $ _ 이거 두 개만 허용)
- 공백, 예약어 X(int, class...)
- 관례:
1. 클래스명은 대문자로 시작(Hello, Name, HelloJava...(복합어시 중간에도 대문자))
2. 변수명은 소문자로 시작(sum, totalSum...)
3. 연결된 단어의 첫글자는 매번대문자로

<변수>

변수 선언, 초기화 이용하는 방법1 과 방법2

cf) int: 정수, 인티져, 소수점없는수
float: 실수
- 글자와 변수 연결 : +

<명령문 끝>

반드시 ; (세미콜론)

<이퀄(=) 의미>

1. = : 같다 X, 우변을 좌변에 대입하라는 뜻

ex)
a=b=90; 90을 b에넣고 그거를 a에 넣어라
i=10; : 10을 i에 넣어라
i=j+1; : j에1을 더해서 i에 넣어라
cf) i에 1를 더해라 세가지 방법
i=i+1;

2. 약어 이용 가능
i+=1;
++i(전위연산자:먼저변신); 얘는 하나만 늘어날때만 가능 (오로지 1만 증가)
cf)i++(후위연산자:나중변신)도 1더해지나 미묘한 차이가 있음. 이거는 sysout으로 (i++)로 컴파일해도 적용이 안되나 sysout으로 변수값입력하면 더해져있음. (해당줄의 실행결과에는 안뜨고 한줄 더 필요하다는 얘기)

두번째 후위연산자 출력시 15 나오지만 마지막 세번째 줄로 출력하면 제대로 나옴. c에서 물려받은 악습이라고 할 수 있다.

 

위 두줄과 아래 세줄은 같은 결과로 나옴. 위쪽처럼 간단하게 쓰는 것이 선호 됨.

-=(빼라) , *=(곱해라) , /=(나눠라)
--(오로지 1감소)

3. 이퀄나중
== : 같냐?고 물어보는 것 (좌변과 우변이 같냐? 조건식: true/false 출력됨)
!= : 다르냐?

ex) i가 j보다 크거나 같니?
i>=j

<8대 기본 변수>

표출처: [JAVA] 변수와 타입 (tistory.com)

- 논리 : boolean(true, false)
cf) 반대출력은 sysout에 변수쓸때 뒤에 ! 붙임.

- 정수
cf)2의10제곱까지 숫자 바로 암기해두기 tip)2의10제곱은 약 1000으로 계산

· byte: 256=2의8제곱 256가지 0포함 (-128~127)

· char: 문자입력하는 것, short와 마찬가지로 약64,000개이나 예외로 - 없음
cf) char 일때만 문자(한글자)=' ' ← 이거 char일때만 이용.
문자열(0~무한대)=" ", 다른데서는 한글자라도 " " 다 가능.
cf) 65 입력시 아스키 코드로 정해져있는 A가 출력됨.
44032: 가 출력
44033 : 각 출력
cf) 문자열 출력 한글자(char)는 '문자' 처리 ex) = a(X) "a"(O) 'a'(O) "ab"(O) 'ab'(X) ""(O) ' '(X)
cf) 플러스(+)는 양변에 숫자면 합산, 그렇지 않으면 문장연결

· short: 2의16제곱=2의6제곱*2의10제곱=약 64,000개로 추측가능 (-32,000~+32,000)

· int: 2의32제곱=2의2제곱*2의30제곱=약40억 (-20억~+20억)
cf) 0으로 시작하는 수는 8진수로 읽는다. ex) 010=8
0x(헥사?)로 시작하는 수는 16진수

· long: 2의64제곱=2의4제곱*2의60제곱=약 16엑사 (-8엑사~+8엑사)
cf) 너무 큰수쓰면 그걸 푸는 컴파일러의 오른쪽 바가지가 인트 9개 표준으로 되어있어서 에러남.
→ 끝에 L(소문자도가능)써줘야함. 고로 long에서 숫자 큰거같으면 값에 접미사 L 그냥 붙임.

- 실수
· double
· float
cf) long과 비슷하게 float 값에는 접미사 F를 붙인다.


- 1,000,000,000,000,000,000 PEZY 페에지요~!!
K(키로)< M(메가)<G(기가)<T(테라)<P(페타)<E(엑사)<Z(제타)<Y(요타)

- 정수는 int가 대표, 실수는 double이 대표

- 메모리 최적화를 위해서 종류가 여러가지 인 것이다.
내가 쓸 값의 대략적인 것을 유추해서 그릇의 크기를 정하는 것도 역량이다.
- 오버플로우 에러 : 만약 바이트에서 128 표현하려고 하면 에러가 남. 근데 연산으로 에러내면 컴파일러가 못잡아내기 때문에 밤새고 그러는 것이다.


<변수변환>

- 기본 바가지: int
· 자동형변환(promotion): 큰타입=작은타입(O)
· 강제형변환(casting): 작은타입=큰타입(X) →작은타입=(작은타입)큰타입

대표 int 바가지로 푸니까 안맞으니까 (byte)(b+1) 이런식으로 맞춰주는 거임.


→ 이러니까 대표값 int나 double 쓰는 것임!!!!!!

· 몫=정수/정수
나머지=정수%정수
단, 실수연산은 두개 값 중 하나만 실수이면 OK.
cf) 몫/정수 값을 출력하는/는 정확한 나누기가 아니니까!!!
따라서 캐스팅연산자로 실수(double혹은 . )로 써줘야 정확한 값이 계산됨(아니면 몫/나머지로 나옴). 나누는 정수 양쪽에 다 안써도 되고 하나만 써도 됨.

실수 바가지로 해줘야 값이 제대로 나옴.

 

<자동형변환 정리>

byte1<short2<int4<long8<float4<double8
cf) 정수형 < 실수형 원칙!

<강제형변환 정리>

작은타입=(작은타입)큰타입;
long l1= 123;
int i=(int) l1;

<그 외 연산자>

&& : AND연산자, 교집합

↑이 기호 입력 방법: shift+원화 (필터,파이프 라고 읽음) : OR연산자, 합집합

cf) 연산자는 복합기호라서 붙여써야함. 띄어쓰기 불가


<조건문>

1. 단순조건문: 참아니면 아무것도 안나옴.
if (조건식) {
참일때...
}

2. 양자택일형
if (조건식) {
참일때...
} else {
거짓일때....
}

3. 다중택일형
if (조건식1) {
조건식1 참일떄...
} else if (조건식2) {
조건식2 참일때...
}
{ ...
} else {
거짓일때...
}

cf) 처음부터 차근차근 조건에 반하면 계속 밑으로 내려오는 구조. → 그래서 사이값을 안줘도 되는 것.
cf) 중첩 if (if 안에 if 또 쓰는 것) 대신 다중택일형 추천. 너무 헷갈려서..?

728x90