String

Posted yusiming

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了String相关的知识,希望对你有一定的参考价值。

String 类
  Java没有内置的字符串类型,而是提供了一个String类,所有用双引号括起来的字符串都是String类的一个实例对象,

String s = "ysm";

  String类的subString(int a ,int b)方法可以从大串中提取小串,从a位置开始截取b - a 个字符

String s = "yusiming";
//从0开始截取3个字符,"yus"
String s1 = s.subString(0,3);

  Java中可以使用"+" 加号拼接字符串,当一个非字符串与一个字符串对象使用+ 连接时,会自动调用非字符串的toString方法,可以说任何一个Java对象都可以转换为字符串,

String s = 3 + "4546";

  Java中的字符串永远不能被修改,是不可变的,字符串"Hello"永远包含字符H、e、l、l、o,不能修改其中任意一个字符,例如:
  String s = "Hello"; 不能够修改"Hello",但是可以修改字符串变量s ,可以让s引用一个新的字符串,
  String s = "yusiming";
  但是字符串不可变也有好处,编译器可以让字符串共享,
  String s1 = "Hello";
  String s2 = s1;
  s1和s2 共享一个“Hello”字符串
  当对字符串变量的修改很少,变量之间的比较很多时,使用这种方式效率很高,当需要将多个字符串或者字符拼接成一个总的字符串时我们应该使用StringBuilder类来完成,

检测字符串是否相等

  我们要使用equals方法来检测,s.equals(t),若字符s等于t,返回true,否则返回false,s和t可以是字符串变量,也可以是常量,但是一定不能使用== 来判断两个字符串是否相等,当 == 符号作用于基本数据类型上时,可以用来判断是否相等,当作用于引用类型时,判断的是引用的值是否相等,当 == 作用于字符串时,只能判断两个字符串是否存储在同一位置上,当然如果在同一位置,两个字符串必然相等,但是两个相等的字符串也有可能放在不同的位置上,这时使用== 是一个不明智的选择,JVM只会将字符串常量共享,而subString方法产生的字符串是不会被共享的,来看例子:

String s = "yusiming";
String s1 = "yus";
String s2 = s.substring(0,3);
String s3 = s1;
String s4 = s.substring(0,3);
System.out.println(s1 == s2); // false ,subString()方法产生的字符串,不会被共享
System.out.println(s1.equals(s2)); // true,equals方法比较的是对象中的字符串是否一致,
System.out.println(s1 == s3); // true,"yus"字符串常量会被共享
System.out.println(s3 == s4); // false, 同理subString()方法产生的字符串,不会被共享
// true 但是 + 产生的字符串是可以共享的,
// 但是每次+ 都会产生一个新的字符串对象,如果要频繁进行字符串拼接,使用StringBuilder类,
System.out.println("1" + "2" == "1" + "2");

String类中的常用方法如下:

  • charAt(int index)
  • compareTo(String other)endsWith(String suffix);
    • 按字典序列,若字符串位于other前面返回一个负数
    • 若字符串位于other后面,返回一个正数
    • 若相等,返回0
  • endsWith(String suffix);

  • startWith(String prefix)
  • equals(String other)
  • equalsIgnoreCase(String other)
  • indexOf(String str);返回str在字符串中第一次出现的位置,
  • indexOf(String str,int formIndex);返回str在字符串中第一次出现的位置,从formIndex位置开始
  • lastIndexOf()返回str在字符串中最后一次出现的位置,
  • lastIndexOf(String str,int formIndex);返回str在字符串中第一次出现的位置,从formIndex位置开始
  • length(),replace(oldString, newString) ,使用newString代替字符串中所有的oldString,参数可以是String或者StringBuilder
    • 数组是length属性
    • String是length方法
  • replace(oldString, newString) ,使用newString代替字符串中所有的oldString,参数可以是String或者StringBuilder

  • subString(int beginIndex)
  • subString(int beginIndex, int endIndex)
  • toLowerCase
  • toUpperCase
  • trim 去除字符串头部和尾部的空格

StringBuilder类
  当需要进行较多的字符串拼接工作时,如果每次都采用 + 加号来连接字符串,即浪费空间,效率又低,因为每次使用加号拼接字符串都会产生一个新的字符串对象,所以我们可以使用StringBuilder类完成字符串连接,

StringBuilder builder = new StringBuilder();
builder.append("yu");
builder.append("si");
builder.append("ming");
String s = builder.toString();

 

  

 










以上是关于String的主要内容,如果未能解决你的问题,请参考以下文章

如何理解这段代码片段中的两对括号?

Failed to convert property value of type ‘java.lang.String‘ to required type ‘int‘ for property(代码片段

面试常用的代码片段

21个常用代码片段

js常用代码片段

java.lang.NullPointerException: Attempt to invoke virtual method ‘int android.database.sqlite异常(代码片段