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() { b = 0; 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.javapackage 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 |