리터럴(literal) : yes or no. 문자 .숫자 등의 변수에 넣을려는 값을 뜻하며 엄밀히는 값 자체에서도 데이터 타입을 유추할수 있도록 표현된 것을 뜻합니다. 0.31은 double로 ""은 문자열 , ''은 char , 0x, 354f , char d= 42 에서 42의 값을 말 합니다.
그렇기 때문에 리터럴에는 변수와 상수에 들어가는 값 을 구분할수 없습니다.
상수풀
위에서 정리된 것처럼 한번 탑제되면 프로그램이 종료 될때까지 . 메모리에 저장되는 특징을 가지고 있는데.기존의 변수의 생명주기는 메소드 내부에서 선언했을때 내부에서 생명주기가 끝나서. 메모리에서 소멸하지만.상수는 상수풀에 따로 저장되어 메소드가 종료되어도 계속 사용할수 있다고 해요.저장되는 공간은 Class와 같은 공간인데 Permanent area(고정영역)에 저장된다고 합니다.
초창기에는 나라별로 스스로의 문자에 맞는 문자 세트를 갖고 있었다. ( 대한민국 euc-kr )
각 국의 문자세트를 표준화된 코드표로 정리하고, 웹상의 각국의 문자를 표현할때 문제가 없도록 하기 위해 나온것이 유니코드 :utf-8 , urf-16 입니다.
utf-16 : 2바이트 (16비트 : 2의 16승) 이며 1바이트는 아스키 코드와 호환이 됩니다. 2바이트의 경우에는 유니코드만 호환이 되지만 1바이트주소 부분은 아스키코드와 완전하게 호환됩니다.
utf-8 : 1~ 4바이트로 유동적으로 문자를 인식해서 문자 세트에 맞는 디코딩을 지원 . 통신에서 표준으로 사용하고 있습니다.
문자 타입의 값 입력
'A' : 2byte (char타입으로 저장 됩니다)
"A" : 문자"열" (저장 데이터의 가장 마지막에 문자열의 끝을 나타네는 Null char가 존제합니다)
char 에 들어가는 byte값 이내의 정수를 입력하면 . 따로 인코딩 절차가 없이 저장 되고.
출력시에는 글자가 디코딩 됩니다.
강의 내용 체크
※인코딩이 다르면 이상한 문자가 출력되는 이유가 혹시 이런건 아닐까? 라는 추측에 대해서 검증
아스키 코드 0100 0100
유니 코드 0001 0200 0100 0100 (2바이트)
에서 유니코드의 앞부분 0001 0200이 없다면 재대로 표현 되지만. 아닐경우 엉뚱한 아스키 코드의 값이 디코딩 되는것 인지 여러 커뮤니티에서 질문글을 등록해 놓고 답변을 종합해 보고 있습니다.
※ 커뮤니티 에서 없으면 문제세트 시트를 보고 . 디코딩 문자 세트 설정을 바꾸면서 테스트 해보면 될것 같습니다.
커뮤니티에서 얻은 답변
character set과 encoding을 구분해서 생각하셔야 합니다.
https://en.wikipedia.org/wiki/List_of_information_system_character_sets
뭐 시간나시면 ascii EBCDIC 같은거 알아두시면 상식에 도움이 되구요.
unicode는 ascii를 확장하도록 설계되어 ascii의 문자들은 unicode에서 같은 값을 가지도록 되어 있습니다. 인코딩(utf-8 같은)을 거쳐도 그 값이 유지되며(정확히는 같게 할 수 있고 일부러 다르게도 되긴 합니다만 패스) 따라서 ascii character set의 문자들은 ascii든 utf-8이든 디코딩을 거치지 않아도 같은 값이라 별 문제없이 표현 됩니다.
euc-kr이나 iso-8859 같은 mbcs 방식도 ascii에 대해선 같은 이유로 문제가 없지만 나머지 영역은 디코딩 후 코드페이지를 찾으면 같은 글자에 대해 unicode나 각각의 문자셋은 다른 값을 가지기 때문에 다른 디코딩과 문자셋을 사용하면 외계어로 나오게 되는 것입니다.
참고로, utf-8이나 많은 멀티바이트 시스템들은 ascii에 포함되지 않은 문자들에 대해선 인코딩 최종값이 ascii 값과는 다르게 되도록 설계하며(첫 비트가 1입니다) 따라서 그런 글자들을 그냥 ascii로 보면 아주 박살이 나서 보이도록 되어 있습니다. 하지만 각각의 문자셋들끼리는 그런 게 없으므로 "뷁" 같은 이상한 글자로 보이는 경우가 허다합니다.
09. 자료형(data type)- 논리형과 자료형 없이 변수 사용하기
강의 내용 정리
자료형을 지정하지 않은 변수 만들기 (int, String 같은 지정된 데이터 타입을 사용하지 않기)
var 타입 : 지역변수 (로컬)로서 생성하고 사용할수 있는 호환용 데이터 타입
어떤 값(숫자,문자,boolean)을 넣어도 자동으로 값에 적합한 데이터 타입을 확안하여 저장되는 타입.
버전 10부터 사용 가능합니다.
자바스크립트나 파이선등의 유연한 변수타입을 갖고 있는 특징이 컴파일 언어에 적용된 경우에 해당합니다.
여기서 잠깐 파이선과 자바스크립트 같은 컴파일을 하지 않는 언어를 스크립트 언어라고 합니다.
var 사용법에서 스크립트 언어와 다른 점은 처음 데이터를 넣을때. var 변수의 타입이 정해 지기 때문에. 다른 타입을 한번더 넣으면 타입 오류가 발생하게 됩니다.
5. 자바에서는 자료구조가 클래스(이미 만들어진 기능)에 의해 구현이 되도록 유도 되고 있어요.
프로그램의 퀄리티를 높일수 있는 자료구조가 내부적으로 어떻게 구현되어있는지 훈련 합니다.
7. 알고리즘 학습으로 기본 실력을 갗출수 있도록 학습
※ 많은 전문가들이 알고리즘 감각을 훈련하는것으로 통해 버그가 발행 했을 경우 찾는 속도가 높아진다고 하네요.
※ 자바란 무엇인가요?
자바의 특징
1. 자바는 엄청 안정적인 언어를 목표로 태어난것이 아닐까 싶을정도로 안정적입니다.
2. 플렛폼에 영향을 받지 않습니다. 다른 언어의 경우에는 컴파일(OS, HW와 직접적으로 대화하는 언어화) 되어있는 실행코드가 OS에 따라서 다르기 때문에 코드를 각각 OS에서 컴파일을 따로 진행해야 하지만. 자바의 경우에는 바이트코드(컴파일된 코드)가 가상머신 위에서 작동 되고 가상머신이 OS에 따라서 다른 실행 코드를 갖고 있게 중계 역활을 하도록 제작되었기 때문에 다양한 플렛폼에서 작동 됩니다.
3. 객체 지향언어 입니다.
절차지향언어(대표적으로C) 는 시간의 흐름의 순서대로 작동됩니다.
객체 지향언어는 회원 > 상품 > 주문 > 배송 간의 자료가 서로의 방향으로 이동 하면서 비 순차적으로 작동 됩니다.
연동되어있는 다른 훌륭한 프레임워크를 사용할수 있습니다.
단어 JRE를 설치하면 JVM이 설치 되어있고. JDK에는 개발에 유용한 도구들이 많이 포함 되어 있습니다.
자바의 탄생 원인
C와 C++에서 포인터로 메모리관리가 쉽지 않아. 다운될 확률이 높았기 때문에 메모리가 자동으로 관리되는 기능이 탄생함. 모호한 부분도 전부 배제함. 플랫폼마다 소스 코드가 동일하게 돌아가지 못하는 결과로 파편화되어 관리가 부실해지는것을 방지.
자바에 대한 오해
과거에는 성능에 대한 이슈가 있었지만. 현제에는 속도에 대한 이슈는 사라졌다.
Write once, run anywhere (WORA)
자바가 어떤 장비에서도 개발될 수 있고, 표준 바이트코드로 컴파일되고, 어떤 JVM에도 실행될 수 있음을 의미한다. HW적으로도 JVM칩, 인터프린터는 표준화 되어 있다
자바의 활용
웹서버 구현
안드로이드 프로그래망
게임 프로그래밍
강의 내용 교차 검증
1. 자바가 작동될수 있는 환경 : JRE 라고 합니다.
웹 페이지(JSP) - > jre의 도움을 받아서 자바 문법으로 변환되어실행 됩니다.
임베디스 or 마이크로 프로세서 - > 32bit로 작동할수 있지만. 실시간 으로 동작하는 시스템에서는 메모리 효율이 좋지 않습니다.
! 이클립스를 설치하기 전에 자바가 설치가 되어 있어야 이클립스가 자바를 인식해서 오류가 나지 않아요.
! 코드를 생성하는 단계 까지는 이클립스내에 JRE아 플러그 인으로 들어가 있어서. 코드 작성과 확인은 할수 있어요.
2. 개발자는 java SE (스텐다드 에디션)을 다운 받으시면 되세요.
3. 유료화 된 이후 에는 JRE는 8 버전까지 무료로 사용할수 있고. java와 JRE를 따로 설치하는 절차가 생겼습니다.
강의 내용 교차 검증
1. 자바의 유료화정책
! 이전부터 java는 한국에서는 무료라는 인식이 있었지만 . 무료 였던적은 없었으며 JDK(개발도구)서비스 중에서 기술지원을 받을수 있을수 있는 모델이 1회 구매로 영구사용이 가능한 서비스의 비용 모델이 매달 비용을 지불하는 구독 모델로 변화한 샘이다. 기본적인 JDK와 java사용은 무료 이기 때문에 변한것은 기술지원 서비스의 비용 모델이며. JDK에는 두가지 모델이 있는데 이전부터 유저들이 무료로 사용해 왔던 JDK(openJDK)영역은 기존의 무료정책을 유지하며 오라클에서 기술 지원을 받을수 있는 유료 JDK 모델은 오라클JDK로 이름이 변경 되었다.
데스크탑에서는 2달러 50센트, 서버 25달러로 사용 가능하다.
03. 자바 첫 프로그램 만들고 실행하기
강의 내용 정리
1. 페키지 이름은 전부 소문자로 , 클레스는 첫글자를 대문자로 만드는것 표준 이에요.
2. 자바가 구동 되는것은 클라이언트 보다는 서버측에서 구동 되는 경우가 어마 무시 ~ 하게 많아요.
3. main은 이클립스로 학습하는 과정에서 구동을 목적으로 사용하며 . 윕 서버에서 활용될때는 main없이 구동되는 경우도 많아요.
4. 저장 하면 바로 자동으로 컴파일 되도록하기 -> project - > build automatically
5. 하나의 java파일에 여러개의 class가 있을수 있는데. 여러개 중에서 public 은 하나만 있어야 합니다. (자세한건 나중에)