1장. 클래스의 기본 배경
데이터 타입이란 - 자료의 형태를 의미한다. 실세계의 데이터가 컴퓨터에 사용될 때에는 더 명확하게 구분하기 위하여 데이터 타입을 분류한다. ex) 수를 표현하는 데이터타입 int,long, float, double 문자를 표현 char, 참거짓 표현하는 boolean 등
역활
-변수에 데이터의 형태를 지정한다.
-데이터 타입은 변수를 만드는 역할을 한다.
-데이터 타입이 지정되어진 변수에는 데이터를 넣을 수 있다.
데이터 타입은 모양만을 만들기 때문에 스스로는 아무 일도 할수 없다.
컴퓨터내에서 사용할 변수를 만들 때 데이터 타입을 명시하는 이유는 어떠한 데이터가 들어갈때 메모리는 몇 바이트인가를 명시해 주는 것이다.
변수란 - 데이터를 담을 수 있는 그릇이다. 변수는 데이터타입 없이는 홀로 존재 불가능 데이터타입이 변수의 형태를 지정해주기 때문이다. 반드시 지켜져야 되는 규칙
변수 생성 방법
ex)
int x; // int타입의 변수 x 선언
변수는 데이터타입의 주어진 형태로 메모리 생성한 후 컴퓨터 내에 존재하며 변수가 생성 된 후에는 주어진 형태에 맞는 데이터를 넣을 수 있다.
상수란 - 그자체가 데이터라는 것을 의미
변수에 할당하는 상수의 표현
- int: : 10진수로 표현
- char : ' ' 작은 따옴표로 표현
- long : 숫자 뒤에 l 을 붙인다.
- float : 숫자 뒤에 f를 붙인다.
- double : 숫자 뒤에 d를 붙인다.
변수에 데이터를 넣는 것을 할당
데이터를 넣을때 규칙
- 오른쪽에서 왼쪽으로만 할당 가능하다.
- 변수끼리도 할당 가능하다.
- 변수에 이미 상수가 존재하더라도 다른 것을 할당하면 마지막에 할당한 것이 할당된다.
ex) 선언과 동시에 값입력 int x = 100;
선언후 데이터를 할당 int x; x=100;
다수의 변수 선언과 동시 할당 int x=100 , y=100;
다수의 변수 선언후 할당 int x,y; x=100, y=100;
변수끼리 할당 int x=100; int y=x;
2장 기본 클래스의 제작
클래스란 - 새로운 데이터 타입을 만드는 데이터 타입 생성기
클래스 구조
public class Person{
public int age;
public int height;
public float weight;
}
public class Test{
public static void main(String[] args){
Person man = new Person();
man.age =25;
man.height= 180;
man.weight= 75.49d;
System.out.println("age : "+ man.age);
System.out.println("height : "+ man.height);
System.out.println("weight : "+ man.weight);
}
}
출력 결과
age : 25
height : 180
weight : 75.49
클래스는 데이터타입과 변수 메소드를 포함한다.
접근제한을 둘수 있다. private public protected default
상속을 활용하여 새로운 클래스를 디자인하고 클래스를 확장할 수 있다.
클래스 변수를 생성하는 법
Person man= new Person(); //인스턴스 생성
Person이라는 클래스 데이터 타입이라는 man 변수 만 생성하고 new를 이용하여 메모리를 메모리를 생성 시키지 않을 시 Null Point Exception 이라는 에러 발생 ex) Person man;
3장 Class
객체의 용어
변수, 객체,인스턴스
객체 변수 선언
Person man;
메모리 생성, instance 생성 : man = new Person();
동시에 객체변수 생성과 선언 Person man = new Person();
메소드는 함수이다.
public void sum(int a,int b){
int sum;
sum = a+b;
System.out.println("sum=" + sum);
}
값을 반환하지 않는 메소드는 void라 선언한다.
public int sum(int a, int b){
int sum;
sum=(a+b);
return sum;
}
리턴을 하는 메소드 차이는 메소드 명 앞에 void를 제외한 데이터 타입은 그 데이터 타입에 맞는 데이터를 반환해야한다.
오직 한개의 값만 리턴 가능하다. ex) public double xx 이런식으로 선언되어있으면 double 형의 데이터를 반환해야 한다.
Call by value
함수로 매개변수를 전달 할때 변수의 값을 복사하여 함수 내부인자로 전달한다. 복사된 값은 함수 내에서 지역적으로 사용되는 local value 라는 특징을 가지고 있다.
쉽게 말해서 swap(int a,int b) 가 있다 매개변수 a,b에 swap(3,4) 라 대입하여도 메소드 자체에서 는 변화된 값을 가지고 있지만 메인에서는 그값은 바뀌지 않는다는 것이다
ex)
public static void swap(int a,int b){
System.out.println("swap 매개변수 a ="+a);
System.out.println("swap 매개변수 b ="+b);
int temp = a;
a=b;
b=temp;
System.out.println("swap 매개변수 a ="+a);
System.out.println("swap 매개변수 b ="+b);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int a=10,b=20;
System.out.println("a = "+ a);
System.out.println("b = "+ b);
swap(a,b);
System.out.println("메소드 호출 후 !!");
System.out.println("a = "+ a);
System.out.println("b = "+ b);
}
결과 값
a = 10
b = 20
swap 매개변수 a =10
swap 매개변수 b =20
swap 매개변수 a =20
swap 매개변수 b =10
메소드 호출 후 !!
a = 10
b = 20
참조 페이지
접근 제어란
-메모리를 보유한 객체를 이용해서 멤버에 점 . 찍고 접근할수 있는 지 없는지를 결정
public 모든 클래스에서 접근이 가능하다.
private 클래스 내에서만 접근이 가능하다.
protected 동일 패기지에 속하는 클래스와 하위 클래스 관계의 클래스에 의해 접근이 가능하다.
종류 클래스 하위클래스 동일패키지 모든 클래스
private O X X X
(default) O X O X
protected O O O X
public O O O O
private멤버 변수 사용 이유
-자료를 보호하기 위해서
-내부적으로만 사용하기 위해서
클래스를 이용한 메모리 생성
이름만 가진 객체
Top t;
이름과 메모리를 가진 객체
Top t= new Top();
객체변수는 참조 변수이다.
객체의 이름은 참조값이 할당되기 때문에 다른 참조값을 할당 하더라도 실제 객체에 연결된 내부의 메모리는 복사 되지 않는다. 단순한 참조값에 대한 값복사가 이루어진다.
참조값만 가지고 있다면 해당 객체를 핸들할 수 있다.