this 함수 = 같은 인스턴스의 생성자 내에서 다른 생성자를 가리킴.
📌this( ) 생성자에서 다른 생성자를 호출
package com.fxmx.simple;
class Person {
private int regiNum;
private int passNum;
Person(int rnum) {
this(rnum, 0); // 1번 : 2번 생성자를 호출하는 this
}
public Person(int rnum, int pnum) {
this.regiNum = rnum;
this.passNum = pnum; // 2번 : 자기 자신을 가리키는 this
}
Person(int runm) {
regiNum = rnum;
passNum = 0;
}
}
this는 인스턴스의 자기 자신을 가리키는 키워드.
this는 클래스를 기반으로 생성된 인스턴스를 가리키는 참조.
✔특징
📌생성자에서 자기 자신의 메모리르 가리키는 this (인스턴스 변수의 접근)
Student s1 = new Student(); 라는 인스턴스를 생성시켜서 this 를 사용한다면,
class SimpleBox {
private int data;
SimpleBox(int data) {
this.data = data;
}
}
자바가 제공하는 표준 클래스.(java.lang패키지에 포함되어 있음)
특징
①String str1 = new String("Simple String");
②String str2 = "The Best String";
두 방법 다 Sring 인스턴스의 생성으로 이어지고, 그 결과 인스턴스의 참조 값이 반환된다.
String str1 = "Simple String";
String str2 = "Simple String";
String str3 = new String("Simple String");
String str4 = new String("Simple String");
if(str1 == str2)
System.out.println("str1과 str2는 동일 인스턴스 참조");
else
System.out.println("str1과 str2는 다른 인스턴스 참조");
if(str3 == str4)
System.out.println("str3과 str4는 동일 인스턴스 참조");
else
System.out.println("str3과 str4는 다른 인스턴스 참조");
[결과]
str1과 str2는 동일 인스턴스 참조
str3과 str4는 다른 인스턴스 참조
✔이유
str1 / str2 : String 함수는 ""를 이용하여 객체를 생성하면 Method Area에 한 번만 올라가기 때문에 여러 개의 참조변수가 하나의 String 인스턴스를 참조하게 된다.
st3 / st4: 서로 다른 객체를 생성했기 때문에 다른 인스턴스를 참조
String str = "최초 문자열"; str = "변경된 문자열";
public class StringTest { public static void main(String[] args) { String str1 = "Simple String"; // Method Area에 한번만 올라가서 공유 String str2 = "Simple String"; String str3 = new String("Simple String"); String str4 = new String("Simple String"); if(str1.equals(str3)) { // 문자열이 동일한지 확 System.out.println("str1과 str3는 동일한 문자열"); }else { System.out.println("str1과 str3는 다 문자열"); } } }
✔equals(); 과 == 의 차이
문자열대로 출력
String 객체에 있는 length() 와 함수와 charAt() 함수를 활용하시오.
public class StringTest {
public static void main(String[] args) {
String str = "abcde";
for (int i = 0; i < str.length(); i++) {
System.out.print(str.charAt(i));
}
}
}
문자열 반대로 출력
입력 : abcde
출력 : edcba
public class String1 {
public static void main(String[] args) {
String str = "abcde";
String reverse = "";
for (int i = str.length() - 1; i >= 0; i--) {
reverse = reverse + str.charAt(i);
}
System.out.println(reverse);
}
}