: 키워드 형식, method형식으로 사용할 수 있다.
: method를 호출하는 instance의 주소로 변환.
this.변수명
this.변수명 = 값;
method호출(상속관계)
this.method();
class Test(){
int i;
public void set(int i){
this.i = i;//this를 사용하면 method를 호출한 객체의 주소로 변환
//(this => t.set()의 주소로 변함.)
}
public static void main(String[] args){
Test t = new Test();
t.set(100);//method 호출
}
}
: 하나의 클래스 안에서 다른 생성자를 호출할 때 사용.
class Test(){
int i;
public Test(){
this(10);//2. Test(int i) 호출
//4. 돌아오고
}
public Test(int i){
//3. 실행
}
public static void main(String[] args){
new Test();//1. 호출
//5. 돌아와서 출력
}
}
-----------------------------------------------------------------
/**
* 뚜껑 1개, 몸체 1개, 마카펜을 생성할 때 사용하는 기본 생성자
*/
public MarkerPen() {
// cap=1;
// body=1;
// color="검은";
this(1, 1, "검은"); //this로 코드를 줄일 수 있다.
}//MarkerPen
/**
* @param cap 뚜껑 수
* @param body 몸체 수
* @param color 색
*/
public MarkerPen(int cap, int body, String color) {
setCap(cap);
setBody(body);
setColor(color);
}//MarkerPen
: 클래스에서 정의된 기능을 사용하기 위해 (heap)메모리에 올려놓는 것.
- 객체명으로 변수나 method를 사용하기 위한 객체화
< 클래스명 객체명 = new 생성자(); >- 객체명으로 변수나 method를 사용하지 않는 객체화
< new 생성자(); >- 객체 생성 후 하나의 메서드만 호출하는 객체화.
< new 생성자().method명(); >- is a 관계의 객체화
< 부모클래스명 객체명 = new 자식클래스의 생성자(); >- anonymouse inner class의 객체화 - 객체를 arguments로 사용.
< 호출할 method(new 부모클래스명(){
자식클래스에서 정의할 method()들
}); >
: ""으로 묶여진 여러 문자들.
String str = "문자열";
String str1 = new String("문자열")
: 같은지만 비교 가능
== 연산자
기본형 : 값이 같은지 비교
참조형 : 주소가 같은지 비교
기본형 형식
str == "ABC" // 200번지와 200번지가 같은지? true
참조형 형식
str1 == "ABC" // 10번지와 200번지가 같은지? false
equals method의 사용
: String 객체안의 값을 찾아가서 주소를 비교.
기본형 형식
str.equlas("ABC") // 200번지와 200번지가 같은지? true
참조형 형식
str1.equlas("ABC") // heap안에 저장된 200번지와 200번지가 같은지? true
문자열의 길이 length()
String str = "hello";
int leng = str.length();
str.length()의 반환형과 일치하는 데이터형으로 변수를 선언(int leng)하고, method에서 return되는 값을 받아서 사용.
대문자 얻기 toUpperCase()
String temp = str.toUpperCase();//HELLO
소문자 얻기 toLowerCase()
String temp = str.toLowerCase();//hello
특정 인덱스의 문자 얻기 charAt(int index)
String str = "heLlo"
--------------01234 << String Index : 처음 문자에서 0번부터 시작.
char c = str.charAt(int index);'L'을 얻으려면?
char c = str.charAt(2);
특정 문자의 인덱스 얻기 indexOf("문자열")
String str = "heLlo"
---------------01234
int index = str.indexOf("문자열");"L"의 인덱스인 2 얻기
int ind = str.indexOf("L");// 2indexOf
=> 문자열 안에서 특정 문자열 찾기(있으면 시작인덱스, 없으면 -1)문자열 안에 "eLl"이 존재하는지?
ind = str.indexOf("eLl");// eLl이 존재하므로 문자열의 시작인덱스인 1(e의 인덱스)을 얻는다.
ind = str.indexOf("eLT");// eLT은 존재하지 않으므로 -1을 얻는다.같은 문자열이 있다면 처음 문자열의 인덱스만 나온다. 특정문자열의 2번째 문자 구하기 가능
String str = "Java Oracle JDBCr";
str.indexOf("a", str.indexOf("a")+1));
// indexOf("찾는문자열", 찾을 시작지점)
//찾을 시작지점의 인덱스를 (a의 인덱스 + 1 )로 하면 두번째 a의 인덱스를 찾을 수 있다.
int ind = str.lastIndexOf("문자열");//특정 문자의 인덱스를 뒤에서 부터 찾기
.concat("합칠 문자열");
String str = "abc";
String str1 = str.contcat("DEF"); // String str1 = str+"DEF"; => 객체가 더 많이 생성
String str = "ABCDEFG"; <= Super string(부모문자열)
System.out.println(str); // String leteral에 시작주소만 입력
문자열 맨 뒤에 보이지 않는 공백있음. 끝인덱스+1을 해야 원하는 만큼 자를 수 있음.
str.substring(시작인덱스, 끝인덱스+1)
//CDE를 자르자
String temp = str.substring(2, 5); //<=4+1 CDE(2~4)str1 = "2dpaesu@gmail.com"
str1에서 메일 주소(로컬파트)
str1에서 도메인 파트 잘라내어 출력
System.out.println("메일 주소 : " + str1.substring(0, str1.indexOf("@")));
System.out.println("도메인 주소 : " + str1.substring(str1.indexOf("@")+1, str1.length()));시작 인데스만 설정하면 끝까지 잘라낸다.
끝까지 자르는 거면 시작 인데스만 설정하는게 더 간단.
System.out.println("도메인 주소 : " + str1.substring(str1.indexOf("@")+1));
boolean flag = str.equals("비교할 문자열"); //결과 boolean으로 나옴.
str변수에 들어있는 문자열과 비교.
특정문자열로 시작했는가? startsWith("문자열")
str.startsWith("문자열");
String str = "java는 완벽한 OOP언어";
boolean flag = str.startsWith("java"); //true
boolean flag = str.startsWith("Java"); //false 대소문자 구분함.
특정문자열로 끝났는가? endsWith("문자열")
str.endsWith("문자열")*
String addr = "서울시 강남구 역삼동";
boolean flag = addr.endsWith("동");//true
특정 문자열을 포함하는지? contains("문자열")
str.contains("문자열");
boolean flag = str.containts("문자열");