String 关键字

字符串对象(String):

Java.lang.String,

字符串也是final类,字符串是常量它们的值不能被创建后改变,支持可变字符串字符串缓冲区,因为字符串对象是不可改变的,所以他们可以被共享的。

例如:String  a = "123";

a="456"(可行)

String b ="123"(不可行)

字符串:字符连在了一起,形成了字符串。人肉眼可以识别分符号

在java中,一般表现为“”引号内都是字符串内容

在java中,字符串是引用数据类型(对象)

定义字符串:

String s ="这是一个数"

String sss ="这是一个数"

String ss = new String( );——>输出“”

String ss = new String(“这是一个数”)==String s ="这是一个数“

创建一个或两个对象,若aaa不存在,则会在字符串缓冲区创建aaa

不同方法定义的字符串(地址不同)是无法比较的(s==sss,s!=ss)因此,字符串不要用“==”判断是否相等,要使用equals方法(s.equalsss/s.equalsIgnoreCase(ss)忽略大小写)

常见的字符串方法:String s = "this is a book"      s.xx

 字符串的遍历:

String s  ="this is a book"

For(int i=0;i<s.length();i++){

s.charAt(i); /s.charPoitnAt(i)     }

面试题:java中字符串常量池在什么地方?
              1JDK7之前,字符串常量池在方法区

2JDK7之后,字符串常量池一直被设计在堆内存中

面试题:s+ss是否等于sss?

void test01{

String s  ="hello";

String ss ="world";

String sss = "helloworld";

System.out.println(s+ss);

System.out.println(s+ss==sss);false

}

Void test02{

String s  ="hello";

String ss ="world";

Final String sss = "helloworld";

System.out.println(s+ss);

System.out.println(s+ss==sss)false

}

字符串拼接问题:

字符串拼接时,如何判断拼接后结果是否相等(

1,常量始终是常量

2,编译时,如果结果确定,则会相等???

false

因为字符串是常量,字符串在大量拼接,容易产生垃圾数据。

        字符串是一种常量,一旦产生一个字符,如果常量池中,不存在这个字符串,则会将这个字符串保存在字符串常量池中(永久性,系统退出)。

因此在开发过程中,一定注意,不要

        字符串工具类StringBufferStringBuilder:(用法相同)用来提供拼接大量字符串的对象,不会产生大量无用的常量,所以用来替代字符串的拼接,提高效率。

        StringBuffer:所有操作方法上加了同步锁(synchronized),所以是线程安全的

StringBuilder:没有加同步锁,非线程安全的。

综合效率比较:String<StringBuilder<StringBuffer,但在较短的字符拼接上String效率最高(例如:String s1= "this is only a"+"simple"+"test")                 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值