
운영 체제에 독립적임 (JVM을 설치할 시..)
객체 지향 (이후 추가 게시글 작성 예정)
사용 난이도 낮음
Garbage Collection 가비지 컬렉션 사용
Java 실행되는 과정
Code 작성 -> *.java 파일 생성 -> JavaC Compile(*.class 파일 생성) -> 실행
Java가 실행되려면 반드시 Class 파일이 있어야함
Teacher: 램에 작업이 올라가고 cpu가 연산을 함. 다른 언어의 경우 램에서 쓸 수 있는 개발자의 영역이 있고, 개발자가 직접 객체를 소멸시키고 할당해야했음. 판단해서 따로 처리하기가 어려웠는데 자바에서 좋은 메모리 관리 기능이 나옴
Temi: 가비지 컬렉션이 있는 것은 알았으나, 따로 할당 해제를 할 필요는 없는 것인지? 아예 신경을 안쓰면 안될 것 같음. 자바 개발자들이 따로 하는 관리는 없나?
Teacher: 하드와 관련된 파일 다운로드 자원같은 경우는 따로 닫아줄 필요는 있음. 가비지 컬렉션은 개발자 편의성을 높여주는 기능이다.
Java를 실행하기 위한 가상 기계로, 운영체제에 종속적
Java code -> Java compiler -> Java byte code
byte code(class file)을 해석하고 실행

컴퓨터에는 JRE가 기본설치 되어있어 따로 설치없이 Java 실행이 가능
런타임 RunTime - 프로그램이 시작되는 것
해당 키트가 설치되어있어야 Java 언어를 사용하여 개발이 가능

자바에 대한 기본 학습을 할 때 사용할 예정
자바 응용 프로그램을 개발할 때 사용하는 소프트웨어 개발 키트
대규모 확장 가능하고 안정적인 네트워크 응용 프로그램을 만들 수 있게 설계됨
전자 기기나 기계에 들어가는 임베디드 시스템용 키트
메모리에 값을 기록하기 위한 공간
가독성 증가
재사용성 증가로 인한 코드량 감소
유지보수 용이
메모리 공간에 데이터 저장할 수 있는 공간 할당
변수에 대입되는 값 자체 (아래 예제에서 10)
e.g. int a = 10;
`` e.g. ageOfVampire ``
`` e.g. AgeOfVampire ``
Temi: 한글 변수명이 가능하다면 간단하게 개발할 때는 슈도코드처럼 이용해도 될 것 같은데 괜찮은지?
Teacher: 별로.. 영어 추천
타입에 따라 크기 다름
원시 값(기본 값) 자체 저장
e.g. 10을 저장했으면 10이 있음
숫자로 저장됨
8자리 이상은 반올림하고 끝냄
변하지 않는 값
스네이크 케이스 사용
e.g. ERROR_404_FAIL
**
주소(메모리 공간 주소)
실질적인 값은 없음
Temi: 이모지의 경우 유니코드에 속하는가?
Teacher: char 표를 쓸거고 유니코드 일 것? (더 찾아봐야할듯)
char alpha;
alpha = '1';
alpha = 1;
alpha에 들어간 char'1'과 int 1은 다르다.
데이터 저장 최소 단위
컴퓨터가 정보를 처리하는 기본 단위
8개의 비트
문자의 최소 단위


