Java中String类必备知识总结

1. == 和 equals 方法的区别 ,这是面试必问的问题

"=="比较的是引用(是否指向同一个内存块),“equals”比较的是具体的内容

String name1="张三"        //直接赋值方式

String name2=new String("张三");   //new对象方式

String name3=name2  ;           //传递引用

name1==name2    false

name1==name3    false

name2==name3     true       

name1.equals(name2)    true

name1.equals(name3)     true

name2.equals(name3)    true

原理:由于常量池不存在两个相同的对象,所以name2和name3都指向JVM字符串常量池中"张三" 对象。

          而new关键字一定会产生一个对象,并且这个对象是存放在堆中的,所以String name2=new String("张三");

          产生两个对象,保存在栈中的name2和保存在堆中的张三,

2.String 两种实列化方式区别

直接赋值方式:创建的对象放在字符串对象池里,如果存在就不创建

new对象方式:每次都创建新的对象

String实例的值是通过字符数组实现字符串存储的。

3.字符串特性:

不能改变字符串的内容,要想改变,只能通过指向一个新的内存地址。因为在源码中其是非final修饰的,意味着其不能

被继承,并且其成员value也是final,因此字符串一旦创立就不能修改。

4.String常见的方法:

4.1   charAt :返回指定索引处的char值,索引范围为0-----length()-1

     String name="张三"

      char  ming =name.charAt(1)

4.2 length():返回字符串的长度

4.3  indexof:返回指定字符串在此字符串中第一次出现的处的索引

  String str="sadasd";

  str.indexof("d");

4.4  substring(int beginIndex    int endIndex)

返回一个新字符串,该字符串从指定的beginIndex处开始,直达索引endIndex -1处的字符,其长度为endIndex-beginIndex

包含起始字符,不包含结束字符

String str1="不开心每一天,不可能"

str.substring(1,6)

结果:开心每一天

4.5 toUpperCase() :全变成大写

      tolowercase():   全变成小写

4.6  Trim():去掉字符串前后空格

5."+"连接符解析

其原理是通过StringBuilder以及append方法实现的,在实际代码编程中,使用+和使用StringBuilder以及append方法

来拼接字符串对象是等价的。

注意:如果大量StringBuilder创建在堆内存中,必然会造成效率的损失,所以这种情况下建议在循环体外创建

一个StringBuilder对象调用append方法手动拼接

6 问题 题统计newStr中出现的英文字符   空格 其他的个数

    String   str ="asdaf    ddcxzcsd2312”

    int kongge=0

    int yingwen=0

    int qita=0;

    for(int i=0; i<newStr.length();i++){

    char  c=newStr.charAt(i);

    if(( c>= ‘a’&&c<'z‘)||( c>= ‘A’&&c<'Z‘){ 

        yingwen++}

        else if(c==  ‘’  ”){

        kongge++

        } else{

       qita++

       }

       }

原文地址:https://www.cnblogs.com/libaowen609/p/12819666.html