다크호스 프로그래머Java 기초문자열 조작
1. String 류 의 간단 한 이해
자바 에서 문자열 은 가장 자주 사용 되 는 클래스 중 하나 입 니 다. String 류 에 대한 성명 방식 은 두 가지 가 있 습 니 다. 하 나 는 직접적인 String str = "abc" 입 니 다.다른 하 나 는 new 키 워드 를 통 해 String str = new String ("abc") 을 설명 합 니 다. 그렇다면 두 가지 방식 은 어떤 차이 가 있 을 까?이 문 제 를 설명 하려 면 중요 한 개념 을 이해 해 야 한다. 하나의 문자열 은 String 류 의 익명 대상 이 고 익명 의 대상 은 메모리 공간 을 열 었 으 며 직접 사용 할 수 있 는 대상 이다.두 번 째 방식 에 대해 new 키 워드 를 사용 하면 어떻게 든 새로운 공간 을 열 수 있 습 니 다. 그러나 이때 공간의 내용 은 'abc' 입 니 다. 실제로 이때 메모리 에 두 개의 공간 이 존재 합 니 다. str 는 이때 new 키 워드 를 가리 키 는 공간 입 니 다. 원래 'abc' 가 차지 하 는 공간 은 쓰레기 공간 으로 변 합 니 다.따라서 일반적으로 String str = new String (") 을 사용 하지 않 습 니 다.라 는 식 으로 말 했다.[그래, 사실은 한 마디 로 뉴 키워드 가 String 을 설명 할 때 공간 낭 비 를 초래 할 수 있다.]
String 에서 자주 사용 하 는 API 에 대해 문 서 를 보면 서 학습 노트 를 기록 하 는 것 이 재 미 없 을 것 같 습 니 다. 학습 과정 에서 실제 장면 에 따라 점점 알 게 될 것 입 니 다.그래, 이렇게 많은 말 을 하 니 정말 공허 하 다.
2. String 류 의 간단 한 연습
다음은 String 연습 을 몇 개 해 보도 록 하 겠 습 니 다.
1. 주어진 문자열 의 지정 한 위 치 를 반전 시 킵 니 다. 예 를 들 어 'abcdefg' 이 'abcfedg' 로 바 뀌 었 습 니 다.
2. 다른 문자열 에 나타 나 는 문자열 을 가 져 오 는 횟수
3. 두 문자열 의 최대 같은 하위 문자열 가 져 오기
잔말 말고 코드 를 직접 올 리 고 설명 하 세 요.
package com.itheima.string;
import java.util.regex.Pattern;
/**
* 1.
* 2.
* 3.
*/
public class StringDemo {
public static void main(String[] args) {
String str = "a..12345b";
//System.out.println(reverse(str, 1, 6));
//String str1 = ".";
//System.out.println(getShowNum(str1, str));
System.out.println(getMaxSubstring(str, "a.1234b5"));
}
/**
*
* @param s1
* @param s2
* @return
*/
public static String getMaxSubstring(String s1,String s2){
//
String minStr = s1.length()>s2.length()? s2:s1;
String maxStr = s2.equals(minStr)? s1:s2;
//
for(int i = 0 ; i < minStr.length();i++){
// abcd abcd , abc,bcd ab,bc,cd 0, ( - )
//
for(int beginIndex = 0,endIndex = minStr.length()-i;endIndex <= minStr.length();beginIndex++,endIndex++){
String temp = minStr.substring(beginIndex, endIndex);
if(maxStr.contains(temp)){
return temp;
};
}
}
return "";
}
/**
*
* src dest
* @param src
* @param dest
* @return
*/
public static int getShowNum(String src,String dest){
if(src == null || src.isEmpty()){
throw new IllegalArgumentException("src cannot empty");
}
int index = 0;
while(dest.contains(src)){
index++;
// src
dest = Pattern.compile(src, Pattern.LITERAL).matcher(dest).replaceFirst("");
}
return index;
}
/**
* ,
*
* @param src
*
* @param beginIndex
*
* @param endIndex
* ( , ) [beginIndex,endIndex);
* @return
*/
public static String reverse(String src, int beginIndex, int endIndex) {
if (beginIndex < 0 || beginIndex > endIndex || endIndex > src.length()
|| beginIndex > src.length()) {
throw new IllegalArgumentException("illegal index,please check beginIndex,endIndex.");
}
if(src == null || src.isEmpty()){
return "";
}
//
String temp = src.substring(beginIndex, endIndex);
char[] tempchs = temp.toCharArray();
char[] chs = src.toCharArray();
// [1-6), 5, 0--4
for(int i = beginIndex; i <= endIndex-beginIndex ;i++){
chs[i] = tempchs[endIndex-i-1];
}
return new String(chs);
}
}
개발 에 있어 서 String str = "aa" + "bb" + "cc" 를 최대한 적 게 사용 합 니 다.이런 형식 은 메모리 에 세 개의 공간 을 열 것 이다. 특히 for 순환 에서 되도록 이렇게 사용 하지 마라.자바 API 에서 StringBuffer, StringBuilder 클래스 를 제공 합 니 다. 이 두 종 류 는 문자열 의 추가 작업 을 쉽게 할 수 있 습 니 다. 예 를 들 어 StringBuilder mBuider = new StringBuilder ("aaa");mBuilder.append("").append("");이런 방법 은 비교적 간단 해서 자바 문 서 를 참조 하여 연습 할 수 있다.상기 두 가지 조작 방식 은 똑 같 습 니 다. 차이 점 은 StringBuffer 는 스 레 드 가 안전 하고 조작 할 때 스 레 드 의 잠 금 체 제 를 사 용 했 기 때문에 효율 이 비교적 낮 습 니 다.
자바 의 기본 데이터 형식 에 대한 포장 류
boolean Boolean;int Integer;byte Byte;short Short;long Long ;double Double;float Float;char Character;
jdk 1.5 이후 이 몇 가지 데이터 형식 은 자동 으로 포장 하고 상 자 를 뜯 는 작업 을 실현 할 수 있 습 니 다.예 를 들 어 Integer i = 4;Integer i = new Integer (4) 에 해당 합 니 다. 포장 하 다 int j = i;자동 으로 상 자 를 뜯 습 니 다. int j = Integer. value Of (i) 에 해당 합 니 다.
기본 API 방법 은 학습 작업 에서 끊임없이 사용 해 야 하기 때문에 천천히 기억 할 것 이다.[상술 한 총 결 에 문제 가 있 을 수 있 으 니 여러분 의 비판 과 지적 을 바 랍 니 다.]
ASP. Net + Android + IOS 개발, Net 교육, 당신 과 의 교류 기대!
자세히 보기:http://edu.csdn.net
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
STL 학습노트(6) 함수 객체모방 함수는 모두pass-by-value이다 함수 대상은 값에 따라 전달되고 값에 따라 되돌아오기 때문에 함수 대상은 가능한 한 작아야 한다(대상 복사 비용이 크다) 함수 f와 대상 x, x 대상에서 f를 호출하면:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.