[ 여러개의 생성자 만들기 ]
package Car;
// Car 클래스 안에 여러 생성자 Car 만들기연습
public class Car {
// 필드 = 인스턴스 변수, 클래스 변수
static String company = "현대자동차"; // 클래스 변수 = 클래스명.변수명
String model; // 인스턴스 변수 = 인스턴스변수명.변수명
String color;
int maxSpeed;
Car(){
System.out.println("자동차를 만듭니다.");
}
Car(String model) {
this();
this.model = model;
}
Car(String model, String color){
// this.model = model;
this(model);
this.color = color;
}
Car(String model, String color, int maxSpeed){
// this.model = model;
// this.color = color;
this(model, color); // model, color 순서중요
this.maxSpeed = maxSpeed;
}
public static void main(String[] args) {
// static붙은 변수 호출하기
// 클래스명.static붙은 변수명;
Car.company = "현대자동차입니다."; // 아래에서 이 변수를 공유해서 씀.*
Car car1 = new Car();
System.out.println(Car.company); // 자동차를 만듭니다. 현대자동차입니다.*
System.out.println(car1.model); // null
Car.company = "기아입니다.";
Car car2 = new Car("자가용");
System.out.println(Car.company); // 자동차를 만듭니다. 기아입니다.*
System.out.println(car2.model); // 자가용
Car car3 = new Car("자가용", "빨강");
System.out.println(car3.company); // 자동차를 만듭니다. 기아입니다.**
System.out.println(car3.model); // 자가용
System.out.println(car3.color); // 빨강
Car car4 = new Car("택시", "검정", 200);
System.out.println(car4.company); // 자동차를 만듭니다. 기아입니다.**
System.out.println(car4.model); // 택시
System.out.println(car4.color); // 검정
System.out.println(car4.maxSpeed); // 200
}
}
* static 변수는 그 객체를 공유해서 씀 (static String company = "현대자동차"; )
인스턴스화 하며 새로운 car2라는 객체를 생성했으니 거기에서 값을 가져오는데
static 변수값은 인스턴스 car2가 아닌 class Car 자체에만 존재함. => 따라서 class Car 에서 값을 가져옴.
** Car.company 가 맞는 표현이지만, car3.company 로 기재해도 값은 불러와짐.
[ static 키워드 ]
static은 정적 이라는 의미가 있습니다.
자바에서는 정적 개념과 동적 개념이 있습니다
쉽게 이야기 하면 정적은 클래스가 로드되는 시점이고
동적은 로드된 클래스가 실행되는 이후를 이야기합니다.
이 중 객체는 동적 데이터입니다.
프로그램이 실행된 이후에 발생되는 형태입니다.
[ static 변수 ] _ static 유무의 차이
package Car;
class Counter{
int count; // 초기값은 0으로 저장됨
public Counter() {
count++;
}
}
public class Static01 {
public static void main(String[] args) {
Counter c1 = new Counter(); // 호출때마다 count++
Counter c2 = new Counter();
Counter c3 = new Counter();
System.out.println(c3.count); // 1
}
}
package Car;
class Counter{
static int count; // 초기값은 0으로 저장됨
public Counter() {
count++;
}
}
public class Static01 {
public static void main(String[] args) {
Counter c1 = new Counter(); // 호출때마다 count++
Counter c2 = new Counter();
Counter c3 = new Counter();
System.out.println(c3.count); // 3
}
}
* 인스턴스 변수 : 각각의 객체(힙 영역)마다 그 안에서 고유한 값 가짐.
인스턴스 변수에 static 붙여주면 그 자체로 고유한 값이 됨
> 인스턴스에(객체에) 포함되지 않음.
static붙은 변수는 그 객체 자체를 공유해서 씀 (공유변수)
final 까지 붙으면 값도 수정불가.
[ 정처기 기출문제 ] _ static관련
(1번)
https://chobopark.tistory.com/217
[2021년 3회] 정보처리기사 실기 기출문제!! (feat.복원)
안녕하세요. 2021년 3회 정보처리기사 실기 기출문제를 정리해보았습니다. 기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다. (녹색은 답 / 파랑색은 해설입니다.) 정
chobopark.tistory.com
(17번)
https://chobopark.tistory.com/210
[2021년 2회] 정보처리기사 실기 기출문제!!
안녕하세요. 2021년 2회 정보처리기사 실기 기출문제를 정리해보았습니다. 기출문제이면서 보완설명을 덧붙여 정리하였으니 도움이 되었으면 좋겠습니다. (녹색은 답 / 파랑색은 해설입니다.) 정
chobopark.tistory.com
(1번)
package car;
class Static{
public int a = 20;
static int b = 0;
}
public class Test02 {
public static void main(String[] args) {
int a;
a = 10;
Static.b = a; // 10
Static st = new Static();
System.out.println(Static.b++); // ** 10 >> 클래스 Static 자체에서 static int b를 불러옴. ** 후행증감 주의
System.out.println(st.b); // ** 11 >> System.out.println(Static.b); 가 맞는 표현인데 st.b도 결과값이 똑같이 나오도록 설정되어 있음**
System.out.println(a); // 10
System.out.println(st.a); // 20 --> 인스턴스화 했을때 생성된 객체에서 a를 불러옴
}
}
* Static st = new Static(); --> 인스턴스화 했을때 생성된 객체에는 (static 변수 빼고) public int a 만 저장됨!
'국비과정 > JAVA' 카테고리의 다른 글
20230620 _[13일차]_01. 접근제어자 (0) | 2023.06.21 |
---|---|
20230619 _[12일차]_01. ArrayList (0) | 2023.06.20 |
20230616 _[11일차]_02. 기본생성자 & 명시된생성자 & this (0) | 2023.06.19 |
20230616 _[11일차]_01. 메소드 오버로딩 & 생성자 (0) | 2023.06.19 |
20230615 _[10일차]_04. Arguments & 메소드 특징 & 활용 (0) | 2023.06.18 |