728x90

[ 지난주 Review ]

1. 자바의 실행 단위는 class이다. -> JVM에서 이 class가 실행된다.
  cf) JVM = class를 실행하는 가상 메모리, 자바는 운영체제에 종속적이지 않다.(독립적이다.)
  - 자바는 자유 영역 공간을 할당받아서 관리하고 단독으로 실행한다.
  - javajavacbinary 형식으로 만들어 준다.
  - userName.java -> javac userName.java -> java userName
  class userName(){ } userName.class JVM에서 메모리를 올리고 구현
 1) %JAVA_HOME%/bin/javac.exe
 2) %JAVA_HOME%/bin/java.exe

 

2. %JAVA_HOME%/jre +lib : JDK Tool을 실행시키는 참조형 라이브러리
  - 라이브러리 : 실제 구현이 아닌 참조로 구현

 

3. .jar = project -> package -> .java -> .class로 배포하면 .jar로 생성
  - rt.jar을 제일 많이 쓴다.(기본 라이브러리(java.lang, java.util))

자바 개념도

  - 노란색은 기본 라이브러리

  - 이클립스에서는 jre폴더에서 자동으로 해주는 툴을 가지고 있어서 연동할 수 있다.

  - javabin폴더에 있는 exe파일들을 jrelib폴더에 있는 것을 참조로 해서 실행을 한다.

  - JDK 안에 JRE가 있다.

  - %JAVA_HOME%/jre/lib/rt.jar

 

4. class = userDataType keyword = { } = NESTED | FIELD | CONSTR | METHOD
          = 속성 + 기능(메세지) = FIELD + METHOD

  - NESTED | FIELD | CONSTR | METHOD 앞에 두 개는 필드로, 뒤에 두 개는 메소드로 구성

 

5. 접근 제한자 : public(공개) -> protected(상속) -> default(같은 package에서 공개) -> private(비공개)

 

6. 기본 자료형 : 값들(values)을 저장하는 메모리 단위
  - boolean, 정수, 실수, 한 문자, 문자열

     byte(1) -> short(2) -> int(4) -> long(8) -> float(4) -> double(8)

                    char(2)

- 운영체제가 갖고 있는 파일들이 c언어로 구성되어 있기 때문에 기본 자료형은 같다.

cf) String은 기본 자료형이 아니라 class이다.

 

# 예시 - 데이터 타입

같은 값 다른 데이터타입에 따른 결과 출력

 

# 예시 - 자동 형 변환

byte 값의 int 값으로 자동 형 변환 후 출력

  - 데이터타입 연산할 때 작은 데이터타입과 큰 데이터타입이 있는 경우 큰 데이터타입으로 연산 결과를 낸다.

 

7. 전역변수(: 클래스 안에 선언되는 변수), 지역변수(: 메소드 안에 선언되는 변수)

  - 전역변수는 생성자(=CONSTER) 맴버 변수 초기화

     [접근 제한자] datatype 변수 = ;

  - 지역변수는 반드시 초기화해줘야 한다.

      datatype 변수 = ;

 

cf) 메소드 안에 코드를 작성/선언해라

 

8. 메소드 : static(= class.멤버) / non-static(= 클래스변수.멤버_으로 구성

  - static은 주소가 있는 거고 non-static은 주소가 아직 없는 상태.

 

9. void/ datatype을 가진 return

   [접근제한자] [static/non-static] [void/datatype] userName(obj...){

                                                   [return]

   }

 

cf) 프로그램에서 [ ]는 선택적을 의미

 

10. 제어문 : if, switch, while, do~while, for

  - continue : 반복을 계속

  - break : 반복 정지

  - return : 현재 내가 가진 메소드를 종료 따라서 가장 강력

 

11. 참조 : 현재 내가 있는 위치에서 또 다른 위치에 있는 주소를 알고 있으면 CRUD가 가능하게 해준다.

 # CRUD = Create, Read, Update, Delete

 # 연산자 ( . -> & $ )

  - $ : outer classinner class를 참조할 때 사용

 # 속성 파일

 

12. class diagram을 보고 코드를 작성할 줄 알아야 한다.

 

[ Overload ] : 메소드를 선언할 때 같은 기능의 메소드를 동일한 이름으로 선언하되 ( )안의 매개 인자, 매개 인자의 개수 또는 데이터타입을 다르게 주는 원형을 말한다.

 

# 예시 - overload

overload 예시

 

 

[ 이중 for문 ]

# 예시

이중 for문 코드 및 흐름도

 

 

[배열(Array)]

  - 같은 데이터타입을 나열형의 값으로 구현된 집합체이다.

  - 정적 요소의 크기로 지정되어 있어서 처음 생성된 요소의 사이즈는 변경할 수 없다.(정적형이다.)

  - 나열된 값을 하나의 변수명으로 대입되어 값의 시작 주소를 참조하는 참조형이다.

  - 각 나열된 요소(엘리먼트)라고 하며 전체 크기는 요소의 사이즈라고 한다.

  - 각 요소는 0번지 인덱스부터 나열된 값을 저장하며 사이즈를 지정후 대입할 수 있다.

  - 1차원과 다차원으로 나눠진다.

 

<선언 방법>

1. 1차원

 1) datatype 변수명 [] = {요소...}; : 나열형 값에 의해 사이즈가 정해진다.

 2) datatype [] 변수명 = {요소...};

 

 3) datatype [] 변수명 = new datatype[] {요소...};

 4) datatype [] 변수명 = new datatype[요소의 크기];

 

# 정적할당과 동적할당

정적할당과 동적할당 도식도

  - heap은 필요 없어지면 없어지지만, stack & static은 계속 남아있다.

 

# 예시 - 정적할당과 동적할당

배열의 정적할당과 동적할당 예시

 

2. 다차원

  - 2차원 [][] - 3차원[][][]

 1) datatype 변수명 [][] = { {요소...} {...} }; : 나열형 값에 의해 사이즈가 정해진다.

 2) datatype [][] 변수명 = { {요소...} {...} };

 

 3) datatype []변수명[] = { {요소...} {...} };

 

 4) datatype [] 변수명[] = new datatype[][] { {요소...} {...} };

 5) datatype [][] 변수명 = new datatype[요소의 크기][];

 

# 예시 - 배열 도식화

배열 도식화

  - ar[0][1] = 20

  - ar.length = 2

  - ar[0].length = 3

  - ar[1].length = 3

 

# 예시 - 다차원 배열

 

 

[ 메모리 할당 ]

# 예시 - 도식

int a = 10; int b = 20; int c = 30; int d = 40;

int [] ar = {10, 20, 30, 40}; -> int라서 4byte 방을 하나 만들어서 배열 값을 넣는다.

= 오른쪽의 나열형 값들

배열의 정적할당 도식

# 보통 주소는 1byte1, 시작 주소가 그것의 주소이다.

 

# 예시 - 배열 정적할당

# 참조형들은 자유 영역 공간에서 방을 만든다. 이 때 초기값은 기본값으로 채운다.

# 배열은 크기를 지정한 후에 크기를 변경할 수 없다.

 

# 예시 - 배열과 for문

  - for(int r : res){} : 처음부터 끝까지 순차적으로 return .( r = 값을 받을 변수, res =  시작 주소값을 가진 변수)

 

# 예시 - 배열 동적할당

 

 

 

728x90

+ Recent posts