一、获取:

  1、获取字符串的长度(注意是方法,不是跟数组的属性一样的)

    int length();

1 public static void getLength(){
2 String s = "java01";
3 int len = s.length();
4 System.out.println(len);
5 }

  2、根据位置,获取该位置的那一个字符(只能是单个字符)

    char charAt(int index);

1 //根据指定位置获取对应的那个字符,只能是一个字符不能是字符串
2 public static void getChar(){
3 String s1 = "java01";
4 char ch = s1.charAt(3);
5 System.out.println(ch);
6 //s1.charAt(45);当访问到字符串中不存在的角标是会发生StringIndexOutOfBoundsException,即字符串角标越界异常
7 }

  

  3、根据字符或字符串获取索引,即根据字符或字符串获取该字符或字符串在整个字符串中的位置,如果字符串中没有该字符或字符串会返回-1

    int indexOf(int ch):返回的是ch在字符串中第一次出现的位置

    int indexOf(int ch,int fromIndex):从fromIndex指定位置开始查找,获取ch在字符串中出现的位置

    int indexOf(String str):返回的是str在字符串中第一次出现的位置
    int indexOf(String str,int fromIndex):从fromIndex指定位置开始查找,获取str在字符串中出现的位置

1 public static void getIndexOf(){
2 String s = "javascript";
3 int x1 = s.indexOf('s');
4 int x2 = s.indexOf('a',2);
5 int x3 = s.indexOf("script");
6 int x4 = s.indexOf("script",2);
7 System.out.println("x1="+x1+",x2="+x2+",x3="+x3+",x4="+x4);
8 }

  

  4、反向索引一个字符或字符串出现的位置 

    public int lastIndexOf(int ch) 从字符串的最后向前查找,指定的字符是否存在,如果存在则返回位置,如果不存在则返回-1
    public int lastIndexOf(int ch,int fromIndex) 从字符串的指定的末尾向前查找,指定的字符是否存在,如果存在则返回位置,如果不存在则返回-1

1 public static void getLastIndexOf() {
2 String s = "javascript";
3 int x = s.lastIndexOf('a');
4 System.out.println("x="+x);
5}

  

  5、获取字符串中的一部分,即获取子串

    String substring(begin);//从指定位置开始到结尾包含头

    String substring(begin,end);//,指定开始和结尾 包含头不包含尾

1 public static void getSubstring(){
2 String s1 = "javascript";
3 String s2 = s1.substring(4);
4 String s3 = s1.substring(0,5);
5 System.out.println("s2="+s2+",s3="+s3);
6 }

二、转换:

  1、将字符数组转成字符串

      构造函数:

        String(char[])
                 Stirng(char[],fffset,count):将字符数组中的一部分转换字符串

      静态方法:(直接用String类名调用,如:String s = String.copyValueOf())
                  static String copyValueOf(char[]);
                  static String copyValueOf(char[] ,int offset, int count);(offset表示起始位,count表示个数.如果超过了字符数组的长度,也发生字符串角标越界)
      
                //ValueOf这个方法除了可以将字符数组变成字符串之外,也可以将其他基本数据类型变成字符串
                static String valueOf(char[]);
                static String valueOf(char[] data, int offset, int count)

 1 public static void CharsToString(){
2 char[] arr ={'j','a','v','a','s','c','r','i','p','t'};
3 //通过String类的构造函数将字符数组转成字符串(可以将字符数组的一部分转成字符串)
4 String s1 = new String(arr);
5 String s2 = new String(arr,2,7);
6 System.out.println("s1="+s1+",s2="+s2);
7
8   //通过String类中的静态方法将字符数组转成字符串(可以将字符数组的一部分转成字符串)
9 String s3 = String.copyValueOf(arr);
10 String s4 = String.copyValueOf(arr, 2, 7);
11 System.out.println("s3="+s3+", s4="+s4);
12 }

  2、将字符串转成字符数组

    char[] toCharArray();

1 public static void StringToChar(){
2 String s = "javascript";
3 char[] arr = s.toCharArray();
4 for(char arrs : arr){
5 System.out.println(arrs);
6 }
7 }

  3、将字节数组转成字符串(只能用构造函数)

      String(byte[])
      Stirng(byte[],fffset,count):将字节数组中的一部分转

      Stirng(byte[],String charsetName)(通过使用指定的charset解码制定的byte数组,构造一个新的String)

    String info = "小白是一个无节操,无干爹,无底线的三无少年";

        //把字符串转换成字节数组
