Sep.11.Mon.2023 Java 수업 11일차 변수종류 / 인스턴스 / List / Array
- 변수 종류
1. 멤버변수(Member Variables) : 클래스 또는 객체에서 일부분으로 선언되는 변수로 객체의 상태를 나타내고, 클래스의 모든 메서드에서 사용할 수 있음.
객체가 생성될 때 초기화 되고, 객체의 수명과 동일한 수명을 가진다.
public class MyClass {
int memberVar; // 멤버변수
}
2. 정적변수(Static Variables) : 클래스에서 선언되며 모든 객체가 공유한다. 클래스 이름으로 직접 접근하여, 클래스가 로드될 초기화된다.
객체의 수명과 무관하여 프로그램이 종료될 때까지 존재한다.
public class MyClass {
static int staticVar; // 정적변수
}
3. 이스턴스변수(Instance Variables) : 객체마다 별도로 가지는 변수이고 객체가 생성될 때 초기화되며, 객체의 수명과 동일한 수명을 가진다.
public class MyClass {
int instanceVar; // 인스턴스변수
}
4. 참조변수(Reference Variables) : 객체를 가리키는 참조를 저장하는 변수이고 객체의 타입에 따라 다양한 참조변수를 선언할 수 있다.
MyClass myC; // MyClass 객체를 가리키는 참조변수
String str; // String 객체를 가리키는 참조변수
5. 지역변수(Local Variables) : 메서드나 블록 내에서 선언되며 해당 블록 내에서만 사용 가능한 변수. 메서드나 블록이 실행될 때 생성되고 실행이 종료되면 사라진다.
//예제1
public void myMethod(){
int localVar; // 지역변수
// localVar 사용가능
}
// localVar 이제 사용 불가능
예제2)
for(int i = 1; i <= 0; i++){ // i 지역변수
// i 사용 가능
}
// i 사용 불가능
6. 파라미터 변수(Parameter Variables) : 메서드나 생성자에 전달되는 값 또는 변수. 메서드 내에서 작업을 수행하는 데 필요한 데이터를 전달하는 데 사용하며 메서드를 호출할 때 인자(argument)로 전달.
*인자 : 메서드 호출 시에 전달하는 실제 값으로 메서드 호출할 때 사용되는 값
*파라미터: 메서드 정의 시에 선언한 변수, 메서드 내에서 사용되는 변수 이름
예제1
public int add(int a, int b){ // a와 b는 파라미터
return a+b;
}
예제2
public static void main(String[] args) {
MyClass s = new MyClass();
//메서드 호출 : 인자(실제) 값을 전달
int result = s.add(5,3);
}
- 인스턴스(Instance)란?
객체 : 클래스를 기반으로 만들어진 모든 것을 포괄하는 용어
인스턴스 : 클래스로부터 생성된 개별 객체로 참조변수를 통해서만 다룰 수 있음. 참조변수의 타입은 인스턴스의 타입과 일치해야 함.
// 예제)
// 클래스명 변수명; // 클래스의 객체를 참조하기 위한 참조변수 선언
// 변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
Tv tv;
/* Tv인스턴스를 참조하기 위한 tv 선언
* Tv 클래스 타입의 참조변수 tv를 선언
* 메모리 공간에 참조변수 tv를 위한 공간 선언!
* 인스턴스 생성되지 않은 상태이므로 참조변수로 할 수 있는 것은 없으며, 선언만 된 것일 뿐
*/
tv = new Tv();
/* Tv 인스턴스를 생성한 다음, 생성된 Tv 인스턴스 주소를 참조변수 tv에 저장
* 연산자 new에 의해 Tv 클래스의 인스턴스가 메모리 빈 공간에 생성
* 대입연산자(=)에 의해 생성된 객체의 주소값이 참조변수 tv에 저장
* 참조변수 tv를 통해 Tv 인스턴스에 접근할 수 있음
* 인스턴스를 다루기 위해서 참조변수는 반드시 필요함
*/
- List란?
데이터를 순서대로 저장하는 자료 구조 중 하나로 여러 개의 요소를 포함할 수 있다.
배열(Array)과 달리 크기를 (유)동적으로 조절할 수 있으며 중복된 요소를 허용할 수 있다.
util 패키지에 속해있다.
List 인터페이스의 구현체는 ArrayList와 LinkedList
List 인터페이스의 객체는 두 종류로 ArrayList와 LinkedList가 있다.
- List와 Array의 차이점
둘 다 데이터를 저장하는 자료 구조
Array : 배열을 생성할 때 크기를 지정하는데 그 크기를 변경할 수 없다.
배열의 크기를 변경하려면 새로운 배열을 생성하고 데이터를 복사해야 함.
특정 데이터 유형의 요소만 저장할 수 있다. 예를 들어 정수배열은 정수만 저장
List : 크기가 가변적(바뀌거나 바꿀 수 있음)
필요에 따라 요소를 추가하거나 제거할 수 있음
크기 조정이 자동으로 처리
여러 다른 유형의 요소를 저장할 수 있다.
혼합 데이터 유형을 저장하는 데 사용할 수 있음