zoukankan      html  css  js  c++  java
  • 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++

           }

           }

  • 相关阅读:
    es5预览本地文件、es6练习代码演示案例
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 838 推多米诺(暴力模拟)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 837 新21点(DP)
    Java实现 LeetCode 836 矩形重叠(暴力)
    Subversion under Linux [Reprint]
    Subversion how[Reprint]
  • 原文地址:https://www.cnblogs.com/libaowen609/p/12819666.html
Copyright © 2011-2022 走看看