byte[] bytes = info.getBytes();
for(int i = 0;i<bytes.length; i++){
System.out.print(bytes[i]+",");
}
System.out.println(); //把字节数组转换成字符串
String s1 = new String(bytes);
System.out.println("转换后的字符串为:"+s1); String s2 = new String(bytes,0,16);//结果是:小白是一个无节操,因为一个汉字是两个字节,如果是15的话最后一个汉字打印的是一个? 因为找不到
System.out.println("s2="+s2); String s3 = new String(bytes,"gbk");//系统是gbk编码,如果这里用了utf-8会变成乱码
System.out.println(s3);

  4、将字符串转成字节数组(字符串和字节数组在转换过程中,是可以指定编码表的。)

      byte[] getBytes();

1 public static void StringToBytes(){
2 String s1 = "javascript";
3 byte[] arr = s1.getBytes();
4 for(byte arrs : arr){
5 System.out.println((char)arrs);
6 }
7 }
    String info = "小白是一个无节操,无干爹,无底线的三无少年";

        //把字符串转换成字节数组
byte[] bytes = info.getBytes();
for(int i = 0;i<bytes.length; i++){
System.out.print(bytes[i]+",");
}

  5、将基本的数据类型转成字符串

      static String valueOf(int)

      static String valueOf(double)

      3+"";     String.valueOf(3);//这是一样的

  6、将字符串转成大写或者小写

      String toUpperCase();

      String toLowerCase();

1 public static void ToUpper_Lower(){
2 String s1 = "javascript";
3 String s2 = s1.toUpperCase();//转成大写
4 String s3 = s2.toLowerCase();//转成小写
5 System.out.println("s2="+s2+",s3="+s3);
6 }

三、判断:

  1、字符串中是否含某一个子串(不能判断是否包含某一个字符,只能是字符串)

    boolean contains(String str);        //返回一个字符串是否存在,存在返回true 不存在返回false

    特殊之处:indexOf(str)可以索引str第一次出现位置,如果返回-1,表示该str不在字符串中存在  所以也可以用于对指定判断是否包含 该方法既可以判断又可以获取出现的位置
    只用于判断时用contains,既要判断又要获取位置用indexOf

1 public static void containsDemo() {
2 String s = "javascript";
3 boolean b = s.contains("java");
4 System.out.println(b);
5 }

  2、字符中是否有内容

    boolean isEmpty();       //就是判断长度是否为0

1 public static void isEmptyDemo() {
2 String s = " ";//空格也是一个字符
3 boolean b = s.isEmpty();
4 System.out.println(b);
5 }

  3、字符串是否以指定的内容开头与字符是否是以指定内容结尾(接受的是字符串)

    boolean startsWith(str);

    boolean startsWith(str,int toffset);//从指定的位置开始判断是否以指定的内容开头

      boolean endsWith(str);

1 public static void startsWith_endsWith() {
2 String s = "Array.java";
3 boolean b1 = s.startsWith("Array");//开发中可以用于判断该文件名称是否是Array单词开头
4 boolean b2 =s.endsWith(".java");//开发中可以用于判断该文件名的后缀是否是.java文件
5 System.out.println("b1="+b1+",b2="+b2);
6 }

  4、判断字符串内容是否相同

    (复写了Object类中的equals方法,定义了自己的比较方式,比较字符串内容是否相同,相同为true,不相同为false)  boolean equals(str);

1 public static void equalsDemo() {
2 String s1 = "javascript";
3 String s2 = "javascript";
4 String s3 = "html+CSS";
5 boolean b1 = s1.equals(s2);
6 boolean b2 = s1.equals(s3);
7 System.out.println("b1="+b1+",b2="+b2);
8 }

判断内容是否相同,并忽略大小写    boolean equalsIgnoreCase();

  5、对两个字符串进行自然顺序的比较(该方法能比较出谁大谁小,而equals只是比较两个对象是否相等)

    int compareTo(string);

    对象之间的比较用的是compareTo方法,基本数据类型数据之间的比较用的是大于号,小于号,等于号这些运算符

