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. Vue-Grid-Layout分享一款好用的可拖拽组件

    在使用Grafana的过程中,发现Grafana关于视图页面中每一个面板都可拖拽,可随意放大放小,体验非常棒,F12看了Grafana的代码,看打包后的代码很像react,进一步css,看到有grid ...

  2. Python学习详细教程-武沛齐

    目录 Python之路[第一篇]:Python简介和入门 Python之路[第二篇]:Python基础(一) Python之路[第三篇]:Python基础(二) Python之路[第四篇]:模块 Py ...

  3. AtCoder ABC 129F Takahashi's Basics in Education and Learning

    题目链接:https://atcoder.jp/contests/abc129/tasks/abc129_f 题目大意 给定一个长度为 L ,首项为 A,公差为 B 的等差数列 S,将这 L 个数拼起 ...

  4. day 60 Django基础七之Ajax

      Django基础七之Ajax   本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 六 同源策 ...

  5. Ubuntu 上如何安装Docker

    Docker 是一个开源项目,为开发者和系统管理员提供了一个开放的平台,在任何地方通过打包和运行应用程序作为一个轻量级的容器.Docker 在软件容器内自动部署应用程序.Docker 最开始由 Sol ...

  6. 【转】5G标准——独立组网(SA)和非独立组网(NSA)

    独立组网模式(SA):指的是新建5G网络,包括新基站.回程链路以及核心网.SA引入了全新网元与接口的同时,还将大规模采用网络虚拟化.软件定义网络等新技术,并与5GNR结合,同时其协议开发.网络规划部署 ...

  7. Python3简介

    Python3简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有 ...

  8. POJ 1873 /// 状压+凸包

    题目大意: 国王有一片森林,巫师需要从所有树中选出一些做成围栏把其他树围起来, 每棵树都有其对应的价值 v 和能作为围栏的长度 l 要求最小价值,若存在多种最小价值的方案则选择余下长度更少的 树木较少 ...

  9. javaweb中静态文件的处理方法

    方案一:激活Tomcat的defaultServlet来处理静态文件 在web.xml中添加: <servlet-mapping> <servlet-name>default& ...

  10. chown命令使用

    1.原文件为root权限,改为用户所属权限包括文件夹以下的目录这里必须有R chown -R usrname:username /file 2.修改 tmp 目录为可写权限 chmod -R 777 ...