String常用方法

String常用方法


String s1="abc" s1是一个类类型的变量,"abc"是一个对象

字符串一旦初始化就不可以被改变

String s2=new String("abc") s1在内存中是一个对象,s2在内存中是两个对象

String覆写了Object的equals方法,比较的是两个字符串是否相等。

将此 String 与另一个 String 比较,不考虑大小写:boolean equalsIgnoreCase(str)

字符串常见操作

1.获取

字符串长度:                 int length();

根据位置获取位置上的某个字符:      char charAt(int index);

根据字符ch获取在字符串中的位置: int indexOf(int ch);

字符串str              int indexOf(String str);

反向索引 int lastIndexOf(int ch);

2.判断

是否包含某一子串:             boolean contains(String str)

是否有内容:                  boolean isEmpty();

是否以指定内容开头:           boolean startsWith(String str);

是否以指定内容结尾:        boolean endsWith(String str);

if(str.indexOf("aa")!=-1), 既可判断,又可以获取位置、

3.转换

   字符数组转换为字符串

构造函数:String(char[] value)

String(char[] value, int offset, int count):字符数组中一部分转换为字符串

静态方法:static String copyValueOf(char[] data)

static String copyValueOf(char[] data, int offset, int count)

static String valueOf(char[] data):返回 char 数组参数的字符串表示形式。 [*]

字符串转换为字符数组[☆]

char[] toCharArray() :将此字符串转换为一个新的字符数组。

字节数组转换为字符串

String(byte[] bytes)

字符串转换为字节数组

byte[] getBytes(),字符串和字节数组在转换过程中可以指定编码表。

返回 int 参数的字符串表示形式:static String valueOf(int i) //String.valueOf(3);3+"" [*]

4.替换

String replace(char oldChar, char newChar);

如果替换的字符不存在,则返回原串,String s1="hello java";

String s2=s1.replace(‘a‘,‘n‘);

5.切割

String[] split(String regex);

ps:String s="zhangsan,lisi,wangwu";

String[] arr=s.plit(",");

6.子串

String substring(int beginIndex)

String substring(int beginIndex, int endIndex) //包含头不包含尾,如果角标不存在,会发生角标越界异常

7.转换,比较,去空格

转换大小写

String toUpperCase()

String toLowerCase()

去除两头空格

String trim()

ps: s.trim();

两字符串自然顺序的比较

int compareTo(String anotherString)

ps: String s1="a1c"; //1的ASCII为49

String s2="aaa";

sop(s1.compareTo(s2));//返回-48

StringBuffer、StringBuilder区别


1.增

面盘理论

StringBuffer sb=new StringBuffer();

StringBuffer sb1=new StringBuffer(34);

sb==sb1 是一个对象。添加了还是那个面盆。

特点1.长度可变2.可以操作多种数据类型3.最终会通过toString方法变成字符串。

sb.append("ad").append("true").append("false")支持方法调用链,生成一个长串。

StringBuffer insert(int index, 数据) 将数据插入指定位置。

2.删

删完后还是那个面盆

StringBuffer delete(int start,int end)         含头不含尾

StringBuffer deleteCharAt(int index)         删除指定位置的数据

sb.delete(0,sb.length());                    清空缓冲区

3.获取

char charAt(int index);

int indexOf(String str);

int lastIndexOf(int ch);

int length();

String substring(int start,int end)

4.修改[☆]

StringBuffer replace(int start,int end, String str) 含头不含尾,替换为str;

void setCharAt(int index, char ch)                 替换指定位置字符,不打印

5.翻转

StringBuffer reverse()

JDK1.5之后出现了StringBuilder,此次升级时为了提高效率。

StringBuffer是线程同步的,多线程用建议用StringBuffer

StringBuilder是线程不同步的 ,单线程效率高

升级三因素:提高效率,简化书写,提高安全性

字符串练习


/**

* 两个字符串中最大相同子串<br>

* <b>思路</b><br>

* 获取短的字符串的子串,按长度递减的方式<br>

* 判断子串是否contains在较长串中<br>

* 如果包含,则返回子串,即最大子串<br>

* */

public class MaxSameString {

public static void main(String[] args) {

String s1="sdfhellofsda";

String s2="sdhellodsd";

System.out.println(getMaxSameString(s1,s2));

}

public static String getMaxSameString(String s1,String s2){

String max="",min="";

max=(s1.length()>s2.length())?s1:s2;

min=(max==s1)?s2:s1;

for (int i = 0; i < min.length(); i++) {

for (int j = 0,k=min.length()-i; k!=min.length()+1; j++,k++) {

String temp=min.substring(j,k);

//System.out.println(temp);

if (max.contains(temp)) {

return temp;

}

}

}

return null;//执行不到,但是必须加上。

}

}


import java.util.Arrays;

/**

* 获取一个字符串在另一个字符串中出现的次数<br>

* <b>思路:</b><br>

* 1.定义一个计数器,<br>

* 2.获取key第一次出现的位置<br>

* 3.从第一次出现位置后剩余的字符串中继续获取key出现的位置<br>

* 每 获取一次就计数一次 <br>

* 4.当获取不时,计数完成<br>

* 不建议使用切的形式ps:kkddkk,是2个字符串,kkddkkff,切后是三个字符串

* */