1 public static void compareToDemo() {
2 String s1 = "javascript";
3 String s2 = "javascript";
4 String s3 = "java";
5 int b1 = s1.compareTo(s2);
6 int b2 = s1.compareTo(s3);
7 int b3 = s3.compareTo(s1);
8 System.out.println("b1="+b1+",b2="+b2+",b3="+b3);
9 }

四、其他常用的方法:

  1、替换(将字符串中的某个字符或某部分字符串替换)
        public String replace(char oldChar,char newChar) 替换指定字符

      public String replace(CharSequence target,CharSequence replacement) 替换指定字符串
        public String replaceAll(String regex,String replacement) 替换指定字符串
      public String replaceFirst(String regex,String replacement) 替换第一个满足条件的字符串

1 public static void replaceDemo() {
2 String s = "javascript";
3 String s1 = s.replace('a', 'b');
4 String s2 = s.replace("java", "php");
5 System.out.println("s1="+s1+",s2="+s2);
6 }
public class EightFour {
public static void main(String[] args) {
String info = "小白长a的吧,像一个背靠着d墙没牙的,老头在喝粥"; //替换指定字符
String s1 = info.replace(',' , ':');
System.out.println(s1); //替换指定字符串
String s2 = info.replace("小白", "大黑菜");
System.out.println(s2); String s3 = info.replaceAll("的", "fuck");
String s4 = info.replaceAll("[a-z]", "&");//第一个参数表示的是正则表达式,这里表示a到z的字母都可以替换成&符号
System.out.println(s3);
System.out.println(s4); String s5 = info.replaceFirst("一", "#");//也可以像replaceAll方法一样使用正则表达式
System.out.println(s5); }
}

  2、切割(返回的是一个字符串数组)

      public String[] split(String regex) 按照指定的字符串拆分
      public String[] split(String regex,int limit) 拆分字符串,并指定拆分的个数

1 public static void splitDemo() {
2 String s = "java,javascript,php";
3 String[] ss = s.split(",");//这里要是双引号
4 for(String sss : ss){
5 System.out.println(sss);
6 }
7 }
public class EightSix {
public static void main(String[] args) {
String info = "怀才就像a怀孕-时间久了才能b-看的c出来"; String[] s1 = info.split("-");
for(int i = 0; i<s1.length; i++){
System.out.println(s1[i]);
}
String[] s2 = info.split("[a-z]");//参数可以使用正则表达式
for(int i = 0; i<s2.length; i++){
System.out.println(s2[i]);
} String[] s3 = info.split("-", 0);//第二个参数表示,将这个字符串拆分为多少个字符串,如果传入的个数超过了第一个参数的个数,那么有多少拆多少,传入0也是有多少拆多少
for(int i = 0; i<s3.length; i++){
System.out.println(s3[i]);
} }
}

  3、将字符串两端的多个空格去除  ,中间的空格不去  

    String trim();

1 public static void trimDemo(){
2 String s = " javas cript "
3 String ss = s.trim();
4 System.out.println(s);
5 System.out.println(ss);
6 }

  4、字符串连接操作

    public String concat(String str)

String info = "   Time是把杀猪刀,黑了      木耳,紫了葡萄,软了香蕉。 ";

String s4 = info.concat("我的fuck");
System.out.println(s4);

  5、比较(比较两个字符串内容是否相同)

    equals(String str):复写了Object中的equals方法,重新定义为比较两个字符串的内容是否相同并区分大小写

public class Text {
public static void main(String[] args) {
String s1 = "WeChat";
String s2 = "zhong";
System.out.println(s1.equals(s2));
}
}

  6、equalsIgnoreCase(String str):

    比较两个字符串的内容是否相同,不区分大小写

public class Text {
public static void main(String[] args) {
String s1 = "WeChat";
String s2 = "wechat";
System.out.println(s1.equalsIgnoreCase(s2));
}
}

该方法这实际应用中用的非常多,比如我们在编写一个用户登录界面的时候,需要将用户的姓名与数据库里面的姓名进行比较,这时如果我们用equals方式来比较,就可能出错,比如程序可能认为Tom和tom不是同一个人,这样程序就不够友好了,想要让程序友好一些,不出现这样的错误,就要用  方法equalsIgnoreCase来做姓名这个字段的验证

