java基础—07

版权声明:中华人民共和国持有版权 https://blog.csdn.net/Fly_Fly_Zhang/article/details/83387047

字符串

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

String str1=new String("abc").intern().
  1. 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):取子串。
  1. 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");//追加,并不产生新的对象。

  1. 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));
    }
}

猜你喜欢

转载自blog.csdn.net/Fly_Fly_Zhang/article/details/83387047
今日推荐