String类进阶理解

更新时间:2020-08-05 16:06:12 点击次数:1057次
String类位于java.lang包下,是Java语言的核心类,提供了字符串的比较、查找、截取、大小写转换等操作;

String类被final关键字修饰,意味着String类不能被继承,并且它的成员方法都默认为final方法;字符串一旦创建就不能再修改。

Java语言为“+”连接符(字符串连接符)以及对象转换为字符串提供了特殊的支持,字符串对象可以使用“+”连接其他对象。

//示例:对象转字符串
public class StringSpeechUser {
 //定义两个变量a,b
 private int a;
 private int b;
 public int getA() {
 return a;
 }
 
 public void setA(int a) {
 this.a = a;
 }
 
 
 public int getB() {
 return b;
 }
 
 public void setB(int b) {
 this.b = b;
 }
  /* @Override 
   public String toString() { return "StringSpeechUser [a=" + a +
   ", b=" + b + "]"; }
*/
}
public static void main(String args[]){
 StringSpeechUser a = new StringSpeechUser();
 a.setA(5);
 a.setB(7);
 System.out.println("a.a:"+a.getA());
 System.out.println("a.b:"+a.getB());
 System.out.println(a);
 }
/* a.a:5
 a.b:7
 stringspeechbeans.StringSpeechUser@659e0bfd
*/
/*可以看到,本来我是想输出a和b的值,但是结果的第三行却不是我们想要的结果。为什么呢?
object中有一个toString()的方法,我们需要重写这个方法才能按照我们自己的意愿输出,将上面的程序稍作修改,即添加改写toString函数的代码;
添加后:
a.a:5
a.b:7
StringSpeechUser [a=5, b=7];
*/


toString() 将类的信息以字符串的形式表示出来.

通常开发者会输入对象,为了能够更加快速清晰的知道该对象中的属性的值分别都是什么,此时就会重写该类的toString 方法.

直白点说:toString方法是系统提供的一种输出格式.

@Override
public String toString() {
    return "User [uid=" + uid + ", username=" + username + ", password=" + password + "]";
}
User user = new User();
System.out.println(user);
//toString方法时默认自动调用的,其实真正的写法是:user.toString()
创建一个空的字符串对象,调用其toString方法后为什么输出的不是一串地址?

String类重写了toString方法,返回的是当前的字符串,创建空对象时并没有给字符串.

Object obj = new String();
System.out.println(obj);
String str = new String();
System.out.println(str.toString());
//String 源码
/*public String toString() {
    return this;
}*/
字符串和数字之间的类型转换:

数字转换为字符串:

1. valueOf()                                         String numStr = String.valueOf(123);
2. 拼接                                              String numStr = 123 + "";

字符串对象创建问题:

public static void main(String[] args) {
    String name = "abc";//要记得java里面万物皆对象

    String str = new String("a");//创建了两个对象

    String str1 = "hello";

    String str2 = "world";

    String str3 = "helloworld";

    String str4 = str1+str2;

    System.out.println(str3 == str4);//fauls
    System.out.println(str3.equals(str4));//true

    String str5 = "a"+"b"+"c";
    String str6 = "abc";
    System.out.println(str5==str6);//true

}
/*
==对于基本数据类型比较的是值,对于引用数据类型比较的是地址

equals比较的是地址,在字符串中是先比较地址再比较值
*/

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!