728x90
반응형
this키워드 Method, Constructor 안
순서상관x
 
this([]) 호출문

this() : 기타생성자
this(~)
this호출문은 맨 처음 한 번만 가능

 

class T{

//멤버필드=멤버변수

int a;

//기타생성자 =>기본생성자가 사라짐

T(int a) {this.a=a;}

//메소드 선언문

T getT(){return this;} //this=> 자료형 T, 객체명 t, 주소값 &100 

}

 

T t = new T(5); //&100

T t1 = t.getT(); // &100

 

JVM이 메인메소드만 최초 1회 호출

 

 

instance (값이 생성된 다음에 복제됨)

 

Ex01.java
package three;

public class Ex01 {
	//숨어있음 public Ex01(){} 
	int add (int a, int b) {
		return a + b;
	}
	//메소드	
	void add(int a, int b, int[] result) {
		result[0] = a + b;
	}
	
	//메인메소드
	public static void main(String[] args) {
		Ex01 r = new Ex01();
		
		int result = r.add(3, 5);
		System.out.println(result);
		
		int[] result2 = { 0 };
		r.add(3,  5, result2);
		System.out.println(result2[0]);
	}
}​
8
8

 

 

 CarEx.java

package three;

class Car {
	private String modelName;
	private int modelYear;
	private String color;
	private int maxSpeed;
	private int currentSpeed;
	
	Car(String modelName, int modelYear, String color, int maxSpeed) {
		this.modelName = modelName;
		this.modelYear = modelYear;
		this.color = color;
		this.maxSpeed = maxSpeed;
		this.currentSpeed = 0;
	}
	
	Car() {
		this("소나타", 2012, "검정색", 160);
	}
	public String getModel() {
		return this.modelYear + "년식 " + this.modelName + " " + this.color;
	}
}

public class CarEx {
	public static void main(String[] args) {
		Car myCar = new Car();
		System.out.println(myCar.getModel());
	}
}
2012년식 소나타 검정색
Ex02.java
package three;

class One {
	int value;
	
	public One() {
		this(100);
		this.value = 5;
		System.out.println("디폴트생성자");
		
	}
	public One(int value) {
		//자신의 value 변수에 매개변수로 받은 값을 저장
		this.value = value;
		//클래스 메소드를 호출. 매개변수로 자신의 객체를 전달
		Another ano = new Another();
		ano.methodA(this);
	}
	public void md() {
//		this();
	}
}

class Another {
	void methodA(One ins) {
		System.out.println("메소드A에서의 값: " + ins.value);
		System.out.println("ins의 주소값: " + ins);
	}
}


public class Ex02 {
	public static void main(String[] args) {
		One t1 = new One();
		System.out.println("t1의 주소값: " + t1);
		System.out.println("기본 값: " + t1.value);
	}
}​
메소드A에서의 값: 100
ins의 주소값: three.One@6f75e721
디폴트생성자
t1의 주소값: three.One@6f75e721
기본 값: 5

기타제어자(Modifier)

기타제어자(Modifier)    
final : ~할 수 없는, ~하지 못하는    
static : 정적(고정된), 공유되는, 클래스 이름으로 접근가능한 키워드 붙일 수 있는 것
- 멤버필드(속성),
- 메소드
- 초기화블럭

지역변수, 클래스, 생성자 x
this => static 키워드에 붙일 수 없다.

class Counter{ //앞에 default생략
static int count=0; //static변수
public Counter(){ //기본생성자
count++; //count=count+1;
}
public static int getCount(){
return count;
}
}
class Ex{

int a; //멤버변수=인스턴트변수
static int b; //멤버위장, static변수, 정적변수, 클래스변수

public void setA(int a){
int a  = 5; //지역변수
}
public static void setB() {
a = 0; err
b = 0;
setA(5);  // static메소드 이내에서는
static키워드가 붙은 멤버만 호출가능
instance 하는 이유 중 하나

int c = b + 5;
Ex b=b;
system.out.println(b+c);
system.out.println(a+b+c)
}
}
abstract : 추상적인, 몸체가 없는, 반드시 재정의해야하는   static메소드 이내에서는
static키워드가 붙은 멤버만 호출가능

 

{ 조건문,반복문 } {중괄호}이내 메소드나 생성자 안에만 가능
{ System~ 출력문 }
메모리영역 Method = Static = Class = 정적
static 생명주기 : 프로그램 시작되는 시점~ 종료까지 
Ex static int b;
public static void setB(int b) {
this.b = b;
}
public static void md1( ) {
System.out.println("md1호출")
}

String[] sArr

 

 

CounterEx.java
package three;

class Counter {
	static int count = 0; //1
	
	Counter() {
		this.count++;
//		Counter.count++;
	}
	
	public static int getCount() {
//		this.count++;
		return count;
		
	}
}

public class CounterEx {
	
	public static void main(String[] args) {
		Counter c1 = new Counter(); //1
		Counter c2 = new Counter(); //1
		
		System.out.println(Counter.getCount());
		System.out.println(c1.getCount());
		System.out.println(c2.getCount());
	}
}​

2
2
2​

 

BoxEx.java
package three;

class Box{
	long idNum;
	static long boxID = 0;
	
	public Box() {
		idNum = boxID++;
	}
}

public class BoxEx {

	public static void main(String[] args) {
		Box box1 = new Box();
		Box box2 = new Box();
		Box box3 = new Box();
		Box box4 = new Box();
		System.out.println("box1의 idNum : " + box1.idNum);
		System.out.println("box2의 idNum : " + box2.idNum);
		System.out.println("box3의 idNum : " + box3.idNum);
		System.out.println("box4의 idNum : " + box4.idNum);
		System.out.println("박스 총 개수 : " + Box.boxID);
	}
}​

box1의 idNum : 0
box2의 idNum : 1
box3의 idNum : 2
box4의 idNum : 3
박스 총 개수 : 4
728x90
반응형

'[JAVA]' 카테고리의 다른 글

[20231222] 10일차  (0) 2023.12.22
[20231221] 9일차 오후  (0) 2023.12.22
[20231220] 8일차 오후  (0) 2023.12.20
[20231220] 8일차 - 객체  (0) 2023.12.20
[20231219] 7일차 오후  (0) 2023.12.19

+ Recent posts