关于String类的一点基础

1、面试题:两种创建方式的区别
String s="abc" 字符串存在字符串常量池中,这句话是在字符串常量池中创建了一个abc字符串,并把地址赋给了s(引用型变量),如果常量池中没有,就创建,如果有,就直接拿来用,这种方式是创建了一个对象
所以,String s1="abc";
            System.out.println(s==s1);//打印结果是true,直接从常量池拿来用了
但是如果String s1= new String("abc");这句话是在堆内存中创建了一个String对象,这个对象在构建的时候接收了一个字符串(abc)对象,这种方式,其实在内存中是创建了两个对象,但并没有在字符串常量池中做任何事情,这时候的字符串是没有在字符串常量池中的 ,如果再打印
System.out.pringln(s==s1);结果是false,双==比较的是地址值
所以,这两种方式,在比较地址的时候是不一样的
System.out.println(s.equals(s1));这个比较的是对象值,结果是true,因为String类是object类的子类,比较的是内容,而不是地址
2、java.lang是java的核心包,1.2版本的jdk后,自动导入这个包,用的时候不需要自己导包
3、String s=new String();等效于String s=" ";不等于Stirng s=null;
4、字符是字符串中的单元,String的构造函数能把数组变成字符串,也能把数组的一部分变成字符串
5、数组的length是属性,字符串的length()是方法,注意一下
6、根据位置获取字符 char charAt(int index)返回值是char类型
7、根据字符获取在字符串中第一次出现的位置int indexof(int ch),
   注意是第一次,参数类型是int的,是因为能接收97,打印出来a这种
    lastIndexOf('a')是从后往前找。String s="abcdae",从后往前数,但返回的值是4,注意不是1
    可以根据-1来判断该字符或者字符串是否存在。
    索引方法有两个作用,很重要。

6、空格是字符,是有自己的ASCII码值的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值