Java笔试面试-字符串

字符串介绍:

  字符串是程序开发当中,使用最频繁的类型之一,有着与基础类型相同的地位,甚至在 JVM(Java 虚拟机)编译的时候会对字符串做特殊的处理,比如拼加操作可能会被 JVM 直接合成为一个最终的字符串,从而到达高效运行的目的。

1 、String 特性

  • String是标准的不可变类(immutable),对它的任何改动,其实就是创建了一个新对象,再把引用指向该对象;
  • Sting对象赋值之后就会在常量池中缓存,如果下次创建会判定常量池是否已经有缓存对象,如果有的话直接返回该引用给创建者。

2 、字符串创建

  两种方式:

//字符串的创建形式
String str1 = "dabing";
String str2 = new String("dabing");

3、字符串拼接

//字符串的拼接
String str3 = "da"+"bing";
String str4 = "da";str4  += "bing";
String str4 = "da"; String str6 = str + "wang";

4、 字符串截取

  字符串的截取使用 substring() 方法,使用如下:

//字符串的两种截取方式
String str5 = "abcdefg";
//从下标为3的开始截取,包含开始下标,输出cdefg
System.out.println(str5.substring(3));
//从下标为2开始截取下标为4的,包含开始下标不包含结束下标,输出cd
System.out.println(str5.substring(2, 4));

5 、字符对比及"==" 和 equals 的区别是什么?

  “==” 对基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等
示例代码:

String x = "string";
String y = "string";
String z = new String("string");
System.out.println(x==y); // true
System.out.println(x==z); // false
System.out.println(x.equals(y)); // true
System.out.println(x.equals(z)); // true

解析:因为 x 和 y 指向的是同一个引用,所以 “==” 也是 true,而 new String() 方法则重写开辟了内存空间,所以 == 结果为 false,而 equals 比较的一直是值,所以结果都为 true。

String s1 = "hi," + "da" + "bing";
String s2 = "hi,";
s2 += "da";
s2 += "bing";
String s3 = "hi,dabing";
System.out.println(s1.equals(s2)); // true
System.out.println(s1.equals(s3)); // true
System.out.println(s2.equals(s3)); // true

6 、String、StringBuffer、StringBuild

  StringBuffer、StringBuild 都是可以变的字符串类型,StringBuild 和 String 相似都是非线程安全的,所以多线程下推荐使用 StringBuffer。
  StringBuffer 使用:

StringBuffer sb = new StringBuffer("da");
// 添加字符串到尾部
sb.append("bing"); // 执行结果:dabing
// 插入字符串到到当前字符串下标的位置
sb.insert(0,"hi,"); // 执行结果:hi,dabing
// 修改字符中某个下标的值
sb.setCharAt(0,'H'); // 执行结果:Hi,dabing

  三者的区别:

  • 线程安全:String 和 StringBuild 为非线程安全类,StringBuffer 为线程安全类;
  • 值可变:String 值不可变,StringBuild 和 StringBuffer 值可变;
  • 性能:StringBuffer 使用了 synchronization 保障了线程的安全,所以性能方面不然 StringBuild。
全部评论

相关推荐

10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
11-08 10:39
门头沟学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
443173次浏览 4517人参与
# 春招别灰心,我们一人来一句鼓励 #
42122次浏览 537人参与
# 阿里云管培生offer #
120403次浏览 2220人参与
# 地方国企笔面经互助 #
7973次浏览 18人参与
# 同bg的你秋招战况如何? #
77083次浏览 569人参与
# 实习必须要去大厂吗? #
55804次浏览 961人参与
# 北方华创开奖 #
107467次浏览 600人参与
# 虾皮求职进展汇总 #
116163次浏览 886人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11668次浏览 289人参与
# 实习,投递多份简历没人回复怎么办 #
2454912次浏览 34860人参与
# 提前批简历挂麻了怎么办 #
149924次浏览 1978人参与
# 在找工作求抱抱 #
906075次浏览 9421人参与
# 如果公司给你放一天假,你会怎么度过? #
4762次浏览 55人参与
# 你投递的公司有几家约面了? #
33209次浏览 188人参与
# 投递实习岗位前的准备 #
1196021次浏览 18550人参与
# 机械人春招想让哪家公司来捞你? #
157643次浏览 2267人参与
# 双非本科求职如何逆袭 #
662359次浏览 7397人参与
# 发工资后,你做的第一件事是什么 #
12798次浏览 62人参与
# 工作中,努力重要还是选择重要? #
35896次浏览 384人参与
# 简历中的项目经历要怎么写? #
86935次浏览 1516人参与
# 参加完秋招的机械人,还参加春招吗? #
20148次浏览 240人参与
# 我的上岸简历长这样 #
452049次浏览 8089人参与
牛客网
牛客企业服务