흑마 프로그래머 - String 클래스 및 기본 데이터 패키지 클래스

5850 단어
-------android 교육,java 교육,당신과 교류하기를 기대합니다!------------
String은 final 클래스입니다. 하위 클래스가 허용되지 않으며 문자열을 조작하는 클래스입니다.
문자열에 대한 일반적인 정의:
String s1 ="abc";//s1은 클래스 유형 변수이고 "abc"는 대상이며 문자열이 초기화되면 변경할 수 없습니다
String s2="abc";//s1, s2 두 변수는 하나의 대상을 가리킨다. 즉, s1이다. s2가 창고에 저장한 주소가 가리키는 더미의 abc 대상은 같다. 다시 말하면 s1==s2
String s3=new String("abc");//s3은 new 방법으로 스트링 클래스의 대상을 다시 만듭니다. 이 대상은 s1, s2의 값과 다른 대상입니다. 즉 s3!s1
String s4=s2;//s2의 지향을 s4에 부여하고 대상을 만들지 않았습니다
String s5=s1+"efg";//메모리에 new String 클래스 대상을 s1이 가리키는 "abc"대상에 넣고 "egf"를 "abc"뒤에 추가합니다. 원래 메모리에 있는 "abc"는 변하지 않았습니다.
상기 코드는 문자열 상수도 탱크 개념으로 설계되었다.
문자열 및 바이트 배열은 변환하는 동안 인코딩 테이블을 지정할 수 있습니다.String(byte[] bytes,Charset charset) String(byte[] bytes,String charsetName)
IO 。

일반적인 문자열 작업:
1. 획득
① 길이 획득
int length();//앞의 int는 되돌아오는 값입니다. 아래는 같습니다.
② 특정 위치의 문자 가져오기
char charAt(int Index);
③ 문자열에서 해당 문자의 위치 가져오기
int indexOf(int ch);//문자열에서 ch가 처음 나타나는 위치를 되돌려줍니다
int indexOf(int ch,int fromIndex);//formIndex 위치에서ch가 문자열에 처음 나타나는 위치를 가져옵니다
int indexOf(String str);//문자열에서 str가 처음 나타나는 위치를 되돌려줍니다
int indexOf(String str,int fromIndex);//formIndex 위치에서str가 문자열에 처음 나타나는 위치를 가져옵니다
2. 판단
① 문자열에 하위 문자열이 포함되어 있는지 여부
boolean contains(Stringstr);//비교: int indexOf(String str);//되돌아오는 값이 int인 방법도 판단할 수 있습니다. 되돌아오는 값이 -1이 포함되지 않습니다.
② 문자열에 내용이 있는지 여부
boolean isEmpty();//이 방법의 원리는 문자열의 길이가 0인지 아닌지를 판단하는 것이다
③ 문자열이 지정한 내용으로 시작하고 끝날지 여부
boolean startWith(String str);
boolean endWith(String str);
⑤ 문자열의 내용이 동일한지 판단
boolean equals(String str);
⑥ 내용이 동일한지 판단하고 대소문자 무시
boolean equalsIgnoreCase(String str);//개인적으로 이 방법은 계정 로그인, 인증번호 등에 많이 적용된다고 생각합니다.
3. 전환
① 문자열로 문자열 배열 변환
구조 함수:
String(char[] ch);
String(char[] ch,int offset,int count);//문자 배열의 일부분을 문자열로 변환합니다. 주의: JAVA의 API에서 빈번한 단어가 나타나면, 예를 들어offset은 편이량을 나타냅니다. 여기서부터 시작합니까?
정적 방법:
static String copyValueOf(char[] ch);
static String copyValueOf(char[] ch,int offset,int count);
static String valueOf(char[] ch);
② 문자열을 문자열 배열로 변환
char[] toCharArray();
③ 바이트 배열을 문자열로 변환하기
④ 문자열을 바이트 배열로 변환
byte[] getBytes();
⑤ 기본 데이터 형식을 문자열로 변환
static String valueOf(int num);
static String valueOf(double num);
3+"";//이 코드는 매우 흔하다
4. 교체
String repalce(char oldchar,char newchar);//바꿀 문자가 존재하지 않으면 원열을 되돌려줍니다
5. 절단
String[] split(String regex);
예: String str = "changsan, lisi, wuwu"
    String[] arr=str.split(",");//str를 문자열 그룹'changsan''lisi''wuwu'로 절단
