[구디아카데미 후기]DAY 11 자바설치, 변수,호출

NA YE SOM·2023년 7월 12일
1

▶ 한줄평 : 구디아카데미 수강 이전에 자바를 선행하기는 했지만 아직도 기본타입과 참조타입이 헷갈리는 것 같다. 민경태 강사님께서 구문분석(파싱, 문자열을 정수, 실수로 변화)이 중요하다고 하셔서 조금 더 공부해야 겠다.

자바설치

-> 자바 설치


자바 소스 코드 보관할 워크스페이스 만들기
원격 레파지토리 다시만들기
DB STUDY 저장 X



-> 밑에 새로만들기





-> 자바 홈을 이용한 PATH로 바꾸기


-> PATH 등록하는 이유? 어디서든 자바를 실행할 수 있게 하는것
(실행위치 상관없이 C드라이브이든 D드라이브이든)

자바실행파일 (JAVA.exe) : 어디있는지 알려주기
(bin 폴더 안에 들어있음)


-> 시스템 변수 쓰는 방법 : 앞뒤로 %쓰기

(java.exe, java.c.exe)


-> 컴퓨터에 등록시킨 PATH

-> 자동으로 잡혔던 PATH도 있긴한데 그냥 복사만 해둔것
(본진은 아님)


GIT

  1. C:/GDJ69/javastudy 디렉터리 만들어 이동
  2. javastudy 디렉터리를 로컬레파지토리로 만들기
  3. github에 javastudy 원격레파지토리 만들기
  4. javastudy 원격레파지토리를 origin으로 등록
  5. push/pull
    1) README.md -메모장으로 만들기
      # javastudy
    2) .gitignore : 깃헙에 안 올리는 파일/디렉터리 목록 작성
    (리눅스 : 마침표(.)로 시작 : 숨긴 파일)
    ★ 개발시) ignore 작업 필수 : 개발 환경을 등록시, 자동으로 생성
    gitignore.io 사이트에서 개발 환경을 등록하면 자동 생성
    (1) windows 환경 (2) java 개발(언어) (3) eclipse 사용
    (ex) 실행할 때 만들어지는 파일들 - github에 안올릴 수 있음

1. java study 디렉터리 만들어 이동

make directory 폴더명 : 폴더만들기

cd javastudy : cd로 옮기기

2. javastudy 디렉터리를 로컬레파지토리로 만들기

3. github에 javastudy 원격레파지토리 만들기




-> 안만들기(README file, gitignore, license

원격지에 파일을 만들게 되면 local에 있는 정보 올리는 것이 불가능

  1. 내려받기 먼저 해야함 ( pull 하고 -> 자바 파일 추가하기)
    원격지에 파일생김(상태변화) -> 원격지가 최신정보가 됨
    상태변화가 없어서 history 등록안됨

-> git : 최신 repository 내용을 다른곳으로 보내는 작업


-> 원격지에 파일을 만들고 pull과 push 해야한다.

<수업 : 원격지와 local 그림 -> 파일 만들때 어디가 최신으로 생기는지 확인>

-> READEME 밑에 메모장으로 만들고

밑이 최신이 되니까 push만 하면 된다

4. javastudy 원격레파지토리를 origin으로 등록




(복사) shift + insert

local 비고 원격지도 비었음(이제 local이 "최신"임)

  • local에 작업하고 원격지로 올리는 push 작업할 것



touch 파일 만드는 것
echo 파일에 명령 집어넣는것


  • 나중에 Maven(메이븐) 추가


리눅스 파일 : #으로 시작 - 주석텍스트


-> 샵 밑에는 올릴 필요 없겠음


-> (ex) 클라우드 접속하기 위한 key값 (민감한 정보) : 파일의 민감정보는 git에 올리지 않겠음
-> 이메일 주소, app pw 6자리는 properties에 작성해놓고 git에 올리지 않음 (customizing 필요)

-> 압축파일(zip)도 올라가지 않음




-> zip 파일 주석 처리

push전 선행


이클립스(eclipse)


-> 반디집 압축풀기


-> 문제를 손도 못대면 경험부족임

★ 알려준 코드를 이해할 수 있는 정도 (문제 많이 풀어보기)
★ 코드를 보고 해석할 수 있는 능력을 기르기(꾸준히 연습한 사람은 실력이 는다)

  • SI(System Integration) : 프로그램을 새로 만드는 직종(웹개발자 70% 종사)
    -> 프로그램 완성도 떨어짐(기능이 안되고 다운되고 -> SM(유지, 보수))
    -> 평균 7년정도 되면 ) 새롭게 프로젝트 만듦


