1. 간단한 용어 정리
- 데이터 : 컴퓨터가 정보를 담는 자료값
- 데이터 타입(자료형) : 데이터의 유형
- 자료구조 : 데이터 여러개를 분류해서 담을 수 있는 분류통
- 문맥 : 문맥이라 함은 개발언어로 표현한 프로그램의 동작 흐름을 의미합니다. 이케아 가구 조립 설명서, 밀키트 요리 레시피에 조건에 따른 문백이 있듯이 프로그램도 문맥을 가지고 있습니다.
- 메서드 : 데이타와 문맥을 감싸는 포장지.
- 공통 실행환경 : 여러 기기의 운영환경에서 실행 할 수 있도록 판을 깔아주는 실행 환경.
- 운영 체제 : 기기가 프로그램을 실행시키는 운영환경(Window, iOS 등)
2. Java 를 배워야 하는 이유.
- Java는 공통 실행환경이 있어서 여러 기기에서 실행 가능.
- 앱 개발에 적합하며, 여러 기기의 운영 체제에서 시랭 가능,
- Java는 자바는 세상과 닮아있는 개발언어라 코드를 이해하기 쉽고 유지 보수 가능.
- 클래스를 통해 객체를 만든다.
- 안정성이 높아서 프로그래밍 오류를 방지하고 보안상 안전.
- 변환기가 먼저 오류를 체크하며 지원하는 보안 기술이 많다.
- 대규모 앱 개발이 가능.
- 네트워크 및 DB 연결 및 통신 등의 작업을 처리하는 API 제공.
- 배우면 다양한 개발 도구와 라이브러리를 사용 할 수 있다.
3. JVM?
- 자바 가상 머신 ( Java virtual machine)
- 여러가지의 기기 위에 JAVA 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는 것을 의미.
- 바이트 코드 - Java 프로그램 변환코드
- 내가 작성한 코드가 운영체제가 읽을 수 있는 코드로 Java 컴파일러가 변환한 코드
- 인터프리터 - java .class 코드 해석기
- 운영체제가 읽은 바이트 코드를 기기가 실행할 수 있는 기계어로 번역
- JIT 컴파일러 - 빠른 java .class 코드 해석기
- 인터프리터의 효율을 높여주는 서포터 해석기
- 메모리 영역 - java 데이터를 저장하는 영역
- 운영체제로 부터 JVM이 할당받는 메모리 영역
- 클래스 로더 - java .class 바이트 코드를 메모리 영역에 담는 운반기
- JVM으로 class를 불러와서 메모리에 저장함
- 가비지 컬렉터 - java 쓰레기 청소기
- 메모리 영여게서 안쓰는 데이터를 주기적으로 흡수해가는 청소기
4. 래퍼 클래스 변수.
- 래퍼 클래스(Wrapper Class) 라는 말 그대로 "기본형 변수를 클래스로 한 번 랩핑(감싸는) 변수" 라고 생각.
- 기본형 변수 타입명에서 첫글자를 대문자로 바꾸어서 래퍼 클래스를 정의해주었다.
- 박싱 VS 언박싱
- 기본 타입에서 래퍼 클래스 변수로 변수를 감싸는 것을 "박싱" 이라고 부르며
- 래퍼 클래스 변수를 기본 타입 변수로 가져오는 것을 "언박싱" 이라고 부른다.
// 박싱 VS 언박싱
// 박싱
// Integer 래퍼 클래스 num에 21의 값을 저장.
int number = 21;
Integer num = new Integer(number);
// 언박싱
int n = num.intValue(); // 래퍼 클래스들은 intValue() 같은 언박싱 메서드들을 제공해줍니다.
5. HomeWork - 1_week (요리 레시피 메모장 만들기)
- 입력값
- 내가 좋아하는 요리 제목을 먼저 입력합니다.
- 요리 별점을 1~5 사이의 소수점이 있는 실수로 입력해주세요. (ex. 3.5)
- 이어서 내가 좋아하는 요리 레시피를 한문장씩 10문장 입력합니다.
- 출력값
- 입력이 종료되면 요리 제목을 괄호로 감싸서 먼저 출력합니다.
- 이어서, 요리 별점을 소수점을 제외한 정수로만 출력해줍니다.(ex. 3)
- 바로 뒤에 점수별점을 5점만점 퍼센트로 표현했을 때 값을 실수로 출력해줍니다. (ex 60.0%)
- 이어서 입력한 모든 문장 앞에 번호를 붙여서 모두 출력해줍니다.
완성 코드 )
import java.util.Scanner;
public class homework_1 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("제목을 입력하시오 : ");
String title = scanner.nextLine();
System.out.println("별점을 주세요 (1~5)");
String stars = scanner.nextLine();
float floatStars = Float.parseFloat(stars);
System.out.println("내용을 입력하시오.");
String text1 = scanner.nextLine();
String text2 = scanner.nextLine();
String text3 = scanner.nextLine();
String text4 = scanner.nextLine();
String text5 = scanner.nextLine();
String text6 = scanner.nextLine();
String text7 = scanner.nextLine();
String text8 = scanner.nextLine();
String text9 = scanner.nextLine();
String text10 = scanner.nextLine();
int intStars = (int)floatStars;
System.out.println("[" + title + "]");
System.out.println("별점 : " + stars + "(" + intStars * 100 / 5.0 + "%)");
System.out.println("1. " + text1);
System.out.println("2. " + text2);
System.out.println("3. " + text3);
System.out.println("4. " + text4);
System.out.println("5. " + text5);
System.out.println("6. " + text6);
System.out.println("7. " + text7);
System.out.println("8. " + text8);
System.out.println("9. " + text9);
System.out.println("10. " + text10);
}
}
1주차에선 아직 포문 배우지 않아 사용하지 않았다.
문제에서도 10문항이라고 주어진 것을 보아 그냥 복붙으로 하라고 의도한 것 같았다.
숙제 도중 문제가 발생.
- float stars = sc.nextFloat(); 으로 별점을 받고 엔터를 치는데 엔터가 다음 nextLine으로 입력되어 text1이 빈 칸으로 출력.
- 해결 방법_1 : nextFloat(); 아래에 nextLine(); 을 하나 만들어주기
- 해결 방법_2 : String stars = scanner.nextLine(); float floatStars = Float.parseFloat(stars); 으로 새로 작성.
- 순서만 반대로 되었다고 이해하면 좋음. 처음 숫자를 문자열로 받고 그 다음 형변환을 통해 다시 float으로 변환.
'TIL > Java' 카테고리의 다른 글
TIL 2024-10-16 (Java 종합만 문법) (2) | 2024.10.16 |
---|---|
TIL 2024-10-15 (Java 문법 종합반) (2) | 2024.10.15 |
TIL 2024-10-14 (Java 문법 종합반) (2) | 2024.10.14 |
TIL 2024-10-11 (Java 문법 종합반) (0) | 2024.10.11 |
TIL 2024-10-10 (Java 문법 종합반) (0) | 2024.10.10 |