✏️ 0422
Java 문법 종합반 강의_1주차
4시 튜터님 면담
5시 개인과제 발제
Java 문법 종합반_1주차
Mingle Day 는 멀까? 노는 거라는데!
- Java 공부 방향
- Spring을 활용하기 위해서 Java 는 필수
- Java 문법을 배우고 익혀서 내 것으로 만들기
- 객체지향이 무엇인지 배워보고 정리하기 (필수)
- 챕터별 어떤 방향으로 공부해야하는지 확인
- Chapter 1
- Java 언어에 대해 이해하기
- JVM 에 대해서 이해하기
- 변수와 상수에 대해서 이해하기
- 변수를 담는 저장공간의 종류에 대해서 이해하고 사용법 익하기
- 저장공간 종류(변수 타입)간에 변환에 대해서 이해하고 사용법을 익하기
Java 언어
어디서나 동작 가능한 언어
객체지향 언어
공통 실행환경(JVM), 클래스, 객체
- Java의 특징
- 여러 기기의 운영 체제에서 실행 가능
- 코드의 이해와 유지 보수가 쉽다
- 안정성이 높아 프로그래밍 오류를 방지하고 보안상 안정
- 대규모 앱 개발 가능
- 다양한 개발 도구와 라이브러리 사용 가능
JVM ( Java Virtual Machine )
자바 가상 머신
여러 가지의 기기 위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것
- 바이트 코드
- Java 프로그램 변환 코드
- 작성한 코드가 운영체제가 읽을 수 있는 코드(바이드 코드)로 Java 컴파일러가 변환한 코드
- Java 컴파일러
- 작성한 Java 코드(.java 파일)을 운영체제가 읽을 수 있는 바이트 코드(.class 파일)로 변환하는 변환기
- 메모리 영역
- Java 데이터를 저장하는 영역
- Stack 영역(정적)과 Heap 영역(동적)으로 나눠짐
- Stack 영역 => 기본형 변수의 값, 참조형 변수의 주소값
- Heap 영역 => 참조형 변수(=주소형 변수)의 원값
JRE ( Java Runtime Environment )
자바 실행 환경
.class 파일만 실행 가능
JDK ( Java Development Kit )
자바 개발 키트
.java 파일들을 .class 파일들로 변환해주는 Java Compiler(javac) 기능 존재
JRE(JVM)의 기능을 포함
- JDK 디버깅 기능
- 코드들을 한 줄씩 객체와 메소드를 수행하면서 변수들도 변하는 과정을 볼 수 있도록 JDK는 코드를 따라가면서 변수를 볼 수 있는 디버깅 기능을 제공
- 코드 라인에 중단점을 설정하고, 디버그 모드로 프로그램을 실행하면 중단점의 코드 라인을 수행할 때 일시정지 되면서 변수들을 볼 수 있게 도와준다
New Project 를 만들면 처음에 나오는 코드를 해석한 내용
// 클래스
// public : (접근)제어자, public(공공의, 공통의), 메인 클래스 라는 애를 어디까지 접근하게 할 것이냐
// ※ 주의 : 클래스의 이름은 파일의 이름과 동일해야 한다
// -> 그래야 Main.java 파일을 Main.class 로 변환할 수 있다 (과정 생각하기)
public class Main {
// main 메소드
// 자바 프로젝트(앱)는, 제일 먼저 클래스의 main 메소드를 실행시킨다
// = JVM의 약속
// output
// static : 이 프로그램이 실행이 될 때, 무조건 실행되는 녀석임을 표현
// void : 메서드의 출력값의 데이터 타입, "아무것도 없다" -> 출력은 없다
// input
// String[] args : 매개변수 자리
// String[] : 입력에 대한 변수 타입 (문자)
// args : 변수명
public static void main(String[] args) {
// 우리의 playground!
// 객체 : 특성(속성, 변수), 행동(메소드)
// System 이라는 class 안에 있는 out 을 통해 println(출력) 메소드를 통해서
// 콘솔창이라는 () 안을 있는 내용으로 기능 실행
System.out.println("Our First Project!");
}
}
기본형
// 기본형
// (1) 논리형 : boolean
boolean flag = true;
System.out.println(flag); // true
// (2) 문자형 : char
char alphabet = 'A';
System.out.println(alphabet); // A
// (3) 정수형 : byte, short, int, long
byte byteNumber = 127; // -128 ~ 127 (1btye만 표현 가능, 8bit = 256)
short shortNumber = 32767; // -32,768 ~ 32,767
int intNumber = 10000; // -21억 ~ 21억
long longNumber = 123456789L;
System.out.println(byteNumber); // 127
System.out.println(shortNumber); // 32767
System.out.println(intNumber); // 10000
System.out.println(longNumber); // 123456789
// (4) 실수형 : float(4byte), double(8byte)
float floatNumber = 3.14f;
double doubleNumber = 3.14;
System.out.println(floatNumber); // 3.14
System.out.println(doubleNumber); // 3.14
변수 타입별 크기 순서(bit)
byte(1) -> short(2) -> int(4) -> long(8) -> float(4) -> double(8)
작은 크기의 타입이 큰 크기의 타입과 '계산'될 때, 자동으로 큰 크기의 타입으로 형 변환이 된다
참조형
// 참조형
// (1) 문자열 변수 : String
String helloWorld = "Hello World";
System.out.println(helloWorld); // Hello World
// (2) 배열 : Object, Array, List
int[] a = {1, 2, 3};
System.out.println(Arrays.toString(a)); // [1, 2, 3]
// 래퍼 클래스(Wrapper Class 변수)
int number = 21;
// Integer num = new Integer(number);
// => deprecated / 지원이 종료된, 사용하지 않는 방식 / 아래처럼 적어도 실행 가능
Integer num = number; // boxing
System.out.println(num.intValue()); // 21 // unboxing
⭐ 주의할 점, 문자열(String)을 쓸 때는 " " 사용 / 문자형(char)을 쓸 때는 ' ' 사용
1주차 과제
제목, 별점, 레시피(10행)을 입력하는 코드 짜기
강의에서 배운대로 굉장히 쉬웠다
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// .next() 를 사용할 경우, 띄어쓰기를 사용하면 다음으로 넘어간다
String title = sc.nextLine(); // 요리 제목 입력
float score = sc.nextFloat(); // 1 ~ 5 사이의 소수점이 있는 실수 별점 입력 (ex. 3.5)
String sentence1 = sc.nextLine(); // 레시피 내용 입력
String sentence2 = sc.nextLine();
String sentence3 = sc.nextLine();
String sentence4 = sc.nextLine();
String sentence5 = sc.nextLine();
String sentence6 = sc.nextLine();
String sentence7 = sc.nextLine();
String sentence8 = sc.nextLine();
String sentence9 = sc.nextLine();
String sentence10 = sc.nextLine();
int intScore = (int)score; // 별점 int 변환
float percent = intScore * 100 / 5;
System.out.println("[ " + title + " ]");
System.out.println("별점 : " + intScore + " (" + percent + "%)");
System.out.println("1. " + sentence1);
System.out.println("2. " + sentence2);
System.out.println("3. " + sentence3);
System.out.println("4. " + sentence4);
System.out.println("5. " + sentence5);
System.out.println("6. " + sentence6);
System.out.println("7. " + sentence7);
System.out.println("8. " + sentence8);
System.out.println("9. " + sentence9);
System.out.println("10. " + sentence10);
// 실행 결과
// [ 제목 ]
// 별점 : 4 (80.0%)
// 1.
// 2. ㄱ
// 3. ㄴ
// 4. ㄷ
// 5. ㄹ
// 6. ㅁ
// 7. ㅂ
// 8. ㅅ
// 9. ㅇ
// 10. ㅈ
}
}
코드에 이상은 없는 것 같은데 자꾸 score(별점)을 받고 다음 내용을 받을 때 줄바꿈이 들어간다
저걸 고치는 방법은 입력 받는 순서에서 socre 를 마지막에 받으면 해결되기는 하는데
왜 안되는 건지 궁금해서 찾아봤다
문제는 nextLine() 메소드를 사용할 때 발행한다
nextLine() 메소드는 줄바꿈(엔터)를 입력받기 전까지의 문자열을 반환하고 버리지 않는다!!
그래서 nextFloat() 메소드로 별점을 입력하고 줄바꿈(엔터)를 누른 후,
nextLine() 메소드를 호출하면 이전에 입력한 줄바꿈이 그대로 사용되어 빈 문자열을 반환하게 된다고 한다
어쩐지 nextFloat() 입력값을 적은 후에 줄바꿈(엔터) 말고 띄어쓰기를 사용해서
sentence1 을 적어봤는데 그럴 경우에는 잘 맞춰서 출력이 되긴 하는데
sentence1의 값 앞에 띄어쓰기(공백)이 존재하더라
그럼 별점 값을 받고 남아있는 줄바꿈(엔터)를 없애줘야 하는데
그건 다시 한번 nextLine() 을 사용해주면 된다.
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// .next() 를 사용할 경우, 띄어쓰기를 사용하면 다음으로 넘어간다
String title = sc.nextLine(); // 요리 제목 입력
float score = sc.nextFloat(); // 1 ~ 5 사이의 소수점이 있는 실수 별점 입력 (ex. 3.5)
sc.nextLine(); // 코드 추가, 줄바꿈 엔터 없애기
String sentence1 = sc.nextLine(); // 레시피 내용 입력
// 이하 동일
}
}
변수에 저장하지 않고 그대로 써버리면 없애버릴 수 있다
제대로 실행되는 것을 확인 가능!
Java 개인과제
5/1(수) 오후 2시까지 제출
개인 과제는 계산기 만들기!
발제 내용을 듣는데 과부화 온 탓인지 머리가 지끈거렸다
나만 그런가...? 어려웡 ㅠㅠ
가장 기억에 남는 건
⭐ 요구사항을 완료할 때마다 커밋을 꼭 남기는 것과
학습을 위해 소스 코드를 설명하는 주석을 작성할 것
Lev.2 까지만 제출해도 괜찮다고 했지만
이왕 하는거 Lev.3 도 도전해보고 싶다!
할수만있다면....
튜터님과 면담
면담일까 스몰 토크일까
면담에 더 가까운 것 같으니 면담이라고 하자
도움되는 말씀을 많이 해주셔서 기록하기로 했다
- ⭐튜터님들께 질문하러 가기 전에 한 번 확인해보기
- 질문을 할 때는 기본적으로 육하원칙 형식으로
- 이게 맞는지, 틀린지에 대한 질문은 그렇게 생각한 이유도 같이 말해보기
- 잘 모르겠는 것에 대한 질문은 그 내용에 대한 배경지식을 찾아보고 질문하기
- 해당 부분을 모르면 어떤 부분에 대한 지식이 부족하고 필요한지도 한번 물어보기
- 지금부터 질문하는 연습을 하면 나중에 반드시 도움이 될 것
질문하기 전에 생각하고 가면 좋으니 이 글을 본다면 추천한다 😊
'개발 일지 > TIL' 카테고리의 다른 글
[ #8 ] TIL (0) | 2024.04.24 |
---|---|
[ #7 ] TIL (2) | 2024.04.23 |
[ #5 ] TIL (0) | 2024.04.20 |
[ #4 ] TIL (0) | 2024.04.20 |
[ #3 ] TIL (0) | 2024.04.20 |