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++

           }

           }

  • 相关阅读:
    条件判断
    字符串和编码
    排序算法 C++实现
    Ubuntu16.04下 pip的安装与使用
    剑指offer(19): 顺时针打印矩阵
    剑指offer(21):栈的压入、弹出序列
    派生类对象地址赋给基类指针后, 指针对基类和派生类的函数调用
    synergy: error while loading shared libraries: libdns_sd.so.1: cannot open shared object file
    OpenCV Error: Assertion failed + error: (-215) 使用ros opencv中的DNN模块报错
    《 MySQL必知必会 》下载 以及 Ubuntu16.04 下配置其使用的软件环境
  • 原文地址:https://www.cnblogs.com/libaowen609/p/12819666.html
Copyright © 2011-2022 走看看