09-1 클래스으 기본구성

* 클래스의 기본구성
* 클래스 사용법
* 생성자 메서드
* Garbage Collection

1.클래스의 기본 구성

* 형식:
접근_제한자 지정_예약어 class 클래스명(사용자가 직접 정의)
  extends 상위클래스 implements 상위인터페이스
* 포함 멤버:
  - Nested Class :중첩 클래스
  - Field :데이터 저장 공간//멤머필드(클래스 안에 있는것), 메서드 안에 있는것(로컬or지역 변수)
  - Construct : 객체 생성 및 초기화 Method //생성자 메서드
  - Method : 특정 행위의 기술 영역 //자주 반복되는 내용을 지정

효율적 관리를 위해 배열사용(동일 자료형에 한해)
ex) kor eng math

class란 : 서로다른 자료형끼리도 하나로 묶어서 관리할수 있는것.

public class Exam_01{
 public class A{} //이너클래스
    
 int x; //필드
 Exam_01(){}//생성자:결과형 리턴값이 없음
 void aaa(){} //메서드

 //public static void main(String ar[]){}

}

2.클래스 사용법과 메모리

* 객체 생성:
 -클래스명 객체명 = new 생성자(매개변수);
 new 동적 메모리 할당 연산자-> 가비지컬렉션 힙영역
 reference로 4byte

* 연산자: .(참조 연산) //최우선 연산자, 특정영역의 멤버를 찝어서 사용
* 사용:
 -객체명.Field or 객체명.Method
* 객체:
 -Reference 4byte, GC 영역 할당

클래스 덩어리를 사용하기 위해서는 객체를 생성해야 한다.
객체 = 열쇠
클래스 = 성


public class Exam_02{
 pubilc static void main(String[] ar){
 String name;
 //int kor;
 //int eng;
 int[] sub = new int[3];//동일 자료형을 묶어서 사용
}
}


class AA{
 //String name;
 //int[] sub = new int[3];
 int a=100;
 int b=200;
 int c=300;
 void aaa(){
 System.out.println(a+":"+b":"+c);
}
}
class BB{
 int a=500;
 int b=1000;
}
public class Exam_02{
 pubilc static void main(String[] ar){
 AA ap = new AA(); //클래스 객체생성
 BB bp = new BB();
 System.out.println("ap.a="+ap.a);
 System.out.println("bp.a="+bp.a);
 System.out.println("ap.b="+ap.b);
 System.out.println("ap.c="+ap.c);
 ap.aaa();
}
}

bp 객체 주소레퍼런스 ->4바이트 (런타임스), 주소가 기억됨(new bb( int a,b값)->가비지 컬렉션에 저장됨)

가비지 컬렉션                 런타임영역
int a와 int b가 할당됨         bp 객체 할당
   <--------------------------------


3. 생성자 메서드

* 생성자 메서드의 특징
- 클래스명과 동일
- 결과형 리턴값이 없다
- 객체 생성 시 반드시 하나의 생성자 호출//생성자가 여러개가 있을 수 있다.-> 생성자 오버로딩
- 멤버 필드 값 초기화
- 자동 default 생성자 호출(생성자 없을 때)

- 생성자 오버로딩 //생성자가 똑같은것이 여러개 있을 수 있다.
 (조건:생성자가 여러개 있을때 조건으로 매개변수의 갯수가 다르거나, 자료형이 달라야 한다)
- this와 this()

ex) 생성자 예제

public class Exam_03{
 public Exam_03(){}//클래스 형태와 똑같은 형태->생성자
 void disp(){ //void 대신 int등을 사용하여 return값을 가짐.
 System.out.println("출력:");
 
}
}

ex) 생성자 오버로딩 예제

public class Exam_03(){
 public Exam_03(){}
 public Exam_03(int a){}
 public Exam_03(int a, int b){} //매개변수의 갯수가 다름
 public Exam_03(float a){}//자료형이 다름
 public Exam_03(char a){}

}

public class Exam_03(){
 private int x; //멤버필드(모든 멤버필드는private)
 private int y;
 
 public Exam_03(){
  x=10;
  y=20;
 }
 public Exam_03(int a){ //생성자를 오버로딩
  x=a;//x의 값을 바꾸고싶을때
  y=20;
}
 public Exam_03(int a, int b){//매개변수의 갯수가 다름
  x=a;
  y=b;

 }
 public Exam_03(float a){}//자료형이 다름
 public Exam_03(char a){}

 void disp(){
  System.out.println("출력");
  System.out.println("x="+x);
  System.out.println("y="+y);
}

}

public class Exam_04{
 public static void main(String[] ar){
  Exam_03 ex = new Exam_03();//x=10; y=20
  Exam_03 ex1 = new Exam_03(100);//x=100 y=20
  Exam_03 ex2 = new Exam_03(100,200)//x=100 y=200
 
  ex.disp();
  ex1.disp();
  ex2.disp();
 
}
}
//Exam_03 컴파일후 Exam_04 컴파일 한다