6. 하위 문자열
String subString(int begin);
String subString(int begin,int end);
7. 변환, 공백 제거, 비교
① 문자열을 대문자 또는 소문자로 변환
String toUpperCase();
String toLowerCase();
② 문자열의 양쪽 끝에 있는 여러 공백을 제거합니다.
String trim();
③ 두 문자열의 자연스러운 순서 비교
s1.compareTo(S2);
 
연습:s1,s2 두 문자열로 가장 큰 공통 문자열을 찾아낸다(주:다음은 관건 코드이고 그 중에서 s1은 길이가 비교적 큰 문자열이다)
for(int x=0;x
 for(int y=0,z=s2.length()-x;z!=s2.length()+1;y++,z++){
  String temp=s2.subString(y,z);
  if(s1.contains(temp))
  return temp;
 }
}
소감: 개인적으로 사고방식 알고리즘이 중요하다고 생각합니다. 만약에 명확한 사고방식이 없으면 아무리 생각해도 비교할 방법이 없습니다. 이 연습을 통해 흑마포럼에 양고란의 제목이 있고 비슷한 연습을 찾았습니다. 저의 또 다른 일기인 을 보십시오.
StringBuffer 및 StringBuilder
StringBuffer는 문자열 버퍼입니다. 용기입니다. 라인이 안전하고 효율이 낮습니다.
다음은 StringBuffer 기능입니다. 중요한 것은 코드를 작성하고 다른 것은 API에 참여할 수 있습니다.
1. 스토리지
StringBuffer append(String str);//이 메서드는 String 객체뿐만 아니라 API 설명서를 참조하여 매개 변수를 전달합니다.
2. 삭제
3. 획득
4. 수정
5. 반전
StringBuffer reverse();
Jdk1.5 이후에 나타나는 StringBuilder는 동기화를 보장하지 않으며 스레드가 안전하지 않고 효율이 높으며 StringBuffer를 쉽게 실현할 수 있습니다.
상식: 자바 업그레이드의 세 가지 요인: ① 효율 향상 ② 쓰기 간소화 ③ 안전성 향상
기본 데이터 유형 객체 패키지 클래스의 가장 일반적인 역할:
기본 데이터 형식 대상 패키지 클래스와 문자열 사이의 변환
① 기본 데이터 유형 ==> 문자열
기본 데이터 유형 + ""
기본 데이터 유형.toString(기본 데이터 유형 값)
예: Integer.toString(34);//정수를 문자열 "34"로 바꾸기
② 문자열==> 기본 데이터 유형
기본 데이터 유형 패키지 클래스.parseXxx(String str);
예: Integer.parseInt("123");//주의: 숫자 형식의 문자열을 입력해야 합니다. 이상을 던지지 마십시오.
"기본 데이터 유형은""향원 디자인""과 관련된 모델입니다. 즉, 작업이 빈번한 객체 정적화입니다. 저는 API를 검색하는 데 시간이 좀 걸렸습니다. API 코드는 다음과 같습니다."
 public static Integer valueOf(int i) {
        assert IntegerCache.high >= 127;
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
 private static class IntegerCache {
        static final int low = -128;
        static final int high;
        static final Integer cache[];

        static {
            // high value may be configured by property
            int h = 127;
            String integerCacheHighPropValue =
                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
            if (integerCacheHighPropValue != null) {
                int i = parseInt(integerCacheHighPropValue);
                i = Math.max(i, 127);
                // Maximum array size is Integer.MAX_VALUE
                h = Math.min(i, Integer.MAX_VALUE - (-low));
            }
            high = h;

            cache = new Integer[(high - low) + 1];
            int j = low;
            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);
        }

        private IntegerCache() {}
    }

상기 코드를 통해 알 수 있듯이 자동 포장은 사실상value Of(int num)의 방법을 사용하고 new 대상이 아닌 상황에서 [-128127]의 자동 포장으로 생성된 Integer 대상은 모두 단일 대상이다. 즉,'=='로 비교한 주소 인용도 같다.

좋은 웹페이지 즐겨찾기