java基础-字符串

xiaoxiao2025-11-06  2

字符串

常量池:只是用来存放String类。jdk1.7以前是在方法区。1.7以后在堆。 intern():如果在常量池当中没有字符串的引用,那么就会生成一个在常量池当中的引用。相反则不生成。

String str1=new String("abc").intern(). String:(字符串常量)适合单线程。是一个fanal,不能试图修改原来的值,只能创造新的对象。一旦改变等于创造了新的对象。 String str="abc"; //存放在常量池中。 String str1=new String("abc") ; //创造一个新的对象,字符串存在对象的value数组中。 String.length:获取长度,也就是包含的字符数。 String str="abc"; int a =str.length(); String.charAt(int index ):根据传进来的角标获取这个角标上的字符。(返回值 char) String str="abc"; char ch=str.charAt(0);//'a'; String.indexOf(int ch):返回的是ch在字符串中第一次出现的位置。(返回值 int,也就是角标) String.indexOf(int ch,int fromIndex):从from的位置开始获取ch在字符串中出现的位置。没有找到返回-1 。(返回值 int,也就是角标) String str=”abcdeadhadhf"; str.indexOf('a');//返回角标0; str.indexOf('a',3);//从3角标这个位置开始索引’a'; String.indexOf(String str):返回的是str(字符串)在字符串中第一次出现的位置。(返回值 int,也就是角标(字符串中第一个字符的角标)) String.indexOf(String str,int fromIndex):从from的位置开始获取str在字符串中出现的位置。没有找到返回-1 (返回值 int,也就是角标) String str=”abcdeabcdf" ; str.indexOf(“ead”,3);//从3角标这个位置开始索引”ead";

lastIndexOf():反向查找。参数和前四个类似,只不过是从右边开始查找(是查找不是数,找到后返回角标)。但角标还是那个角标。

String.codePointAt(int index) :找到这个位置的字符,但返回的是unicode码。

String.codePointBefore(int index):找到这个角标,返回这个角标之前字符的unicode 码。

String.startsWith(str):判断是否以指定内容开头;返回值为boolean

String str="ArrayDamo.java" str.startsWith(Array); String.endsWith(str)/(String prefix, int toffset)从toffest角标开始判断。 :判断是否以指定内容结尾;返回值为boolean String str="ArrayDamo.java" str.endsWith(.java); String.isEmpty(): 原理是判断字符串长度是否为0;(“”)这是一个对象,(null)指向空。 String.contains(str):字符串是否包含某个字串。底层调用indexOf方法。 String.indexOf(str)也可以用于判断是否包含某个字串,找到返回角标,找不到返回-1. String str="ArrayDamo.java" str.contains(Damo); String.equals(str) 判断字符串内容是否相同。 String.equalsIgnoreCase(str):判断内容是否相同并忽略大小写。 String(int[] codePoints, int offset(开始下标), int count(长度)):这里的入参是一个codePoint数组。在构造函数中,将codePoint转换成对应的char,然后赋值给String对象的value。 codepoint 就是表里面字符对应的数字。 传别的打印不出来。 String(char value[], int offset, int count):传入一个字符数组,copy count位。 String(byte bytes[], int offset, int length, String charsetName):字节数组转字符串,charsetName(unicode) String.copyValueOf(char data[])/(char data[], int offset, int count) :静态方法。字符数组转字符串。 String.valueOf(int/double):基本数据类型转字符串。 String.toCharArray():将字符串转成字符数组。 String.getBytes():字符串转字节数组。 String.getChars(int srcBegin, int srcEnd, char dst[], int dstBegin):字符串转字符数组 String.substring(int beginIndex)(如果给0,默认取全部子串)/(int beginIndex, int endIndex):取子串。 StringBuffer(字符串变量):适合在多线程使用。append:追加。追加后不改变地址值。 synchronized:线程安全 . //StringBuffer对象和String对象之间的互转的代码如下: String s = “abc”; StringBuffer sb1 = new StringBuffer(“123”); StringBuffer sb2 = new StringBuffer(s); //String转换为StringBuffer String s1 = sb1.toString(); //StringBuffer转换为String sb2.append("fdhfhdfk");//追加,并不产生新的对象。 StringBuilder(字符串变量): append方法也不改变地址值,也不创建新的对象。适合单线程.

作业

public class StringDame { public static String index(String str,int n){ String str1=str.substring(0,n+1); String str2=str.substring(n+1); str=str2+str1; return str; } public static StringBuffer string(String str1){ char[] ch=new char [str1.length()]; str1.getChars(0,str1.length(),ch,0); int index=str1.indexOf(" "); int index1=str1.lastIndexOf(" "); String s1=str1.substring(index1+1,str1.length()); StringBuffer st=new StringBuffer(s1); st.append(ch,index,index1+1-index); st.append(ch,0,index); return st; } public static void main (String [] args){ String str=new String("abcdef"); int n=1; System.out.println(index(str,n)); String str1="Here"+" "+"is"+" "+"Tulun"; System.out.println(string(str1)); } }
转载请注明原文地址: https://www.6miu.com/read-5039166.html

最新回复(0)