반응형
*String
<문자열과 String는 다른것 문자열은 문자열 저장소에 저장되고 그문자열을 저장하기 위한 클래스가 String
<메모리에 다른곳에 생성하고 참조하여 저장되는게 참조형 자료형의 특징<주소는 heap에 저장소는 stack / 문자열 같은경우 문자열저장소에서 주소는 heap
<대부분 지역변수로 만들어질것이고 stack에 저장되겠다.
*Array
*String class
-
문자열 저장소에 생성된 (똑같인 생긴애가 있다면 그주소를 줘버림=>같은 문자열은 딱한개만 만들어짐) 문자열의 시작주소를 저징하고 사용하는 클래스
-
<참조형 데이터형으로 참조형으로 쓰려면new를 사용해서 생성하지만 생략가능해
-
참조형이지만 기본형 형식(new사용x)으로 사용가능.
-
기본형 형식ex) String s= "ABC"; 가능.(시작주소가 담김)
-
참조형 형식ex) String s(heap주소가 담김)= new String("ABC");
*String class가 제공하는 기능(일)=>method
-
<API를 보면 우리는 요 생성자를 사용할것
-
기본형 형식또는 참조형 형식," "(리터널_문자열상수)모두 사용가능
-
String s="ABC"; 도 s.length() 가능하고
-
String s1=new String("ABC"); 도 s1.length() 가능하고
-
"ABC"length(); 도가능하다.
-
String s = "abCDef";
-
문자열의 길이)
-
int len = s.length() <객체의점메소드를 불러서 일하게 됨. = 6
-
사실 널문자의 인덱스를 내보내는것 0부터 시작함으로
-
대문자로 얻기) toUpperCase()
-
String s1 =s.toUpperCase();
-
소문자로 얻기) toLowerCase()
-
String s1=s.toLowerCase();
-
특정 문자의 인덱스 앞) indexOf(String str) : ->앞에서부터 찾아나가고
-
int index =s.indexOf("C"); <오라클은1번 자바는0번부터 인덱스가 시작함. 보통이 0번부터임.
-
=2 만약 k를 넣으면 없는값이라 없는걸 찾으면 맨처음인덱스의-1, 0부터 시작함으로 -1
-
String index 가 0,1,2,3,4,5...
-
LastindexOf 뒤에서부터 카운팅
-
특정문자의 인덱스 뒤) s.lastIndexOf("특정문자열") : <-맨 뒤에서부터 찾아나간다. 없으면 똑같이 -1
-
String s1 = "abCDeCf";
-
int index =s1.indexOf("C"); =5 가 나옴.
-
인덱스에 해당하는 "문자"얻기) charAt(int index)
-
char ch = s.charAt(3);=>'d'
-
자식문자열 얻기) substring(int beginIndex, int endIndex) -오라클의 substr이랑 비슷
-
String s1 = s.substring(시작인덱스,끝인덱스+1);
-
ex) s="abcdefg"
-
01234567 <s는 문자열주소의 시작주소를 갖고있기 때문에
-
String cd=s.substring(2,4)=cd (cde를 원했음. 시작주소만 갖고 들어가 널이 붙어버리면 마지막까지 자를때 널널 이들어가 맨뒤문자를 널로 만들어 버리기 때문에 이런 현상이 발생하는것, 끝인덱스인데 끝널값이 안나오므로
-
어떻게 println은 s를 시작주소만을 알고있는데 끝까지 출력했냐하면 문자열 맨 끝에는 보이지 않는 끝임을 알려주는 null문자가 들어있다.==>끝이니?끝이니? 하다 널만나면 여기까지 하고 잘라 출력하는것.
-
오버로딩되어있어 다양한 형태로 쓸수있도 시작인덱스값만 넣으면 알아서 끝까지 잘라줌.
-
앞뒤 공백제거) trim()
-
String s="_ _ _AAA BB_ _ _";
-
String s1 = s.trim();
-
="AAA BB" <문자열 사이의 공백은 제거해 주지는 않고 젤 처음 앞뒤 공백만.
-
문자열 합치기) concat(String str)
-
s="abc";
-
"abcdef"<=>s.concat("def");
-
s+"def" 더하기도 문자열을 붙여준다.
-
특정문자열 치환) replace(찾을문자열, 변경할문자열)
-
s="abcdefg";
-
c=>k변경
-
s.replaecAll("찾을문자열","변경할 문자열") <문자의 수가 같지않아도 바꿀수 있다
-
abkdefg나올것
-
공백을 mt""공백이 없는 문자열을 넣을수도 있다.
-
String s= ""; //mt (empty) < 문자열 주소를 가지고 있기는 하나 비어있어서 쓸수없는상태 (차에 휘발유가 있어야 운행하는데
-
:리터널의 주소는 있으나 값이 없음
-
String s=null; <둘다쓸수 없지만 차이가 뭘까 ?
-
:heap의 주소가 없음. (차가있으나 기름이없으면mt, 차가없는상태는 null)
-
문자열이 아무것도 없을 때) isEmpty()
-
t/false<= s.isEmpty();
-
완벽하게 같은지) equals(Object anObject)
-
t/f<= s.equals("비교할 문자열");
-
이 문자열로 시작되었는지) startsWith(String prefix, int toffset)
-
s="abcdef";
-
t/f<=s.startsWith("abc")
-
sql에서like의 %를 뒤에 쓴것과 같음
-
이 문자열로 끝났는지)
-
s="abcdef"
-
t/f<= s.endsWith("def");
-
컬럼명 like '%문자열'; 과같음.
-
이 문자열이 포함 되는 지) s.contains(CharSequence s)
-
boolean <=s.contains("문자열");
-
기본형 데이터형을 문자열로 변경) valueOf(변수)
-
int i = 10;
-
String s= String.valueOf(i);
-
<기본의 인스턴스 메소드들은 값을 가지고 연산을 했지만, 얘는 static 으로 가지고있는 값을 가지고 바꿔내보내서 static method라서 사용방법이 다르다. static 과 instance (들어오는값을 가지고 결과를 내줄꺼면 static?)
-
특정문자열을 구분하여 배열로 얻을떄) split(String regex)
-
String[] = s.split("구분할 문자열");
*배열
-
<PL/SQL의 테이블과 같음
-
<참조형 데이터형 : 클래스 스트링 배열
-
참조형 데이터형 (값은 메모리의 다른곳에 생성되고 그주소를 저장하는 데이터형)
-
일괄처리할 때 (많이) 사용
-
=>한꺼번에 처리 한다는것(속도향상)
-
<자바의 배열은 고정길이형. 가변길이형.
-
고정길이형 : 크기가 정해지면 변경되지 않는 것
-
<모든방에 데이터형은 일치
-
모든 방의 데이터형은 같다. <(자바스크립트와 파이썬은 다름)
-
=> 방 또는 요소 Element
-
1차원,2차원,3차원,가변 배열을 지원
*일차원 배열
-
열로 구성된 배열(행은 하나고 열이 나누어져 있다.)
-
작성법)
1.선언)
데이터형[] 배열명=null; <객체가 힙의 주소를 가지지않았습니다.
[]=배열 기호
<메소드 괄호는 소괄호, 나머지 중괄호
기본형도 참조형 데이터형도 다 가능
int[] arr=null;
2.생성)
배열명 = new 데이터형[방의갯수]
=>참조형 =>늘거나 줄지않는다. 고정길이형
arr=new int[5]; //<new를 써서 만들었기 때문에 자동초기화
생성되는 배열의 모든 방은 초기화 된다.
1+2)
데이터형[] 배열명=new 데이터형[갯수];
int[] arr =new int[5];
3.값추가)
배열명[방의번호]=값;
arr[0]=10;
arr[1]=20;
(추가,변경)값을 넣는 건 쉽고 삭제는 안됨
4.값얻기)
배열명[방의 번호]
arr[0] ===>10이 나오겠죵
<값을 추가하거나 얻을때 주의할점은 배열은 인덱스로 찾다보니 없는 인덱스를 찾으면 Error
3,4주의 : 인덱스로 방에대한 (값에대한) 접근을 수행하기때문에 잘못된 인덱스를 사용하면, Error발생.
장점: 이름짓기에대한 고민 줄여줌.
배열방의 갯수를 얻기)
배열명.length
-일괄 처리
-
for(int i=0; i<배열명.length; i++){
-
배열명[i]
-
}
-
<한번에 처리~!
-객체화 5가지
-
중 2가지
-
객체명으로 객체내의 자원을 사옹해야할 때.
-
클래스명 객체명 = new 생성자();
-
new에서 만든 heap에 오른걸 객체에 담고,
-
객체명.변수명
-
객체명.메소드명();
-
객체는 생성하나 객체명으로 사용할 자원이 없을때,
-
new 생성자();
-
객체를 생성한 직후 method()하나만 호출 하고 작업을 종료할때,
-
클래스명 객체명 new 생성자();
-
<체인형~!
-
new 생성자().method();
-
1
-
2
-기본형 형식의 사용.(new x)
-
배열을 초기화 할때 사용.
-
입력되는 값으로 방이 생성된다.
-
작성법)
데이터형[] 배열명 = {값,,,};
int[] arr={10,20,30,40,50};
*주소
int int
[arr][ ] 10 20 30 40 50
stack 0 1 2 3 4
heap
=>데이터형[] 배열명 = new 데이터형[]{값,,,};
생략(방의수를 설정하지 않는다.)
arr[2]=200 값도 잘 들어간다.
-
개발자가 배열의 사용되는 모든 값을 알고 있을때 사용.
반응형