첫주차 팀 미니프로젝트가 끝나고 팀 재편성과 함께 Java 문법 종합반 강의를 듣기 시작했다.
오전부터 하루종일 계속 들었는데 이제부터 진짜 시작이라는 느낌을 주는것같이 겁나 어려웠다...허허허^^
그래도 이제 슬슬 TIL에 내가 배웠던 내용들과, 내가 이해한 내용이 맞는지 매치하는 과정 등을 적어보면 좋을 것 같아서 오늘부터 시작해보려한다.
*JVM(Java Virtual Machine)은 직역하면 자바 가상 머신이란 뜻으로, Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 역할을 한다. 쉽게 이해하기 위해 침대 토퍼의 역할이라고 생각하면 된다. 어떤 종류의 바닥이든 상관없이 토퍼를 깔면 토퍼가 바닥이 되는 것과 같다고 생각하자.
*JRE(Java Runtime Environment)는 자바 실행 환경이라는 뜻으로 Java 프로그램을 실행"만" 시키는 역할을 하고, JRE .class 파일만 실행이 가능하다.
*JDK(Java Development Kit) 자바 개발 키트는 JRE로 실행이 불가능한 .java파일을 javac 명령을 내린 뒤 실행가능한 .class로 변환시켜 줄 수 있다.
Java 앱은 실행되면 일단 바로 클래스의 메인 메소드를 실행시켜야한다. 이것은 JVM의 기본 약속이다.
코드를 풀어서 해석해보면
첫째줄 > public은 공공의 라는 뜻이므로, 외부에서 실행가능하다고 알려주는 구간이고 class는 객체를 만드는 "나 클래스야!" 라고 선언한 부분임. Main은 그 클래스의 이름이고, 파일명과 일치해야한다. 그래야 코드 변환했을때 .class랑 일치하기 때문이다!!
둘째줄 > public은 첫째줄의 퍼블릭이랑 똑같음. static은 바이트코드로 변환할때 정의되는 메소드 표기이다. void가 위치한 자리는 원래 output(결과) 자리인데 보이드 뜻을 직역하면 '공허한' 이기 때문에 비어있는 상태다~ 라는것. (String[] arges)는 두가지가 합쳐져있는 것인데 String[] 랑 arges가 합쳐진것이다. 스트링 자리는 데이터 타입을 말하는것이고, args는 이름 자리이기 때문에, 사용자가 아무것이나 지정해도 되는 부분이다.
위 내용을 기반으로 저장공간의 선언과 값의 저장을 배웠고,
변수(변하는 저장공간)와 상수(변하지 않는 저장공간)
변수의 타입들 {기본형 - 논리형(boolean) 문자형(char) 정수형(byte / short / int / long) 실수형(float, double), 참조형 - 문자열(String), 그 외(Object / Array / List), 래퍼 클래스} 을 배웠다.
변수 타입들을 이해하고 나만의 방식으로 적어보자면
<기본형>
논리형 - True & False 값만 저장
문자형 - 'A', 'B' 같이 문자 하나만 저장
정수형 - 소수점 없는 정수 형태의 숫자
실수형 - 소수점 있는 실수 형태의 숫자
<참조형>
문자열 - '아파트, 'google' 등 문장을 저장
그 외 - 단일 저장공간에 담을 수 없는 값을 저장
<래퍼 클래스>
박싱 - 기본 > 래퍼클래스 로 감싸는 것 (포장)
언박싱 - 래퍼클래스 > 기본 으로 가져오는 것 (개봉)
으로 정리할 수 있을 것 같다.
변수 타입 바꾸기(형변환)도 배웠다. 이 부분이 가장 힘들었다고 생각되는데, [정수&실수&문자] 들을 서로의 값으로 변환하는 것을 말한다.
크기가 작은 타입에서 큰 타입으로 형변환 하는 것을 자동 형변환이라 하고 반대로
크기가 큰 타입에서 작은 타입으로 형변환 하는 것을 강제 형변환이라고 한다.
자동 형변환은 손실되는 값이 없이 변환되지만, 강제 형변환은 손실되는 값이 생기기 때문에 개발자가 선택하는 안목이 있어야한다.
예를 들어, 크기가 작은 타입인 정수 int 타입의 변수 3에서 크기가 큰 타입인 실수 float 타입으로 변환한다면, 3.0이 된다.
하지만 반대의 경우, 크기가 큰 타입인 실수 float 타입의 변수 3.8에서 크기가 작은 타입인 정수 int 타입으로 변환한다면 소수점 아래자리가 손실되면서 3으로 변환될 것이다.
이렇듯 변환을 할 때도 타입의 크기를 알아야하는 부분에서 힘들었던 것 같다.
아직도 정확히 이해되진 않았지만 반복해서 듣고 연습해보며 확실히 적립해야겠다.
마지막으로 1주차의 숙제를 해결해 봤다.
위 사진은 숙제(문제)이고, 아래는 내가 만든 코드이다.
중간에 형변환 부분과 출력 title부분에서 막혀서 혼자 고민하다가 팀원들이 도와준 부분이 있어서 온전히 나 혼자 짰다고 하기엔 무리인 코드이지만, 2번째 듣는 시간에는 내 머리속에서 나올 수 있을 만큼 공부해서 해내고싶다. (2023.10.12.21:42)
'일기' 카테고리의 다른 글
2023.10.16. (0) | 2023.10.16 |
---|---|
2023.10.13. (2) | 2023.10.13 |
2023.10.11. (0) | 2023.10.11 |
2023.10.10. (0) | 2023.10.10 |
2023.10.06. (0) | 2023.10.06 |