프로그래밍
-프로그래머가 컴퓨터에게 일을 시키는 행위 프로그래머
- 프로그램을 만드는 사람 프로그램
- 컴퓨터에게 일을 지시하는 수단
컴파일
- 컴퓨터가 알아 들을 수 있게 기계어로 번역하는 과정. 이과정은 컴파일러가 진행한다.
기계어 - CPU가 알아들을 수 있는 언어. 0과 1로 이루어져 있다.
고급언어 - JAVA C 처럼 사용자에게 친화적인 언어 저급언어 - 어셈블리어처럼 기계어에 취중한 언어.
JAVA의 특징
- 컴퓨터가 아닌 다른곳에 프로그램을 심으려고 만들어짐. - 플랫폼에 구애받지 않는다.
플랫폼 - 프로그램이 실행되는 환경. O/S나 프로세서가 플랫폼이 된다. VM - 플랫폼에 구애받지 않는 대신에 각 환경에 맞는 VM을 설치해야 한다. - VM은 플랫폼에 의존적이다. - 프로그램을 플랫폼에 따라 재컴파일 할 필요 없이 VM을 설치하면 되기때문에 간편하다. 인터프리터 - vm은 CPU가 읽을 수 있게 중간코드를 기계어로 번역해준다. - vm이 중간코드(바이트코드, .class)을 기계어로 만들어주는 과정을 인터프리터 라고 한다. - 자바 컴파일러는 기계어를 생성하는것이 아니라 자바 VM이 읽을수있게 컴파일 하는것이다.
JVM
- 자바가상머신. 운영체제에 종속적이며 jdk와 jre에 들어있다. - 바이트코드(중간코드)를 기계어로 번역해서 전달하는 역할을 한다. JRE와 JDK
- JAVA로 만들어진 프로그램을 실행하려면 JRE가 필요하다. - JRE는 자바프로그램을 구동하는데 필요한 실행환경을 제공한다. - JDK는 자바 개발에 필수적인 도구이머, JRE를 포함한다.
프로젝트
- html이나 자바 파일들이 폴더들이 모여있는 일종의 '폴더'다. - 카멜케이스를 사용한다.
자바/이클립스
- 자바는 문장(;)과 블록({})으로 이루어져있다. - 이클립스는 저장을 하면 자바 파일을 .class파일로 만든다. package
- 이 파일(자바)은 어느 폴더 안에 들어있어요. 표시해준다. - 경로를 보지않고도 해당 파일이 어디에 있는지 이해 할 수 있어야 한다. class -class 옆에는 클래스명을 표시한다. - { = 블록이라고 한다. - 클래스를 감싸고 있는것은 클래스 블록이다. 코딩컨벤션
- 클래스명 다음에 한 칸 띄우기. - 클래스 구현부 첫줄은 비운다.(메소드는 아니다.) - 클래스명은 파스칼케이스를 사용한다. - 프로젝트명, 메소드명, 변수명은 카멜케이스를 사용한다. - 상수는 스네이크케이스를 사용한다. 함수
- 함수는 소괄호가 있다. 소괄호 앞에 있는것을 함수명이라 한다. - 소괄호 안에 있는것을 인수(매개변수)라고 한다. - public static - void 함수의 반환 타입이다.
함수2 - 처리를 작성(기술)하는 블록을 함수라고 한다. - 자바스크립트에는 함수가 있다. 메소드 - class안에 들어있는 함수를 메소드라고 한다. - 자바는 클래스 밖에있는 함수가 없기 때문에 JAVA에는 함수가 없다고 할수있다. .class
-하나의 프로젝트에는 여러개의 클래스파일이 있다. - 자바는 클래스파일들로 쪼개져 있다.
객체지향 - 객체지향언어는 '객체'로 이루어져 있다. - '누구의입장'이냐에 따라서 객체일 수도 있고 아닐수도 있다. - 패키지(프로젝트)의 입장에서 main메소드는 객체이다. - 클래스의 입장에서 main은 객체이고 멤버이다.
변수 객체 멤버 멤버변수 필드 -자바는 변수와 메소드로 이루어져 있고 블록과 문장으로 이루어져 있다. -변수는 값을 보관하거나 유지한값을 추출하거나 대입할 때 사용한다. - 더블쿼트에션(") = 문자열이란것을 의미한다.
- 멤버변수(필드) = 메소드에 종속되어있지 않은 class를 구성하는 멤버 혹은 객체. - 지역변수 = 메소드 안에 들어있는 변수(는 멤버변수도 아니고 필드도 아니다.)
자바는 타입언어다. - 자바에서는 멤버를 선언할 때, 반드시 앞에다 타입을 적어야 한다.
변수 리터럴 - 더블쿼테이션(")으로 감싸져있는것을 리터럴이라 한다. - 리터럴이란 변수에 넣을 값을 구체화 한것이다. - 대입연산자(=)란 오른쪽의 값을 변수에 대입한다는 의미다. - 변수는 메모리에 저장되며, 변수에 넣을(복사할) 리터럴은 메모리에 저장되어 있다.
호출함수 - 구현부가(중괄호가) 없는 함수를 호출함수라고 한다. - 호출함수는 함수를 호출하는 행위다. - 호출시에는 변수를 추출하며, 이때 앞에 타입을 적지 않고 변수명만 적는다. System.out.println(); 파헤치기 - System은 클래스다. 따라서 println은 System클래스 안에있는 메소드다. - (.)은 연결연산자 라고 한다.
메소드 오버로딩 - 인수의 갯수가 맞지 않으면 호출이 안된다. - 메소드를 호출할때 타입과 갯수가 맞지 않으면 호출이 안되기 때문에 타입과 갯수를 맞추는 과정을 말한다. 실습 - syso 까지 입력하고 ctrl + space를 입력하면 자동완성된다.
메모리 종류 - 메모리 = 프로그램이 실행되는 공간. 작업공간 - 레지스터 = CPU는 한번에 하나밖에 기억을 못한다. 이점을 보완하기 위해 CPU전용 기억공간을 사용한다. 이것이 레지스터이며 엄청 빠르고 비싸고 작다. - RAM = 레지스터보다 느리다. 전기가 공급되지 않으면 사라진다. - SSD HDD = 전원이 나갔다고 해도 자료가 안사라진다.
프로그램이 시작되는 과정 - Java 파일을 저장한다. 자동으로 컴파일되어 바이트코드가 SSD에 저장된다. - play 버튼을 누르면 JVM이 실행된다. - JVM은 SSD에 있다가 실행되는 순간 RAM에 올라간다. - 실행되면 class파일을 JVM이 똑 떼서 CPU에 주면 CPU가 처리할 수 있는 부분을 처리하고 초과하는 부분은 레지스터에 저장하고 반복....
JVM이 CPU에 똑떼서 건네주는부분 자세히 - JVM은 클래스파일을 탐색한다. - class파일을 발견하면 - static이라는 글자를 검색한다. - 없으면 실행을 종료한다.(JVM 끝) - static을 찾으면.. 집어다 메모리의 class 영역에 올린다. - 그다음 static인 main을 메모리에 올린다. main자체가 아닌 main의 참조값이 들어간다. - 실제 main 메소드는 stack이라는 영역에 저장된다. - main 안에는 호출함수가 들어가있다. - 클래스 영역이 먼저 생성된다. 따라서 main은 static영역의 name을 바라볼 수 있다. - 호출이 끝나면 가비지 컬렉터가 모든 과정을 지켜보고 있다가 자신의 행위를 다 애를 없앤다.
|
댓글