프로그래밍의 역사, JAVA 설치, 이클립스 설치, 클래스만들기, JAVA란?, 코딩 컨벤션, 변수및 연산자, 자료형
<프로그래밍의 역사>
1949
ASM(어셈블리어)
최근에는 보안 관련으로 사용
1972 1981 1991 1995
C C++ Oak Java
벨연구소 I→ Obj C 썬마이크로시스템즈 제임스 고슬링
Dannis Ritche I→ Swift (iOS개발 ↓
I→ C# ADK
I→ 유니티
경쟁 언어 : 언리얼
2020
Java
→ Native
→ Web
→ Android
→ Bigdata Hadoop …..
https://tiobe.com/tiobe-index/
이클립스는 포터블 버전으로 설치...
Native는 Java로 설정해줘야함
(Web의 경우는 Java EE엔터프라이즈에디션으로 설정하게됨)
클래스 만들기
ctrl + , ctrl - 로 글자조절가능
이클립스 마켓플레이스 -> 플러그인 다운로드
exe -> 문서?
컴퓨터에게 할 명령을 담은 문서 (명령 집합체) -> 프로그램
프로그래밍 언어 |
|||
저급언어 |
고급언어 |
||
기계어 |
어셈블리어 |
절차지향 언어 (C언어) |
객체지향 언어 (JAVA) |
시간의 흐름, 순서중심 원리지향, 효율중심 원리를 다 알아야 만들어짐 단기간 성과 어려움 |
생산력 중심 빠른 개발 순서 신경X 단위중심,모듈중심 단위별로 만든 다음에 나중에 관계를 설정, 조립 |
프로그래밍
종이 - 편집기
명령어 작성
소스코드 = 명령어를 기술한 문서(글)
>>>> 컴파일(번역)
2진수 문서 0101010101101 / 실행파일 ⇒ Java영역에서
/ 목적파일(Object파일) ⇒ C언어 영역에서
2진수 문서(실행파일)이 실행되기 위해서는 도구,라이브러리, 환경정보 등이 지정이 되야함
>>>> Link
2진수 문서의 앞과 뒤에 내용을 추가하는 것
앞(Header)과 뒤(Footer)에 환경정보, 도구에 대한 것을 붙여줌
Link 작업까지 끝난 상태를 C언어에서의 실행파일으로 봄
*Link 과정에서 운영체제 종속성이 발현됨
(환경정보에 해당 운영체제에 대한 내용이 기술되기 때문)
윈도우에서 만든건 윈도우에서만 돌아가고, 리눅스에서 만든건 리눅스에서만 돌아감
윈도우에서 만든 프로그램을 리눅스에서 사용하고 싶다면?
운영체제종속성이 발현되기 전 (Link 전)의 소스코드를 갖고 리눅스에서 컴파일,링크를 하여 사용
****자바는 운영체제에 대해서 종속성을 갖지 않음 (운영체제 독립성)
소스코드 ⇒ 컴파일 ⇒ 010101(2진수문서)
소스코드 실행파일(exe)
** 앞뒤로 환경정보 등을 넣는 것이 아니라
JRE가 소스코드를 실행할때 필요한 환경정보,도구에 대해 알려주는 집사역할(Link정보값 셋팅)
JRE(Java Runtime Environment/자바실행환경)
도구모음 JRE
문서 JDK
JRE가 있으면 어디서든 실행가능 = JRE 없으면 실행불가
인터넷의 발전으로 운영체제에 대한 독립성을 가진 JAVA가 떠오름
자바는 Memory, 자원 사용 후 자원반환에 대한 코드를 작성할 필요가 없다(자바 자체에서 알아서 반환해준다)
단점 => 개발자가 쓰다가 반환하고 싶을때 반환할 수 없음(최적화X) 반환을 위한 코드가 없음
Garbage Collecter(자원 반환을 위해 일하는 집사?)가 반환타이밍이 나쁘면 자원을 낭비하기도 함 ⇒ But 하드웨어가 발전하면서 해결?됨
C++ 언어의 장점은 추려내고 활용도가 떨어지는 부분은 제외시켜 상대적으로 배우기 쉽다. => 난이도 ↓
50년 전통의 C언어와 비교하여도 부족하지 않은 풍부한 클래스 라이브러리를 가진다.
라이브러리 => 도구
이클립스 = 통합 개발 환경(Integrated Development Environment, IDE)
JDK = 자바
// 컨벤션(convention) : 관습,관례
// 코드를 짤 때 관습,관례가 있다. 코딩 컨벤션
중괄호의 사용
코딩 스타일에는 대표적으로 GNU, K&R, BSD 이렇게 세 가지가 있는데, 이번 절에서는 각각의 코딩 스타일이 중괄호를 어떤 규칙으로 사용하는지 알아보자.
G N U |
if(...) { 처리(); } |
블록을 if문 아래에 작성한다. 블록이 if에 속한 블럭임을 분명히 표시하여 구조가 잘보인다. 허나 들여쓰기를 많이 해서 처리하기에 수평으로 많은 코드를 작성할 수 없다. |
|
K & R |
if(...) { 처리(); } |
흔히 C계열 창시자 들이 사용하던 스타일이다. 여는 블록을 if와 같은 행에 배치한다. 코드 줄수를 절약하여 한눈에 많은 코드를 볼수있고 수평으로 많은 코드를 작성할수 있다. Java계열 Eclipse / 구글 C++ 자바스크립트 등의 기본 포매팅이다. |
|
B S D |
if(...) { 처리(); } |
GNU의 블럭의 소속을 분명히 한다는 장점과 K&R의 수평으로 많은 코드를 작성할수 있다는 장점을 가져와 결합한 스타일이다. 줄 수는 GNU 스타일만큼 늘어나지만 수평으로는 K&R만큼 빽빽하게 쓸 수 있다. 비주얼 스튜디오에서의 기본 포매팅이다. |
출처: https://hygoni.com/29 [Bonjour, le monde!]
변수 및 연산자
변수란?
일반적인 변수의 뜻 -> 고정되어 있지 않은 수
JAVA 에서 변수의 뜻 -> 데이터 또는 자료를 저장하기 위한 메모리 공간(RAM의 공간)
CPU - 중앙처리장치 Central Processing Unit
RAM - 주기억장치(Main Memory)
SSD/HDD - 보조기억장치
CPU는 연산할때 RAM만 사용한다 (CPU는 SSD/HDD에 직접 접근이 안된다)
입력 - 기억 - 연산(처리)
변수선언
메모리 공간을 이용하기 위해서는 변수 선언을 해야 한다.
DataType 변수명 ;
명명 규칙 (식별자 규칙)
프로그램 내에서 사용하는 변수,함수,상수 등에 부여한 이름
*작성규칙
1. 영문자 대 소문자 , 숫자 , _ (underline) , $ 의 조합으로 구성
2. 숫자의 경우 가장 첫 글자로 쓰여서는 안 된다.
3. 예약어를 사용하면 안 된다.
4. 공백이 있어선 안 된다.
*프로그래밍 활용을 위한 TIP
의미를 잘 설명할 수 있는 이름
제약은 없지만 3~10자 내외
변수명은 보통 짧은 영어 단어를 활용
자료형
★ 기본형 변수 (Primitive Type)
논리형 : boolean(1)
정수형 : byte (1) / short(2) / char(2) / int(4) / long(8)
실수형 : float(4) / double(8)
★ 참조형 변수 (Reference Type) => 갯수의 제한이 없다?
기본형을 제외한 나머지 자료 형
객체의 주소를 저장한다.
String 등 참조 형 변수는 모두 4 byte
bit : 0 또는 1
8 bit -> 1 Byte
1 bit = 2 = 2의 1승
2 bit = 4 = 2의 2승
3 bit = 8 = 2의 3승
4 bit= 16 = 2의 4승
.
.
8 bit = 256 = 2의 8승
1bype(8bit) 메모리의 범위 : -128~+127 까지
= : 대입하다