자바프로그래밍
-문자 리터럴
-2진수로 변환하는 방법:
ASC(amerian standard code for information interchange 미국정보교환표준부호),
ISO-8859-1, KSC-5601(완성형(한글)), 조합형, MS-949, Unicode, UTF-8
-변수 사용법
-jvm이 관리하는 메모리 영역 소개
-변수 선언, 변수에 값 할당
-Primitive Data Type 소개: byte, short, long, char, float, double, boolean
문자 -> 2진수 -> 전기신호
문자를 2진수로 바꾸는 규칙 = character set(문자 집합)
1. ASCII (7bit)
-문자를 7비트 2진수로 표현하는 식. 0~127, 총 128 상태 표현 가능
2. ISO-8859-1 (8bit)
0~255, 256 상태 표현 가능
ASCII + 알파
첫 비트에 따라 Latin 1~10 이 정해지고, 한 번에 여러가지 쓸 수 없음 (default : Latin 1)
3. KSC-5601 (16bit) /국제용어: EUC-KR/ 완성형
0~65535, 65536 상태 표현 가능
ISO8859 + 알파
초성,중성,종성으로 이루어진 완성된 한글문자에 대해 2진수 정의
전각문자/기호/자소/선문자 | 0XA180 ~ 0XAFF |
한글(2350자) | 0XB0A1 ~ 0XC9FF |
한자(한국에서 사용하는 일부) | 0XCA80 ~ 0XFDFF |
정의가 안 된 일부 문자는 메모리에 저장할 수 없었음(똠,똡) 윈도 95 나오기전까지 한글 표현에 한계 |
4. 조합형(16bit)
11172(19*21*27) + 알파
국제표준이 아님 ㅜ
5. MS-949 (16bit)
=EUC-KR(2350) + 알파 = 11172자 표현 가능
국가별로 임의 용도로 사용하라고 비워둔 영역(값)을 이용하여 추가 정의. => 국제 표준이 될 수 없음
(국가마다 비워둔 값 알아서 사용), MS 소프트웨어에서만 사용가능
6. 유니코드 Unicode, 국제표준 (16 bit) (=UTF-16, =UCS2)
ISO 8859-1 + 알파(모든 문자의 2진수 규칙 새로 정의)
Java에서 사용됨
32bit(4byte)까지 확장됨
메모리 낭비 및 기존 편집기 사용불가로 ,,, UTF-8 등장 !
7. UTF-8 (Universial Coded Character Set) UCS Transformat
Unicode 문자 -> 1 byte ~ 4byte로 재정의
기존 영어 유니코드 읽기 가능, 미래지향적(외계어까지 가능할둣)
인코딩(encoding) <--> 디코딩(decoding)
인코딩: 코드화한다. = 어떤 형식에서 다른 형식으로 바꾸는 모~든 행위 (문자 UTF 도 포함됨)
영상 -- > 압축파일
encoding software (=encoder) : H.264 / m pack
다시 압축파일 -- > 영상
decoding software (=decoder)
줄 바꿈 코드 (엔터)
\n = OA
PS C:\Users\bitcamp\git\bitcamp-study\myapp\app> javac -encoding UTF-8 -d bin/main src/main/java/bitcamp/myapp/App.java
PS C:\Users\bitcamp\git\bitcamp-study\myapp\app> java bitcamap.myapp.App
Error: Could not find or load main class bitcamap.myapp.App
Caused by: java.lang.ClassNotFoundException: bitcamap.myapp.App
PS C:\Users\bitcamp\git\bitcamp-study\myapp\app> java -classpath bin/main bitcamp.myapp.App
나의 목록 관리 시스템
-----------------------------
번호: 100
이름: 홍길동
나이: 20
재직여부: true
성별(남자(M),여자(W)): M
좌우시력: 1.5,/1.0
PS C:\Users\bitcamp\git\bitcamp-study\myapp\app>
변수 : 데이터를 임시 보관하는 메모리(RAM)
OS가 RAM을 관리하며 APP은 OS가 제공하는 영역의 메모리를 사용한다.
JVM의 경우 역시 OS가 제공한 메모리 영역 내에서 메모리 관리를 하며 JAVA APP 을 실행시킴.
JVM Stack 로컬 변수 (함수가 호출될 때 만들어짐) |
Heap instance 변수 (u라는 함수를 ,, 사용한다?) |
Method Area class 파일로딩(메서드 블럭, 명령코드) static 변수 +Constants Pool -문자열 & 숫자 |
변수 선언: 메모리에 값을 담을 수 있도록 메모리의 일정 영역을 확보하는 명령
int a ;
int = data type (메모리 용도)
a = variables 변수 (메모리 이름)
int
*정수 값을 담는 용도의 메모리
*크기는 4byte
값 할당(assignment) : 할당 연산자 "=" 사용
a = 100 ;
a : 변수, L-value
= : 할당연산자
100 : 값, R-value
L-value : 반드시 변수여야함.
R-value : 리터럴, 변수, 표현식
Data 타입
Primitive data type(기본 데이터 타입) / class type
Primitive data type(기본 데이터 타입)
정수 | byte (1 byte) short (2 byte) int (4 byte) long (8 byte) char (2 byte) |
부동소수점 | float (4 byte) double (8 byte) |
논리 | boolean (4 byte or 1 byte(배열) |
App이 H/W를 사용하는 매커니즘
OS 에서 H/W를 제어하는 모든 기능을 가지고 있음.
JAVA App 실행 과정
1. Java app 에서 JVM API 호출 // System.out.println("Hello"); 2. JVM에서 OS의 GUI API를 호출 3. OS에서 HW제어 통해 모니터 출력 ^_^ => JAVA App에서 스스로 화면 출력하는 것이 아닌, 화면 출력 function을 통해 출력. => App에서 HW로 다이렉트 접근 방식은 없음. (해킹이 이런식) => Java를 사용하는 경우 JVM이 OS를 call 하기 때문에 OS호출용 함수를 알 필요가 없음 (추상화 개념, 리얼은 JVM이 OS호출) |
//
c, c++은 개발자가 직접 메모리 관리를 해야한다. (확보 & 해지)
자바, c#, 파이썬 등은 시스템에서 알아서 메모리를 확보한다 (garbage collector)
인건비를 절약하고 개발자 실수를 줄일 수 있고 메모리 안정성이 있어 관리, 속도가 느려도 java를 사용한다.
프로그래밍 언어의 변천사
1. 절차적 프로그래밍 : 명령문 사용 go to
2. 함수 프로그래밍 : 명령문을 기능 단위로 묶음. f1( ) {...}, f2( ) {...}
3. 객체지향 프로그램 : 코드관리를 쉽게 하기 위해 관련된 함수끼리 분류한다.
class A { f1( ) {...}, f2( ) {...} }
class B { f3( ) {...}, f4( ) {...} }
4. 패키지 : 클래스 묶음
5. 모듈 : 패키지 묶음
'[네이버클라우드] 클라우드 기반의 개발자 과정 7기 > 웹프로그래밍' 카테고리의 다른 글
[NC7기-26일차(5월31일)] - 웹프로그래밍 7일차 (0) | 2023.05.31 |
---|---|
[NC7기-25일차(5월30일)] - 웹프로그래밍 6일차 (0) | 2023.05.30 |
충격적인 숫자 리터럴 (0) | 2023.05.25 |
[NC7기-23일차(5월25일)] - 웹프로그래밍 4일차 (4) | 2023.05.25 |
5/25 깃 사용법, gradle (0) | 2023.05.25 |