字符串_Java学习笔记
字符串的特点:
- 字符串的内容永不可变
- 正是因为字符串不可改变,所以字符串是可以共享使用的
- 字符串效果上相当于是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方法的参数其实是一个“正则表达式”,如果要用"."切割,必须写"\\."。