▶ 한줄평 : 구디아카데미 수강 이전에 자바를 선행하기는 했지만 아직도 기본타입과 참조타입이 헷갈리는 것 같다. 민경태 강사님께서 구문분석(파싱, 문자열을 정수, 실수로 변화)이 중요하다고 하셔서 조금 더 공부해야 겠다.
-> 자바 설치
자바 소스 코드 보관할 워크스페이스 만들기
원격 레파지토리 다시만들기
DB STUDY 저장 X
-> 밑에 새로만들기
-> 자바 홈을 이용한 PATH로 바꾸기
-> PATH 등록하는 이유? 어디서든 자바를 실행할 수 있게 하는것
(실행위치 상관없이 C드라이브이든 D드라이브이든)
자바실행파일 (JAVA.exe) : 어디있는지 알려주기
(bin 폴더 안에 들어있음)
-> 시스템 변수 쓰는 방법 : 앞뒤로 %쓰기
(java.exe, java.c.exe)
-> 컴퓨터에 등록시킨 PATH
-> 자동으로 잡혔던 PATH도 있긴한데 그냥 복사만 해둔것
(본진은 아님)
# javastudy
2) .gitignore : 깃헙에 안 올리는 파일/디렉터리 목록 작성make directory 폴더명 : 폴더만들기
cd javastudy : cd로 옮기기
-> 안만들기(README file, gitignore, license
원격지에 파일을 만들게 되면 local에 있는 정보 올리는 것이 불가능
-> git : 최신 repository 내용을 다른곳으로 보내는 작업
-> 원격지에 파일을 만들고 pull과 push 해야한다.
<수업 : 원격지와 local 그림 -> 파일 만들때 어디가 최신으로 생기는지 확인>
-> READEME 밑에 메모장으로 만들고
밑이 최신이 되니까 push만 하면 된다
(복사) shift + insert
local 비고 원격지도 비었음(이제 local이 "최신"임)
touch 파일 만드는 것
echo 파일에 명령 집어넣는것
리눅스 파일 : #으로 시작 - 주석텍스트
-> 샵 밑에는 올릴 필요 없겠음
-> (ex) 클라우드 접속하기 위한 key값 (민감한 정보) : 파일의 민감정보는 git에 올리지 않겠음
-> 이메일 주소, app pw 6자리는 properties에 작성해놓고 git에 올리지 않음 (customizing 필요)
-> 압축파일(zip)도 올라가지 않음
-> zip 파일 주석 처리
push전 선행
-> 반디집 압축풀기
-> 문제를 손도 못대면 경험부족임
★ 알려준 코드를 이해할 수 있는 정도 (문제 많이 풀어보기)
★ 코드를 보고 해석할 수 있는 능력을 기르기(꾸준히 연습한 사람은 실력이 는다)
(특정운영체제에서만 돌아가는 프로그램)
(ex) embedded 제어 : 드라이브쓰루(맥도날드)
(window 10 환경에 맞춰서 개발 못함)
(원시코드)
-> class파일은 git에 올라가지 않음
-> 띄어쓰기 2개로 줄이기
-> 테마 먼저 바꾸기
built-in edit 수정안됨(만들어져있는거라)
tab키 공백 space 키 공백 다름
developer는 tab키가 space로 자동으로 변경됨
eclipse 는 공백으로 안바뀜
(들여쓰기 2칸)
perspective에 사용하는 view들이 등록되어 있음(view가 바뀜)
-> 웹개발 java EE 로 세팅해 놓은것
(밑에 server 도 있음)
-> 자발 개발용 java
-> simple해짐
-> 필요한 view들 세팅
클래스 : 그릇
메소드 : 작은 단위의 그룹핑 -> 각 메소드 별로 '기능'이 다름
-> main 메소드를 무조건 1개는 넣어두어야함 (안넣어두면 실행안됨)
-> 자바는 main메소드 먼저 찾음
-> bin : 실행파일 따로 생김
-> 실행파일은 여기다 저장( .class : 확장자 -> 자동으로 생김)
-> 저장은 pacakge에다가 하기!(약속)
-> Java identifier(약속) : 숫자로 시작할 수 없음
하얀색 package : 빈상자
갈색 package : 내용물이 있는 상자
-> package까지는 저장소 개념(폴더로 만들어짐)
-> 모든 코드는 class에 넣어라
-> 허용은 하겠지만 마음에 들지 않음
-> class 규칙 : 첫번째 글자는 '대문자'로 만들기
-> main의 이름을 감쌈
- 모든 코드는 class안에(소스코드를 담기위한 그릇)
- class는 package안에
- package는 src안에
-> class안에 코드를 적어야함
main 쓰고 -> ctrl+space(자동완성도구)
-> 마우스로 '실행'(run)
-* 저장안된 파일이라는 뜻
1. javastudy folder - workspace (작업공간)
-> metadata 폴더 , eclipse setting 폴더
(workspace바꾸면 eclipse setting 다시 해야함(테마 바꾸기, 색 바꾸기 등))
2. project (workspace밑에) : workspace에는 project1개만 있어도 됨
3. src(project밑에) : 소스폴더
4. package(src밑에) : class(내용)는 package안에 만들어야 함
5. class(package밑에)
6. method(class밑에)
ctrl + d (한줄지우기)
대,소문자 섞어서 입력
-> 표준적인 규칙(완전히 따라서 지켜야하는건 아니지만)
-> Upper Camal Case는 100%지켜야 함
-> 이름 규칙보다 잘 보이는 규칙이면 바꿀 수 있음
(상황에 따라 변하는 값 : 소문자로 만들어서)
기본타입(Primitive type)
short x float x(소수점 처리)(나머지 6개 사용)
-> 요즘은 double로 쓰면 됨
바이트(컴퓨터가 저장할때 기본단위로 쓰는것)
boolean 으로 저장하려면 : 기본단위에 8등분해서 하나로 써야함
자바 가상 머신(jvm) : 자바를 실행해주는 머신
unicode(유니코드) : 국제표준코드 : 두덩어리를 하나로 줘서 한글도 저장 가능
1바이트 : 영문코드(ex) c언어 : 한글 저장 안됨
byte(바이트) : 기본단위라서 씀 : 파일들을 서버로 올리거나 내릴때
int : db에 따라서 number대신에 쓰기도함(정수저장함)
-
-> 21억 4천 7백만 넘어가면) long필요함
-> view가 21억 넘어가면 ) long타입으로 잡아두어야함
변수(Variable)
메모리 1칸 : 1byte(byte하나로 저장할 수 있는것 : 127)
-> 실제는 4개를 써야함
상수(Constant Variable) : 대문자로 만들기!
위: 25, 밑 :21 (0으로 시작하면 8진수)
★ 0x 로 시작 : 16진수(간혹 볼수있음!)
★ L 은 대문자로 붙이기(선호)
-> F붙여야 해서 불편함
-> 한글자 '(작은 따음표)', 두글자이상 "(큰 따음표)"
이스케이프(Escpae)
★ 반드시 알기!
백슬래쉬 - 뒤에 오겠지라고 생각함
-> 이스케이프 만들때 사용
주석(comment)
/* -> enter 이클립스가 만들어주는 스타일
-> 가운데 * 없어도 됨
변수 : 자바에게 변수 쓸거라는 것을 알려줘야함
-> is/ has : 이거 좋니? 가지고 있니?
booelan 타입의 변수는 is prefix 값 쓴다 (거의)
-> 이렇게 쓰면 안됨(나만 아는 변수이름 주면 안됨)
-> 변수 이름 만들때 : 의미전달 되야함
자동완성 : Ctrl + space
+ ctrl + space(자동완성)
+ ctrl + space(자동완성)
-> 4글자까지 줄일 수 있음
-> ★변수 이름이 길면 ctrl + space 쓰기!
(타이핑 하면 human error 생기기 쉬움)
-> local 변수
-> 한,두글자 쓰고 ctrl + space 자동완성으로 입력!
저장 : Ctrl + s, RUN 실행 : Ctrl + F11
int 안붙임, long 붙임(L) : long에 저장하는 것
-> 한글도 출력이 됨
-> 대문자 L 가독성 좋음
-> L을 붙여야하는 숫자 : 숫자(1000000000) 자체가 int 범위(21억 4천 7백만)를 넘어가면 L 붙여야 함
(안넘어가면 안붙여도 됨)
-> 안넘어가도 붙여도 됨
-> 적당한 수준에서 소수점 나옴
상수
-> final 값은 바꿀 수 없음
-->final 값 '대문자'로 작성하기
참조타입(Reference Type) : 기본타입이 아닌 모든 타입
2글자 이상으로 문자열 String(class 타입)
-> class쓰고 있으면 100% 참조타입이다.
컴퓨터는 1byte마다 숫자를 붙여놓음. 주소라고 함, 16진수로 붙여놓음(0x)
-> 16진수 = 메모리주소(0~ 16진수의 값으로 매겨놓음)
-> ★(면접)
name안에 tom이 들어있는 것이 아니라 "tom의 주소값","tom의 참조값"이 들어가있음(tom이 어디에 저장되어있는지)
타입변환 - 자동 타입 변화(Promotion)
byte : 1byte 필요
int : 4byte 필요
a = 5, a가 2진수로 바뀌어서 8자리로 표현됨
1byte 자리를 복사 -> 나머지 3byte를 0으로 채움
-> package 달라서 class 이름 "MainWrapper" 해도 상관없음
정수 -> 실수( 5->5.0 ) 가능
실수 -> 정수( 5.9 -> ?) 불가능
데이터의 훼손이 발생하는 경우(자동으로 진행될 수 없음)
소수점을 잘라 버려야 하니까
4바이트 -> 1바이트로(큰 타입 -> 작은 타입)으로 바꾸겠다 : (byte)a
-> 잘라버림(0만 남음)
-> 0이 나옴, 원본이 훼손된다.
-> casting 잘못하면 100% 개발자 책임이다.
-> 0으로 바뀜
-> () 안에 바꾸고 싶은 타입 적기
★구문분석(파싱,parsing) : 프로젝트에 많이 쓰임(String 3가지 쓰임)
(ex) 오라클 TO_NUMBER
parseInt (메소드 pare를 붙여놓음)
CTRL + ALT + 방향키 밑으로 / 방향키 위로 - 복사
★ 전달은 100% String이다
CTRL + F -> TODO
Main method 없는 것들은 실행해달라고 해야함
->
★class 밖에는 어떤 코드도 적을 수 없음
-> 여기는 자동으로 실행되는 구간은 아님
-> 첫번째 메소드(ex01)
-> ctrl+ F11/ run 은 main을 실행하는것임
-> main에다가 ex01 실행해달라고 부탁함
(메소드 만드는 것)
*실행순서 : 12번 -> 6번(실행해달라고 부탁한 순서대로)
*메소드 만드는 위치 : main 위나 아래나 상관없음
(class 밖에는 method만들 수 없음 - 어떤 코드도 넣을 수 없음)
-> 호출 : 부탁 순서대로 (ex01() -> hell0())
-> ex01이 위에 hello가 밑에 있는건 실행순서에 상관없음
"안녕 자바" -돌아와서 남은 것 -"Hello World"
(2번 호출)
ex01 () -> hello() -> 안녕 자바 -> 'Hello world' -> '안녕 자바'
ex01() 끝나고 -> 더이상 할것 없음
-> 등호 오른쪽을 먼저 함
-> 몫을 구할때 쓰는것
-> 몫, 나머지 따로따로 나옴
-> 자동변화되서 (promotion) 되서 가능함
복사 : addResult 더블클릭 ctrl + c -> ctrl + v
나누기
(1) 소수점으로 저장하는 나누기를 하면 -> 나누기가 됨
(2) 몫, 나머지 필요하면 -> 둘다 정수로 바꾸기 -> 몫,나머지 계산가능
-> double 로 casting : 5 -> 5.0
-> casting 대상 : i
-> 소수점이 섞여있으면 나머지 숫자로 알아서 바꿈
(하나만 double로 바꿔주면 나머지는 자동으로 double로 바꿈)
-> 이렇게 해도 상관없음
(ex) 가격 정수 , 쿠폰 할인 정수 -> casting 꼭 해야함
-> 만드는것이 정의하는 것
연산
b는 진짜 10은 아니고 11이다. (11로 변하는 타이밍이 나중일뿐, a랑 b모두 11이다)
-> a를 b로 보내라
-> x를 y에 더해서 보내라
!- 부정의 의미
-> 제어문까지(최소역량)
-> 자바파일을 CLASS파일로 바꿈(실제 실행되는건 CLASS파일)
텍스트로 만들어서 볼 수 있는 파일이 아님(TXT로 열었을 경우)
-> SETTING 폴더, 실행파일 안올라감(git.ignore에 적혀 있는것 - 올라갈 필요 없는것들)