23-1.Java中的String类整理及面试题(一)

1.java.lang.String:代表的字符串:字符串是一个常量,一旦被赋值了,其值(地址值)不能被更改.

  推荐的使用方式:String  变量名 = "xxxx" ;//xxxx代表 的当前String的实例.

2.String类的常用的转换功能: (重点)

 byte[] getBytes()  :将字符串转换成字节数组 (编码)如果方法为空参,使用平台默认的编码

 集进行编码(utf-8:一个中文对应三个字节)

 byte[] getBytes(String charset):使用指定的字符集进行编码

 String(byte[] bytes):使用默认字符集进行解码

 String(byte[] bytes,指定字符集)

字符集:  gbk :一个中文两个字节(中国中文编码表)
              gb2312:gbk升级版(含义有一个中文字符:中国的中文编码表)
              iso-8859-1:拉丁文码表
              utf-8:任何的浏览器--->都支持 utf-8格式 (后期统一个)
              unicode:国际编码表
              JS:日本国际 电脑系统 一个字符集

   Arrays静态功能:public static String toString(int/byte/float/double...[] a):

    将任意类型的数组---->String

public char[] toCharArray():将字符串转换成字符数组
public String toString():返回自己本身---"当前字符串的内容"
public String toUpperCase():将字符串转换成大写 

public String toLowerCase():将字符串转换成小写

public class StringDemo {
    public static void main(String[] args)  {
        //定义一个字符串
        String s = "helloworldJavaEE" ;
        char[] chs = s.toCharArray();
        //遍历字符数组
        for(int x = 0 ; x < chs.length;  x ++){
            System.out.print(chs[x]);
        }
    }
}

3.String类型的判断功能 

 public boolean equals(Object anObject):比较两个字符的内容是否相同 (区分大小写)
 public boolean equalsIgnoreCase(String anotherString):比较两个字符串是否相同(不区分大小写)
 public boolean startsWith(String prefix):判断字符串是否以指定的内容开头
 public boolean endsWith(String suffix):判断字符串是否以指定的内容结尾
 boolean isEmpty()  判断字符串是否为空 :若为空,则返回true;否则返回false
 String s = "" ;// 空字符串 ,存在String对象 ""
 String s = null ; 空值 (空对象) null:引用类型的默认值

4.String类的获取功能:(重点) 

 int length():获取字符串长度
 public char charAt(int index);获取指定索引处的字符
 public String concat(String str):将指定的字符串和当前字符串进行拼接,获取一个新的字符串
 public int indexOf(int ch):返回指定字符第一次出现的索引值
 public int lastIndexOf(int ch):返回值指定字符最后一次出现的索引值
 public String[] split(String regex):拆分功能:通过指定的格式将字符串---拆分字符串数组

 public String substring(int beginIndex) :从指定位置开始默认截取到末尾 ,角标从0开始
 public String substring(int beginIndex,int endIndex)从指定位置开始,截取到位置结束(包前不包右),只能取到endIndex-1处
 public static String valueOf(boolean/int/long/float/double/char...Object b)万能方法,将任意类型转换String类型

package Day_16_1;

public class StringDemo {
    public static void main(String[] args) {

        String str = "helloworldJavaEE" ;
        // public char charAt(int index);获取指定索引处的字符
        System.out.println("charAt():"+str.charAt(4));
        System.out.println("---------------------------------");
        //public String concat(String str):将指定的字符串和当前字符串进行拼接,获取一个新的字符串
        //字符串最传统的拼接:直接  定义一个String s = "" ;  s+任何数据="xxx" ;
        //提供了一个功能
        System.out.println("concat:"+str.concat("R").concat("Go"));
        System.out.println("-----------------------------------");

        //   public int indexOf(int ch):返回指定字符第一次出现的索引值
        // public int lastIndexOf(int ch):返回值指定字符最后一次出现的索引值
        System.out.println("indexOf():"+str.indexOf("o"));
        System.out.println("lastIndexOf():"+str.lastIndexOf("o"));
        System.out.println("-----------------------------------");
        //public String[] split(String regex):
        String str2 = "JavaEE-Python-Go-R-C-C#-PHP" ;
        //使用"-"进行拆分
        String[] strArray = str2.split("-");
        for(int x = 0 ; x < strArray.length ; x ++){
            System.out.print(strArray[x]+"\t");
        }
        System.out.println();
        System.out.println("-----------------------------------");
        /**
         *  public String substring(int beginIndex) :从指定位置开始默认截取到末尾
         *                                    角标从0开始
         *  public String substring(int beginIndex,int endIndex)
         */
        // String str = "helloworldJavaEE" ;
        System.out.println("subString():"+str.substring(5));
        System.out.println("subString():"+str.substring(5,9));//worl
        System.out.println("-----------------------------------");
        //public static String valueOf(基本类型以及Object)
        System.out.println("valueOf:"+String.valueOf(100)); //100--->"100"

    }
}

 5.字符串其他功能:

public String replace(char target,char replacement):替换功能将指定的内容使用target字符进行替换

public String replaceAll(String regex, String replacement) :将指定的和参数1正则表达式匹配的字符串 使用replacement进行替换

参数1: [0-9]   --->如果字符是数字字符;参数2: "*"替换掉

public String trim():去除字符串两端的空格

public int compareTo(String anotherString):按照字典顺序比较,返回值是int

        String str1 = "abc" ;//字典顺序:就是我们26个字母,a,b,c,d,e,f,g,h
        String str2 = "hello" ;
        System.out.println(str1.compareTo(str2));
        String str3 = "hel" ;
        System.out.println(str2.compareTo(str3));

面试题:

1.在数组中有没有length方法,在String类中有没有length方法,在集合中有没有length方法

答:   数组中没有length方法,length属性
        int[] arr = new int[3] ;
         arr.length;
        String类中有length()
        集合中没有length(),----->size()获取元素数

2. String s1 = "hello" ;
    String s2 = new String("hello") ;
    在内存中分别创建了几个对象?

答:第一个创建了一个对象,直接在常量池创建,开辟常量池空间

     第二个:创建了两个对象,一个堆内存中开辟空间,一个指向常量池(不推荐)

3.String s1 = "hello" ;
   String s2 = "hel" ;
   使用s1调用compareTo(s2):按照字典顺序比较:结果是多少?

    是怎么运行的?   长度相减

答:判断第一个字母是否一样,一样的话长度相减,不一样的话就用第一个字母是所对应的ASCII码表所对应的数字相减即可

6.== 和equals的区别
  ==:连接引用类型比较的是地址值
  equals:默认比较地址值,但是String类重写equals方法,所以内容是否相同

7.字符串常量相加和字符串变量相加的区别

   字符串变量相加,常量池中先开空间,在拼接

   字符串常量相加,先相加,然后看结果是否在常量池中存在;如果存在,直接返回当前地址值,如果不       存在,在常量池开辟空间.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值