관리 메뉴

쿰뱅이

자바 정의2 본문

자바/JAVA 입문

자바 정의2

주년 2011. 10. 11. 14:10
반응형

자바 정의2

1.프로그램과 객체와의 관계

*프로그램:로직과 데이터로 구성된 것

*프로그래밍:데이터를 가공하여 정보를 만드는 것

* 클래스 구성도

함수 밖의 변수:멤버필드

멤버메소드

함수안의 변수:지역변수

객체:인스턴스

*객체를 생성하는 과정은 현실객체에서 소프트웨어 객체를 추출(분석)하여 객체간의 관계(modeling)를 만든 후, 추상화(abstraction) 단곌르 거쳐 클래스(현실객체에 대한 설계도, 템플릿)가 된다.

이 클래스를 사용하기 위해 메모리에 올리는 과정을 인스턴스화(instantiation) 과정이라고 한다.

인스턴스화는 키워드 new를 사용한다.

2.객체지향적인 분석(OOA:Object Oriented Analysis)은 관련된 객체를 찾아내는 것이며, 모델링은 객체간의 관계를 보여준다. 기본적인 관계성은 is관계와 has관계가 있다.

예] 은행원(혹은 경비원)-->직원은 is 관계, bank-->직원(혹은 고객)은 has 관계이다.

OOA와 모델링 관계가 끝나면 추상화 단계이다.

추상화란, 나타내려는 객체의 특징과 목적을 간략하게 표현하는 것이다.

예] 자동차로 인식되는 그림

*추상화

-추상화단계: 간략하게 표현(행위, 속성 포함), 정의된 글

-클래스화단계:행위, 속성을 찾아내 간단한 다이어그램으로 표현=>클래스다이어그램(클래스이름/멤버필드/메소드로 구성) 

3. JVM 메모리 구조

*형태

 Heap  Stack
 
class heap(=static) heap

1.클래스(설계도, 틀)가 컴파일되어 올라온다.

2.static으로 정의된 변수, 함수는 객체생성없이 사용가능하다.

3.같은 클래스로 생성된 객체들은 static으로 정의된 것을 공유한다.

1.new 키워드를 사용해 생성한 객체 존재

----------------------

[literal pool]

new키워드를 사용하지 않고, 객체 생성한 경우

예]String a = "hello";

 

1.기본타입에 대한 연산 처리

2.메소드 처리

3.지역변수 존재

4.레퍼런스 변수(2차주소값 가짐) 존재

*사용자는 레퍼런스(2차주소)를 식별자로 사용하고, JVM은 해쉬코드(1차주소)를 식별자로 사용한다.

*JVM은 사용자가 레퍼런스주소와 해시코드를 매핑해서 생성된 객체 메모리에 접근할 수 있도록 도와준다.

4.Static메소드는 멤버메소드나 멤버필드를 사용할 수 없다.

5.클래스로더가 필요에 따라 클래스를 자동으로 메모리에 올린다. 이때, 스태틱 필드와 스태틱 메소드를 사용할 수 있다. 스태틱에 클래스가 올라가 있고, new 키워드에 의해 해당 클래스의 객체가 생성되면 멤버필드의 자동 초기화가 이루어진다.

int 타입 0, float 타입 0.0f, double 타입 0.0, boolean 타입 false, 참조 타입 null로 자동 초기화 된다.

생성자에 의해 초기화 되면서 JVM이 인스턴스를 구별할 수 있는 해쉬코드가 생긴다.

NULL값을 가진 객체는 가비지 콜렉션의 대상이 된다.

6.메소드 이름은 같지만 아규먼트 타입이나 개수가 다른 메소드를 오버로딩된 메소드라고 한다.

7.클래스에 대한 모든 정보를 구체적으로 보여주는 클래스는 java.lang.reflect패키지에 있다. 이 정보를 얻는 것을 리플랙션이라고 한다.

8. Obj1 == Obj2     //스택영역의 레퍼런스 값을 비교한다.

Obj1.equlas(Obj2)   //해쉬코드를 비교한다.

9.레퍼런스의 다형성:부모의 이름으로 자식 객체를 생성할 수 있다.

Object obj = new String("good"); //Object 타입으로 String 객체 생성

자식클래스가 static에 올라가면 상속시킨 부모클래스도 같이 올라간다.

10.String:immutable(값이 변하지 않고, 새로 메모리에 추가됨)

StringBuffer:mutable(값이 변함)

예]String s = "Hello";

s = "Java";// s 참조값은 생성된 Hello 메모리를 버리고, Java를 참조한다. Hello는 가비지콜렉션 대상이 된다.

예] StringBuffer sb = new StringBuffer();

sb.append("1")

.append("2");

[출처] 자바 정의2|작성자 Ethan


반응형

'자바 > JAVA 입문' 카테고리의 다른 글

java 메일보내기  (5) 2011.10.11
자바 정의1  (0) 2011.10.11
자바정의3  (0) 2011.10.11
[java]파일 읽고, 쓰기, 복사, 삭제 종합편  (1) 2011.10.11
Java API 한글 등등 모음  (0) 2011.10.11