字符串_Java学习笔记


字符串的特点:

  1. 字符串的内容永不可变
  2. 正是因为字符串不可改变,所以字符串是可以共享使用的
  3. 字符串效果上相当于是char[ ]字符数组,但是底层原理是byte[ ]字节数组

注意:程序中所有的双引号字符串,都是String类的对象,就算没有new,也照样是字符串

字符串的3+1(3种构造方法+1种直接创建)中创建方法:

三种构造方法

  • public String( );  创建一个空白字符串,不含有任何内容
  • public String(char[ ] array);  根据字符数组的内容,来创建对应的字符串
  • public String(byte[ ] array);  根据字节数组的内容,来创建对应的字符串

一种直接创建

  • String 对象名="字符串内容";  //右边直接用双引号
 1         String str1=new String("jslkfj");
 2         System.out.println("第2种创建方法"+str1);
 3 
 4         char[] str=new char[]{'s','o','k'};
 5         String str2=new String(str);
 6         System.out.println("第3种创建方法"+str2);
 7 
 8         byte[] str_=new byte[]{65,66,67};
 9         String str3=new String(str_);
10         System.out.println("第4种创建方法"+str3);
11         
12         //最常用也最简单
13         String str4="helloworld";
14         System.out.println("第5种创建方法"+str4);

 字符串常量池

  1.对于引用类型来说,==进行的是地址值比较  
  2.字符串常量池是Java内存堆中的一块存储区域,专门用来保存字符串直接创建出的字符串对象,而用其他方法创建的数组不在池中

 字符串常用成员方法

//与比较相关的常用方法
public boolean equals(Object obj);  <比较两个字符串是否相等>
注意:任何对象都能用Object进行接收;
     equals方法具有对称性;
     如果比较双方一个常量一个变量,推荐:"~~".equals.str,如果变量在前如果变量没有      赋值,会出现NullPointerException(空指针异常)错误。

public boolean equalsIgnoreCase(String str);  <忽略大小写,进行内容比较>
  


//与获取相关的常用方法
public int length();  <获取字符串长度>
punlic String concat (String str);  <将当前字符串和参数字符串拼接生成新的字符串>
public char charAt(int index);  <获取当前索引值位置的字符>
public int indexOf(String str);  <查找参数字符串在本字符串当中首次出现的索引位置,若没有返回-1>

//字符串的截取方法
public String substring(int index);  <返回新截取从参数位置一直到字符串末尾的子串>
public String substring(int begin,int end);  <返回begin到end位置的子串>
注意:[begin,end),包含左边不包含右边。

//与转换相关的常用方法
public char[] toCharArray();  <将当前字符串拆分成字符数组>
public byte[] getByte();  <获得当前字符串底层的字节数组>
public String replace(CharSequence oldString,CharSequence newString);
<将所有出现的老字符子串替换成新的字符子串,返回替换后的字符串>

//分割字符串的方法
public String[] split(String regex);  <按照参数的规则,将字符串切分为若干部分>
注意:split方法的参数其实是一个“正则表达式”,如果要用"."切割,必须写"\\."。