public class CountStringDemo {

public static int getCount(String str,String key){

int count=0;

int index=0;

while ((index=str.indexOf(key))!=-1) {

str=str.substring(index+key.length());

System.out.println("str=.."+str);

count++;

}

return count;

}

public static void main(String[] args) {

String s="kkddkk";

System.out.println(getCount_2(s, "kk"));

System.out.println(Arrays.toString(s.split("kk")));

}

public static int getCount_2(String str,String key){

int count=0;

int index=0;

while ((index=str.indexOf(key,index))!=-1) {

System.out.println("index=.."+index);

index=index+key.length();

count++;

}

return count;

}

}


/**

* 除字符串空格<br>

* <b>思路:</b><br>

* 通过charAt()来判断所在位置是否是空格,是空格则指针向前或向后一位判断<br>

* 同过substring(start,end)方法来生成指针所在空间内的字符串。

* */

public class MyTrimTest {

public static void main(String[] args) {

String s=" a bfd ";

String s1=myTrim(s);

sop(s);

sop(s1);

}

private static void sop(String str) {

System.out.println(str);

}

public static String myTrim(String str){

int start=0,end=str.length()-1;

while (start<=end&&str.charAt(start)==‘ ‘)

start++;

while (start<=end&&str.charAt(end)==‘ ‘)

end--;

return str.substring(start, end+1);

}

}


/**

* 将字符串翻转<br>

* <b>思路:</b><br>

* 将字符串变成数组<br>

* 将数组翻转<br>

* 将数组变成字符串<br>

* */

public class ReverseSrting {

public static void main(String[] args) {

String s="fjadsfgjreog";

String s1=revStr(s);

String s2=revStr(s,3,8);//从start到end之间翻转,含头不含尾

sop(s);

sop(s1);

sop(s2);

}

private static String revStr(String str, int i, int j) {

char[] arr=str.toCharArray();

reverse(arr,i,j);

return new String(arr);

}

private static void reverse(char[] arr, int i, int j) {

for (int start = i,end=j-1; start < end; start++,end--) {

swap(arr,start,end);

}

}

private static void sop(String s) {

System.out.println(s);

}

public static String revStr(String str){

/*char[] arr=str.toCharArray();

reverse(arr);

return new String(arr);    */

return revStr(str, 0, str.length());

}

/*private static void reverse(char[] arr) {

for (int start = 0,end=arr.length-1; start < end; start++,end--) {

swap(arr,start,end);

}

}*/

private static void swap(char[] arr, int start, int end) {

arr[start]=(char) (arr[start]^arr[end]);

arr[end]=(char) (arr[start]^arr[end]);

arr[start]=(char) (arr[start]^arr[end]);

/*char temp=arr[start];

arr[start]=arr[end];

arr[end]=temp;*/

}

}

时间: 2024-08-06 07:59:28

String常用方法的相关文章

Javascript语言精粹之String常用方法分析

Javascript语言精粹之String常用方法分析 1. String常用方法分析 1.1 String.prototype.slice() slice(start,end)方法复制string的一部分来构造一个新的字符串 start<0时,它将于string.length相加 end参数可选,默认值为string.length.如果end<0,它将于string.length相加 var text='and in it he say " Any damn fool could'

JVM内存分配及String常用方法

一,JVM内存分配和常量池 ? 在介绍String类之前,先来简单分析一下在JVM中,对内存的使用是如何进行分配的.如下图所示(注意:在jdk1.8之后便没有方法区了): ? ? 如上JVM将内存分为多个不同的区域,这些区域都有各自的用途.创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束来建立和销毁. ? 区域名称的说明: 1.1,方法区: ? 属于数据共享内存区域,存储已被虚拟机加载的类信息.常量.静态变量.即时编译器编译后的代码等数据. 1.2,虚拟机

Java 中String常用方法

java中String的常用方法 1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2.charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3. getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[

Java中String常用方法

java中String的常用方法1.length() 字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2.charAt() 截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3. getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[]

String常用方法 集锦

String的常用方法: * equals(): 判断两个String的值 是否相等 ★★★ * equalsIgnoreCase(): 判断两个String的值 是否相等 并且忽略大小写 ★★★ * * startsWith():以什么开始 * endsWith():以什么结束 * * isEmpty():判断字符串的长度是否为0 * length():计算字符串的长度 ★★★ * getBytes():★★★ * * str.substring():字符串的截取 ★★★★★ * split(

String常用方法简介

1. 创建String对象的常用方法 (1) String s1 = "mpptest" (2)  String s2 = new String(); (3) String s3 = new String("mpptest") 2. String中常用的方法,用法如图所示,具体问度娘 原文地址:https://www.cnblogs.com/mpp0905/p/10372061.html

JavaScript String常用方法和属性

一.string中的常用属性 1. length 说明: 字符串的长度属性,一直保持跟踪着该字符串中包含的字符数. 二.string中的常用方法 1. toLowerCase() 和 toUpperCase() 说明: toLowerCase(): returns a copy of the string with its letters converted to lowercase. Numbers, symbols, and other characters are not affected

java之string常用方法&lt;二&gt;

1. 获取方法 int length()  获取字符串的长度, char charAt(int index) 获取特定位置的字符 (角标越界), int indexOf(String str) 获取特定字符的位置(overload),查找子串第一次出现的索引值,若没找到则返回-1表示, int lastIndexOf(int ch) 获取最后一个字符的位置,查找子串最后一次出现的索引值,若没找到则返回-1表示. public class Demo02 { public static void m

string常用方法总结

1.string转char* string s = "1234"; char* c = s.c_str(); 2.string转int string s = "1"; int num = atoi( s.c_str() ); 3.substr函数 string sub = s.substr(0,i); //第一个参数起始位置,第二个参数substring中字符个数