생성자:멤버필드값을 초기화된값으로 쓸수있어서 좋음

생성자가 없을경우 자동으로 default 생성자가 호출되어 사용된다.

class BB{
 BB(){} // BB(){}의 형태로 자동으로 만들어짐
 int a =10;
 int b =20;
}

ex) this와 this()메소드

public class Exam_05{
 int x; //0값으로 멤버필드는 디폴트 값으로 초기화 되있음
 int y;
 int a;
 int b;
 int c;

 public Exam_05(){
  x=10;
  y=20; //this.x 습관적으로 적을 것!
  a=100;
  b=200;
  c=300;
}
 public Exam_05(int x){ //지역변수의 내부에서는 지역변수 (지역변수>멤버변수)
   지역변수의 x가 x에 대입되어 멤버변수의x에까지 값이 저장되어야되는데 멤버변수x에 저장되지 않고있음
  this();//자기자신의 생성자 호출 , 맨위에 써준다.

  //x=x;
  this.x=x;
/*
  y=20;
  a=100;
  b=200;
  c=300;
*/
}
 public Exam_05(int x, int y){}
  this(x); //바로 위에있는 생성자 호출, y의 값만 바꾸면 되서..
  //x=x;
  //y=y;
  this.x = x;
  this.y = y;
  
  
}
 public void disp(){
  System.out.println("x="+x);
  System.out.println("y="+y);
}
}
public class Exam_06{
 public static void main(String[] ar){
 Exam_05 ex = new Exam_05(); //10,20
 Exam_05 ex1 = new Exam_05(100); //100,20
 Exam_05 ex2= new Exam_05(100,200); //100,200
 
 ex.disp(); //10,20
 ex1.disp(); //0,20
 ex2.disp(); //0,0
}
}

4. Garbage Collection

* Garbage Collector의 역할
- 더 이상 참조 받지 않는 Garbage Collection 영역의 메모리를 삭제한다.//주된 역할
- 어떤 공간이라도 해당 메모리를 참조하면 삭제 하지 않는다.

* Garbage Collector의 호출
- System.gc() //반드시 호출 되지는 않음. 수행의 필요가 없으면 호출하지 않는다.
- Low memory 상태에서 최하위 Thread로 동작

상수영영 힙 런타임 레지스트리

메모리 참조시 공간 할당 하고 사용하지 않는 공간을 지워죠야지 메모리의 오버플로우를 막는다.

자바는 Garbage Collector가 대신 동작한다.

ex) Garbagaae Collector 예제

public class Exam_07{
 public static void main(String[] ar){
 Exam_05 ex = new Exam_05();
  //5개의 공간이 할당되었다. (int x,y,a,b,c)
 System.out.println("ex.a="+ex.a);

 ex = null;
//10억번지를 기억하고 있던 공간이 null이 되어 데이터 5개는 더이상 참조살 곳이 없어지면서
   Garbage Collector가 사용하지 않는 메모리를 삭제한다.

  힙 영역    런타임 영역 
 int x y a b c      <---------------- ex
     ex가 null값이면 참조할 곳이 없어짐.

}
}

 

public class Exam_07{
 public static void main(String[] ar){
 Exam_05 ex = new Exam_05();
 System.out.println("ex.a="+ex.a);
 Exam_05 ex1 = ex;
 ex = null;

}
}

메모리 할당
     힙 영역    런타임 영역 
           ex1=ex로
        int x y a b c <-------------  4byte ex 할당(10억번지), //null값을 주면 없어짐
        <-----------------------------------------ex1(10억번지 할당됨)

한곳이라도 참조하는곳이 있으면 가비지 콜렉터가 존재하지 않는다.
ex1도 null이 되면 가비지 콜렉터가 호출되어 힙영역의 할당된 것들을 삭제 시킴.

신고
by 이딸공 2011.12.15 07:13

신고

'Contest' 카테고리의 다른 글

수협 중앙회(1차 심사)  (0) 2011.11.24
농어촌 모바일 서비스 공모전 (~9/23)  (0) 2011.10.11
by 이딸공 2011.11.24 18:42

SQL
(뇌를 자극하는 sql server)

sql은 대소문자를 구분하지 않는다.

* SELECT문
- 'SELECT 열이름 FROM 테이블 이름  WHERE 조건' 형식이다
- '*' 은 모든 열을 의미



ex)
SELECT * FROM memberTb1: 회원 테이블에서 모든 열을 보여라

SELECT memberName, addr FROM memberTb1;


신고

'Android programing' 카테고리의 다른 글

Android_(SQL DB)  (0) 2011.10.17
Android(DB구현)  (0) 2011.10.11
Android_Day1  (0) 2011.09.27
by 이딸공 2011.10.17 20:53

티스토리 툴바