String类中常用的操作的更多相关文章

  1. String类中常用的方法(重要)

    1.字符串与字节 public String(byte[] byte); 将全部字节变成字符串 public String (byte[] byte,int offset,int length) 将部 ...

  2. String类中常用的方法

    @Test public void demo(){ // 以下为String中的常用的方法及注释, 最常用的注释前有**标注 String s = "abcdefg123456"; ...

  3. Java中String类中常用的方法

    1.字符串与字符数组的转换 用toCharArray()方法将字符串变为字符数组 String str = "abcdef"; char c[] = str.tocharArray ...

  4. 2017.12.11 String 类中常用的方法

    1.编写程序将 "jdk" 全部变为大写,并输出到屏幕,截取子串"DK" 并输出到屏幕 package demo; import java.util.Scann ...

  5. 27 string类中常用的方法列表

    1. 获取方法 int length()     获取字符串的长度 char charAt(int index) 获取特定位置的字符 (角标越界) int indexOf(String str) 获取 ...

  6. java面向对象中的String类中12种常用的方法

    1.字符串与字符数组的转换 字符串可以使用toCharArray()方法变成一个字符数组,也可以使用String类的构造方法把一个字符数组变成一个字符串. public class StringAPI ...

  7. 总结 String、StringBuffer与StringBuilder类中常用的方法

    一.String类的常用方法 1.获取: 1)获取字符串str长度 int i = str.length(); 2)根据位置(index)获取字符 char c = str.charAt(index) ...

  8. Java String类中的intern()方法

    今天在看一本书的时候注意到一个String的intern()方法,平常没用过,只是见过这个方法,也没去仔细看过这个方法.所以今天看了一下.个人觉得给String类中加入这个方法可能是为了提升一点点性能 ...

  9. php面向对象类中常用的魔术方法

    php面向对象类中常用的魔术方法   1.__construct():构造方法,当类被实例化new $class时被自动调用的方法,在类的继承中可以继承与覆盖该方法,例: //__construct( ...

随机推荐

  1. myeclipse安装本地maven fastdfs_client.jar

    为了方便应用程序的访问FastDFS,官网提供了fastdfs-client-java,以便更好的与应用程序结合使用. 下载fastdfs-client-java源码添加到项目工程里面,添加配置文件: ...

  2. 2013 ACM/ICPC 长沙现场赛 A题 - Alice's Print Service (ZOJ 3726)

    Alice's Print Service Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice is providing print ser ...

  3. Guzzle Unable to parse JSON data: JSON_ERROR_SYNTAX - Syntax error, malformed JSON

    项目更新到正式平台时,出现Guzzle(5.3) client get请求出现:Unable to parse JSON data: JSON_ERROR_SYNTAX - Syntax error, ...

  4. shell 数组

    数组赋值:(1) array=(var1 var2 var3 ... varN)(2) array=([0]=var1 [1]=var2 [2]=var3 ... [n]=varN)(3) array ...

  5. IOS 应用程序启动加载过程(从点击图标到界面显示)

    今天帮同事解决问题的时候发现,程序BUG是由加载过程引起的.所以当局部代码没有问题,但是程序一运行却总不是我们想要结果的时候,我们应该想想是不是因为我们忽略了试图加载过程的原因.下面我们用一个例子来简 ...

  6. angularJs中ui-router的使用

    学习使用angular中,ui-route是其中的一个难点,简单使用没什么问题,但涉及到多级嵌套,就感觉有茫然,查了很多资料,踩过很多坑,到目前为止也不能说对ui-route有全面了解:这里只是把填补 ...

  7. JavaScript DOM编程艺术 - 读书笔记1-3章

    1.JavaScript语法 准备工作 一个普通的文本编辑器,一个Web浏览器. JavaScript代码必须通过Html文档才能执行,第一种方式是将JavaScript代码放到文档<head& ...

  8. TreeSet集合

    TreeSet集合 TreeSet集合是一个依靠TreeMap实现的有序集合,内部存储元素是自动按照自然排序进行排列,所以如果想要保留存储时的顺序,那么就不建议使用TreeSet. TreeSet继承 ...

  9. starling 中 的特效

    一. 最好用同一张图片进行缩放变形等处理后组合,这样可以每帧一draw

  10. 快速排序算法 Quick sort

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4046189.html 首先随机选择一个轴,并调整数组内各个数字,使得比轴值大的数在轴的右边, ...