일주일 교육의 마지막날 금요일이다. 오늘도 어김없이 오전출근후 빠르게 밥을먹고 교육에 들어왔다. 사실 예전부터 내가 일하는 오전동안 공부를 하는 사람을 생각하면 내가 이러다 늦게 성장하는 거 아닐까 했지만, 오늘 5시 마인드컨트롤 시간에 다른 사람과 나를 비교하지말고 전날보다 성장한 나를 비교하라는 말을 듣고 , 마인드 셋을 하는 시간을 가졌다.
오늘의 keyword는 java , jdk, jvm , jit, 변수, 메모리, 상수, 메서드, String, Stringtokenizer, Stringbuilder ..
처음 시작하면서 우리가 coding을 할때의 흐름도에 대해서 보게 되었는데,
흐름도.
컴퓨터가 데이터를 처리하는데 -> 데이터를 ram에 저장 -> 메모리공간확보(우리가 변수 선언)-> 몇 byte할당? -> 데이터의 종류(type)에 따라 다르다.
memory -> memory shell -> 16진수의 고유한 번호를 가지고있다. 즉 식별이 가능하다.
그 주소를 메모리 주소라고한다 ~
사실 java를 배운다고 했을 때 그래도 웬만하면 다 알겠지~? 했는데 이런 지식들을 하나도 몰랐다는 사실.. 더욱 분발해야겠다고 생각했다.
이 것을 내가 java intellij 로 코딩할때로 대입해서 설명해주셨는데
사람들이 메모리 주소로 코딩을 하게되면 식별하는 것이 쉽지않고 오류가 생길 수 있기때문에 각 메모리주소에 변수명을 지정하여 사용한 다는 것을 깨알로 알게 되었고, 그 변수의 DATA TYPE에 따라 다른 BYTE를 할당한다는 것을 설명해주셨다.
JAVA는 oop언어로 객체지향을 위해 만든 언어다 운영체제에 영향을 안받고, 함수형 프로그래밍 지원, 자동 메모리 관리등
이러한 이점이 있어서 한국에서 아주 많이 쓰는 프로그래밍 언어라고한다.
java를 실행 시키기 위해서는 jvm이 있어야 하는데 자바 버추어 머신이다. 영어몰라서 안쓰는건 아니다.
이 jvm이 java의 코드를 해석해 실행시키기 때문에 운영체제에 영향을 받는 다른 언어와 다른 것이다.
JRE 자바 실행을 위한 것
JDK 자바 개발을 위한 것
이라는 간단한 설명을 토대로 JRE에는 JVM이 포함 JDK에는 JRE포함 그렇기 때문에 자바를 실행만 시킬 것이 아니라면 JDK가 있어야한다.
JVM에서 실행할 경우 느릴 수가 있는데 JIT 개발로 이를 보완하고 있다고한다. 사실 JIT가 뭔지 몰랐다.
jit 또는 동적번역(dynamic translation)은 프로그램을 실제 실행하는 시점에 기계어로 번역하는 컴파일하는 기법이다 .
라는 걸 찾아보고 아 이래서 개발하면 속도가 빨라질 수 있겠구나 하고 인지했다.
TYPE 에는 다양한 TYPE들이있고
byte(1) -> short ,char(2) -> int(4) -> long(8) -> float(4) -> double (8)
뭐 이렇게 형변환 가능하다.
final은 상수이고 변하지 않는 값들을 사용하기 위해 쓴다.
final double pi = 3.14 이렇게 선언하고 3.14를 다른값으로 바꾸고싶다면
final double pi = 3.525 위에꺼를 지우고 밑에껄로 만들어주면 되기 때문 ㅋ
double pi =3.14;
pi = 3.123213; 이랬으면 하나하나 찾아가지고 고치기도 쉽지않다.
간단한 메서드의 구조에 대해서 보았고,
String은 클래스이지만 TYPE으로 사용되어 많은 메서드를 제공한다고 배웠다.
Stringtokenizer -> 공백을 기준으로 잘라준다.
Stringtokenizer stringtoken~~ = new Stin~(str:문자열);
이렇게 선언하고. stringtoken.countTokens()하면 토큰의 개수
while(token~.hashmoreTokens())토큰을 나눌 것이 있으면 1 없으면 0을반환
.nexttoken();하면 토큰이 잘린다.
다음은 Stringbuilder와 Stringbuffer이다
.append
.delite(index,index);
.deliteChar();
.insert(index,"?");
라는 기능들을 사용하는데 그럼 이 두개가 똑같은 것 아닌가? 하고 구글에 검색해 보았는데 구글링 한 결과는~?~?~?~?~?
stringbuilder은 멀티쓰레드 사용시 단점이 크고 씽글 쓰레드 사용시 이점이 크다는 것을 알게되었고
Stringbuffer은 멀티쓰레드 사용시 장점이 크다는 결과를 도출 ㉻㉻㉻
다음은 마지막으로 연습문제들을 pair와 함께 소통하면서 풀어봤는데 아주 기본적인 문제라 쉽게 해결했다.
그래서 페어와 남는 시간에 알고리즘 문제 하나를 풀기로했고, 푸는 동안 시간이 아주 후딱간다 열정이 있는 pair여서 배워가는게 많은 것 같다 앞으로 pair와 알고리즘을 풀어서 서로 설명해주기로 했고, 소통이 아주 잘되는 것 같아서 좋았다.
다음주도 화이팅