(특정운영체제에서만 돌아가는 프로그램)
(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들 세팅

.metadat : study workspace 설정정보가 들어가있음( 자바 다시 열었을때 초기 세팅다시해야함(ex)preferences 등 (git.ignore등록)


클래스(class), 메소드(method)

클래스 : 그릇
메소드 : 작은 단위의 그룹핑 -> 각 메소드 별로 '기능'이 다름

-> main 메소드를 무조건 1개는 넣어두어야함 (안넣어두면 실행안됨)
-> 자바는 main메소드 먼저 찾음

public static void main(String[] args) (main method) : 바꿀 수 없음

  • application 기본 단위 : project
    (개발용 project 1개 떠있음)(project 개발시 1개만 나옴)
  • (수업) project : 학습 chapter



    -> 모듈 파일 해제

    -> 확장자가 자바인 모든 폴더 (src : source folder)


-> bin : 실행파일 따로 생김
-> 실행파일은 여기다 저장( .class : 확장자 -> 자동으로 생김)


-> 저장은 pacakge에다가 하기!(약속)


-> Java identifier(약속) : 숫자로 시작할 수 없음

하얀색 package : 빈상자
갈색 package : 내용물이 있는 상자


-> package까지는 저장소 개념(폴더로 만들어짐)

-> 모든 코드는 class에 넣어라


-> 허용은 하겠지만 마음에 들지 않음
-> class 규칙 : 첫번째 글자는 '대문자'로 만들기


-> main의 이름을 감쌈

  1. 모든 코드는 class안에(소스코드를 담기위한 그릇)
  2. class는 package안에
  3. 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밑에)

  • 실무하고 다른 것 : git에 올린것 (workspace 임)
    -> 실무는 workspace를 통째로 올리지 않음
    -> 실무는 project 1개만을 올림
    -> project 자체가 local respository 이어야 함


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타입으로 잡아두어야함

TIMESTAMP : 시간을 숫자로 바꾼 것 : LONG타입 안에 들어감(LONG타입으로 저장안되는 숫자는 고민할 필요없음)

변수(Variable)


메모리 1칸 : 1byte(byte하나로 저장할 수 있는것 : 127)


-> 실제는 4개를 써야함

상수(Constant Variable) : 대문자로 만들기!


위: 25, 밑 :21 (0으로 시작하면 8진수)

★ 0x 로 시작 : 16진수(간혹 볼수있음!)

★ L 은 대문자로 붙이기(선호)

-> F붙여야 해서 불편함

-> 한글자 '(작은 따음표)', 두글자이상 "(큰 따음표)"

스케이프(Escpae)


★ 반드시 알기!

백슬래쉬 - 뒤에 오겠지라고 생각함
-> 이스케이프 만들때 사용


주석(comment)


/* -> enter 이클립스가 만들어주는 스타일


-> 가운데 * 없어도 됨

  • 도메인 : 홈페이지 주소(모든 회사가 모두 다름)
  • package 만드는 이유 : class구분 위해서
    (ex) 날짜 관련 class : 구분할 방법 필요 -> 저장하는 폴더를 바꾸기 -> 폴더 이름이 달라야 함

    -> 그룹 아이디

변수 : 자바에게 변수 쓸거라는 것을 알려줘야함


-> 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진수의 값으로 매겨놓음)

  • 참조타입은 주소를 저장하는 것
  • tom은 다른곳에 저장시켜놓고 주소값만 저장하고 있음(123번지 가보면 "tom"이있다)


-> ★(면접)
name안에 tom이 들어있는 것이 아니라 "tom의 주소값","tom의 참조값"이 들어가있음(tom이 어디에 저장되어있는지)

타입변환 - 자동 타입 변화(Promotion)

byte : 1byte 필요
int : 4byte 필요

a = 5, a가 2진수로 바뀌어서 8자리로 표현됨

1byte 자리를 복사 -> 나머지 3byte를 0으로 채움

  • double b = 1.5 + 5.0(=6.5)(5.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 + 방향키 밑으로 / 방향키 위로 - 복사

  • 웹 개발에서 구문분석이 일어나는 이유?

    웹 화면이 입력한 모든 데이터는 'string'으로 저장됨
    (숫자가 넘어온 상황이라면, 숫자로 바꿔주기 위해서 구문분석이 필요할 수 있다)

★ 전달은 100% String이다





CTRL + F -> TODO

Main method 없는 것들은 실행해달라고 해야함
->
★class 밖에는 어떤 코드도 적을 수 없음


-> 여기는 자동으로 실행되는 구간은 아님


-> 첫번째 메소드(ex01)

-> ctrl+ F11/ run 은 main을 실행하는것임


-> main에다가 ex01 실행해달라고 부탁함


(메소드 만드는 것)

*실행순서 : 12번 -> 6번(실행해달라고 부탁한 순서대로)

*메소드 만드는 위치 : main 위나 아래나 상관없음
(class 밖에는 method만들 수 없음 - 어떤 코드도 넣을 수 없음)


-> 호출 : 부탁 순서대로 (ex01() -> hell0())
-> ex01이 위에 hello가 밑에 있는건 실행순서에 상관없음

  1. ex01() 해달라 해서 -> ex01로 감 -> hello() 해달라 -> hello해줌

"안녕 자바" -돌아와서 남은 것 -"Hello World"

(2번 호출)
ex01 () -> hello() -> 안녕 자바 -> 'Hello world' -> '안녕 자바'

ex01() 끝나고 -> 더이상 할것 없음

  • 무한루프 : 재귀호출



-> 등호 오른쪽을 먼저 함


-> 몫을 구할때 쓰는것



-> 몫, 나머지 따로따로 나옴


-> 자동변화되서 (promotion) 되서 가능함

복사 : addResult 더블클릭 ctrl + c -> ctrl + v

나누기
(1) 소수점으로 저장하는 나누기를 하면 -> 나누기가 됨
(2) 몫, 나머지 필요하면 -> 둘다 정수로 바꾸기 -> 몫,나머지 계산가능


-> double 로 casting : 5 -> 5.0
-> casting 대상 : i

★ 중요한 예제(casting) : 연습많이하기!


-> 소수점이 섞여있으면 나머지 숫자로 알아서 바꿈
(하나만 double로 바꿔주면 나머지는 자동으로 double로 바꿈)


-> 이렇게 해도 상관없음

(ex) 가격 정수 , 쿠폰 할인 정수 -> casting 꼭 해야함

-> 만드는것이 정의하는 것

연산


b는 진짜 10은 아니고 11이다. (11로 변하는 타이밍이 나중일뿐, a랑 b모두 11이다)



-> a를 b로 보내라


-> x를 y에 더해서 보내라





!- 부정의 의미


-> 제어문까지(최소역량)



-> 자바파일을 CLASS파일로 바꿈(실제 실행되는건 CLASS파일)

텍스트로 만들어서 볼 수 있는 파일이 아님(TXT로 열었을 경우)

-> SETTING 폴더, 실행파일 안올라감(git.ignore에 적혀 있는것 - 올라갈 필요 없는것들)

profile
개발자 velog

0개의 댓글