1. 判断定义为String类型的s1和s2是否相等

String s1 = "ab";
String s2 = "abc";
String s3 = s1 + "c";
System.out.println(s3 == s2); //true
System.out.println(s3.equals(s2)); //true

解答:

false  //s1是变量,s2与常量"c"相加
true

2. String与StringBuffer传递

 /**
* 基本数据类型的值传递,不改变其值
* 引用数据类型的值传递,改变其值
*/
private static void test4() {
String s = "heima";
System.out.println(s);
change(s);
System.out.println(s); System.out.println("------------------");
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("heima");
System.out.println(stringBuffer);
change(stringBuffer);
System.out.println(stringBuffer);
} /**
* 调用该方法时实际参数的sb和形式参数的sb指向的是同一个对象(StringBuffer容器)
* 方法内部又在该容器里添加了"itcast",所以方法结束时,局部变量的sb消失,但是
* 实际参数的sb所指向的容器的内部的内容已经发生了改变
* @param stringBuffer
*/
private static void change(StringBuffer stringBuffer) {
stringBuffer.append("itcast");
} /**
* 因为str是属于局部变量,在调用该方法是实际参数s和形式参数str指向的是同一个对象,但是
* 在方法内部将str又指向了一个新的字符串对象,而此时s还是指向的原来的字符串对象
* 该方法执行完毕,局部变量str消失,方法内部产生的新的字符串对象称为垃圾,但是s还是指向
* 原有的字符串对象,并没有改变
* @param str
*/
private static void change(String str) {
str += "itcast";
}

3. Integer的面试题

     private static void test5() {
Integer i1 = 97;
Integer i2 = 97;
System.out.println(i1 == i2);
System.out.println("-----------------"); Integer i3 = 199;
Integer i4 = 199;
System.out.println(i3 == i4); /**
* -128到127是byte的取值范围,如果在这个取值范围内,自动装箱就不会新创建对象,
* 而是从常量池中获取,如果超过了byte取值范围就会再新创建对象
* 源码分析:
*/
public static Integer valueOf(int i) {
if (i >= -128 && i <= 127)
return Integer.IntegerCache.cache[i + (-Integer.IntegerCache.low)];
return new Integer(i);
}
}

4. 为什么针对安全保密高的信息,char[]比String更好?

  因为String是不可变的,就是说它一旦创建,就不能更改了,直到垃圾收集器将它回收走。而字符数组中的元素是可以更改的。这就意味着可以在使用完之后将其更改,而不会保留原始的数据)。

所以使用字符数组的话,安全保密性高的信息(Eg. 密码之类的)将不会存在与系统中被他人看到。

5. 如何将字符串转换成时间

     private static void test6() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String today = simpleDateFormat.format(new Date());
ParsePosition position = new ParsePosition(0);
Date date = simpleDateFormat.parse(today, position);
}

6. 如何计算一个字符串某个字符的出现次数?

     private static void test7() {
int n = StringUtils.countMatches("111122233333111", "1");
System.out.println(n);
}

7. 如何重复一个字符串

     private static void test8() {
String str = "abcd ";
String repeated = StringUtils.repeat(str, 3);
System.out.println(repeated);
}

Java中String类的常见面试题的更多相关文章

  1. Java面试炼金系列 (1) | 关于String类的常见面试题剖析

    Java面试炼金系列 (1) | 关于String类的常见面试题剖析 文章以及源代码已被收录到:https://github.com/mio4/Java-Gold 0x0 基础知识 1. '==' 运 ...

  2. String类的常见面试题(3)

    1.判断定义为String类型的s1和s2是否相等 String s1 = "abc"; //这个"abc"对象首先会进常量池 String s2 = &quo ...

  3. Java中String类的方法及说明

    String : 字符串类型 一.      String sc_sub = new String(c,3,2);    //      String sb_copy = new String(sb) ...

  4. java中String类学习

    java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...

  5. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087

  6. 【转载】Java中String类的方法及说明

    转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一.      String sc_ ...

  7. 在java中String类为什么要设计成final?

    大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...

  8. Java中String类为什么被设计为final?

    Java中String类为什么被设计为final   首先,String是引用类型,也就是每个字符串都是一个String实例.通过源码可以看到String底层维护了一个byte数组:private f ...

  9. java中String类的面试题大全含答案

    1.下面程序的运行结果是()(选择一项)String str1="hello";String str2=new String("hello");System.o ...

随机推荐

  1. 控制变量行业年份回归时在STATA里怎么操作_stata 分年份回归

    控制变量行业年份回归时在STATA里怎么操作_stata 分年份回归 我希望做一个多元回归,但需要控制年份和行业. (1)年份有7年2006-2012,听说STATA可以自动设置虚拟变量,请问命令是怎 ...

  2. java编程规约一

    提高开发效率,比较重视代码规范,尤其是可扩展性和可维护性,以及可读性.如果你是一个刚进公司的开发者,最好先问问前辈是否有 内部的开发规范,花点时间过一遍.即使提交代码没有review的步骤,自己心里应 ...

  3. <小知识>记录

    lis = [2,3,"k",["qwe",20,["k1",["tt",3,"1"]],89],& ...

  4. scrpy--分布式爬虫

    原来的scrapy中的Scheduler维护的是当前机器中的任务队列(存放着Request对象以及回调函数等信息) + 当前的去重队列(存放访问过的url地址) 实现分布式的关键就是需要找一台专门的主 ...

  5. pom.xml文件配置maven仓库地址

    中央仓库就是Maven的一个默认的远程仓库,Maven的安装文件中自带了中央仓库的配置($M2_HOME/lib/maven-model-builder.jar) 在很多情况下,默认的中央仓库无法满足 ...

  6. Apache下更改.htaccess文件名称

    有时候我们需要更改.htaccess的名称以解决一些问题 比如:Eclipse下是不显示点开头的文件的 所以我们可以使用  Apache的AccessFileName来更改此配置文件的名称 Acces ...

  7. [转]async & await 的前世今生(Updated)

    async 和 await 出现在C# 5.0之后,给并行编程带来了不少的方便,特别是当在MVC中的Action也变成async之后,有点开始什么都是async的味道了.但是这也给我们编程埋下了一些隐 ...

  8. 如何在 Apache Flink 中使用 Python API?

    本文根据 Apache Flink 系列直播课程整理而成,由 Apache Flink PMC,阿里巴巴高级技术专家 孙金城 分享.重点为大家介绍 Flink Python API 的现状及未来规划, ...

  9. itextPDF使用笔记

    最近在做报表打印,使用的是itextPDF,第一次用到它,简单做个笔记.主要涉及到字体设置,文字处理操作,表格及单元格设置,绘制一些图形 IText中有三个处理text的类com.lowagie.te ...

  10. OpenCASCADE 7.4.0 Released

    Open Cascade is pleased to announce a new public release of Open CASCADE Technology (version 7.4.0). ...