一、获取:

  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. Java 8 Date Time API Example Tutorial – LocalDate, Instant, LocalDateTime, Parse and Format

    参考 Java 8 Date and Time API is one of the most sought after change for developers. Java has been mis ...

  2. 利用iOS8新特性计算cell的实际高度

    在计算cell的实际高度是 我们一般是通过计算frame  拿到最底部一个控件的最大Y值从而的到cell 的高度  算来算去  比较麻烦 其实,iOS8已经提供了直接通过Cell高度自适应的方法了,根 ...

  3. MSBuild编译扩展

    新增一个C#工程,用记事本打开工程文件(.csproj结尾),滚动条拉到最后,大家可以看到一段如下的代码,其中<Target Name="BeforeBuild">和& ...

  4. Controller和RequestMapping

    一.Controller返回值,String或者ModelAndView       首先看一下spring的配置文件,如下: 第一种,返回类型为String,Controller中的方法如下: 根据 ...

  5. 为什么margin-top不是作用于父元素

    为什么margin-top不是作用于父元素:建议:尽可能的手写代码,可以有效的提高学习效率和深度.至于margin-top属性的基本用法再简单不过,那就是设置一个对象的上外边距,看下面的代码实例: & ...

  6. Better Completion插件使用

    最近学习Bootstrap,发现Sublime text2不支持Bootstrap的代码提示,所以得装一个Bootstrap的代码提示插件.试了好几个之后发现Better-Completion最方便, ...

  7. WEB前端优化一些经验技巧

    引言: 1. 慢的页面可能会网站失去更多的用户. 2. 慢500ms意味着20%的用户将放弃访问(google) 3. 慢100ms意味着1%的用户将放弃交易(amazon) 前段时间偶然看到网上的两 ...

  8. Java算法求最大最小值,冒泡排序,斐波纳契数列一些经典算法<不断更新中>

    清明在家,无聊,把一些经典的算法总结了一下. 一.求最大,最小值 Scanner input=new Scanner(System.in); int[] a={21,31,4,2,766,345,2, ...

  9. GDI+中发生一般性错误(转载)

    在开发.NET应用中,使用 System.Drawing.Image.Save 方法而导致“GDI+ 中发生一般性错误”的发生,通常有以下三种原因:1. 相应的帐户没有写权限.解决方法:赋予 NETW ...

  10. props验证

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...