작업을 하다가 양수 -> 음수로 변했을 때 기본 범위를 초과(오버플로우) 판단하고 다른 단위로 변경 필요
앞단위까지 초과해서 데이터 오버플로우가 되면 데이터 자체가 잘못될 수 있음
맨 앞자리 부호 비트가 0일때 양수, 1일때 음수
데이터 자료형을 바꾸는 것 (boolean 제외)
데이터 소실이 발생할 수 있음. 감수하고 강제 변환
//형변환
//연산할때 피연산자의 타입이 동일해야함
//자동형변환하여 실행함
int num = 10;
double num2 = 20.5;
int cNum = 0;
double dResultNum = num + num2;
System.out.println("dResultNum: " + dResultNum);
//작은 크기의 자료형에서 큰 크기의 자료형 변수로 저장하기
float fNum = num;
long lnum = 100L;
fNum = lnum;
System.out.println("fNum: " + fNum);
char ch = 'A';
cNum = ch;
System.out.println("Change A Num, cNum: " + cNum);
//강제 형변환
int iResultNum = num + (int)num2;
System.out.println("iResultNum: " + iResultNum);
int num3 = 66;
System.out.println("66 char casting: " + (char)num3);
//평균값 계산
int kor = 45, eng = 55, math = 83, coding = 51;
System.out.println("result: " + (kor + eng + math + coding)/4.0);
dResultNum: 30.5
fNum: 100.0
Change A Num, cNum: 65
iResultNum: 30
66 char casting: B
result: 58.5
Temi: boolean은 0과 1로도 표현되지 않는가? 정수형으로는 안되나?
Teacher: Java는 안되고 c나 c++계열은 가능함
적절한 자료형과 변수 네이밍을 사용하여 아래 내용을 출력할 것
문자열의 총 길이를 출력할 것
문자열의 4번째 5번째 문자를 출력할 것
나의 이름은 ㅇㅇㅇ이고 나이는 ㅇㅇ살이고 키는 000.00cm
주소는 ㅇㅇ시, 성별은 ㅇ 전화번호는 010-0000-0000이다.
String userName = "ㅇㅁㅁ";
String userHomeAddress = "어쩌고123번길";
String userPhoneNumber = "010-0000-0000";
char userGender = 'F';
int userAge = 91;
double userHeight = 199.99;
String userInfoHalfF =
"나의 이름은 " + userName +
"이고 나이는 " + userAge +
"살이고 키는 " + userHeight + "cm";
String userInfoHalfB =
"주소는 " + userHomeAddress +
", 성별은 " + userGender +
" 전화번호는 " + userPhoneNumber + "이다.";
String userInfoResult = userInfoHalfF + userInfoHalfB;
System.out.printf("* userInfoResult: %n%s%n%s%n", userInfoHalfF, userInfoHalfB);
System.out.println("* userInfoResult length: " + userInfoResult.length());
System.out.println("* userInfoResult charAt(3), charAt(4): "
+ userInfoResult.charAt(3)
+ userInfoResult.charAt(4));
* userInfoResult:
나의 이름은 ㅇㅁㅁ이고 나이는 91살이고 키는 199.99cm
주소는 어쩌고123번길, 성별은 F 전화번호는 010-0000-0000이다.
* userInfoResult length: 76
* userInfoResult charAt(3), charAt(4): 이름
내일 수업은 변수와 메모리 구조부터 시작한다고 한다~~

Java는 오늘 처음 배웠다. 기존에 학습했던 Lua와 비교되는 부분도 있어서 신기하기도했고
어떻게 컴파일 되는지, 어떤 식으로 나눠져있는지 처음 들었는데 이론 시간이 정말 재밌었다!
내일도 힘내서 해야즤 화이팅~~!
수업 내용 정리는 좋은거같은데 복습 개념이고 조금 더 도움되는 방법으루는 내용에서 조금 더 깊이 있는 부분까지 조사해보는걸 추천
~~실습 내용에서 컴파일 결과라기 보다는 실행 결과인듯 컴파일 결과 적구 싶으면 컴파일 된 내용을 적는게 맞음
~~
boolean 0 1은 왜 자바에서는 안되는지 c 계열은 가능한지 조사해서 같이 적는게 좋지 않을까
작업을 하다가 양수 -> 음수로 변했을 때 오버플로우 여기 부분 다시 보면 좋을거같아여 약간 개념이랑 거리가 있는 느낌..
자바는 c에 비해서는 고급 언어이지만 최근에 많이 사용되는 언어들보다는 저급 언어라서 사용 난이도가 낮다 같은 경우에는 뭐에 비해서 낮은지 같이 적으면 나중에 더 이해하기 쉬울거같음
가비지 컬렉션에 대해서는 따로 조사해서 같이 적어주는게 나중에 볼 때 더 좋을 거 같음
alpha에 들어간 '1' 이랑 1이 어떻게 다른지 같이 적어주면 이해하고 기억하기 더 좋을거같음