Java中String类的常见面试题
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类的常见面试题的更多相关文章
- Java面试炼金系列 (1) | 关于String类的常见面试题剖析
Java面试炼金系列 (1) | 关于String类的常见面试题剖析 文章以及源代码已被收录到:https://github.com/mio4/Java-Gold 0x0 基础知识 1. '==' 运 ...
- String类的常见面试题(3)
1.判断定义为String类型的s1和s2是否相等 String s1 = "abc"; //这个"abc"对象首先会进常量池 String s2 = &quo ...
- Java中String类的方法及说明
String : 字符串类型 一. String sc_sub = new String(c,3,2); // String sb_copy = new String(sb) ...
- java中String类学习
java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...
- 在java中String类为什么要设计成final
在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087
- 【转载】Java中String类的方法及说明
转载自:http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html String : 字符串类型 一. String sc_ ...
- 在java中String类为什么要设计成final?
大神链接:在java中String类为什么要设计成final? - 程序员 - 知乎 我进行了重新排版,并且更换了其中的一个例子,让我们更好理解. String很多实用的特性,比如说“不可变性”,是工 ...
- Java中String类为什么被设计为final?
Java中String类为什么被设计为final 首先,String是引用类型,也就是每个字符串都是一个String实例.通过源码可以看到String底层维护了一个byte数组:private f ...
- java中String类的面试题大全含答案
1.下面程序的运行结果是()(选择一项)String str1="hello";String str2=new String("hello");System.o ...
随机推荐
- 框架前期准备篇之AutoFac常见用法总结 转载
框架前期准备篇之AutoFac常见用法总结 一. 说在前面的话 凡是大约工作在两年以上的朋友们,或多或少都会接触到一些框架搭建方面的知识,只要一谈到框架搭建这个问题或者最佳用法这个问题,势必会引起一点 ...
- CSS 实现自适应正方形
在处理移动端页面时,我们有时会需要将banner图做成与屏幕等宽的正方形以获得最佳的体验效果,比如,商品详情页, 方法1.CSS3 vw单位 CSS3 中新增了一组相对于可视区域百分比的长度单位 vw ...
- <随便写> 多线程的例子
''' 一个线程在使用这个共享的时候,其他线程必须等待他结束 通过"锁"实现,作用就是防止多个线程使用这片内存空间 进程:程序的一次执行 线程:cpu运算的基本调度单位 多线程:大 ...
- HYNB Contest 7:2017 Asia HCMC Vietnam National Programming Contest
A. Another Query on Array Problem B. Board Covering C. Cumulative Sums 题意 \(A_1=1,A_i=A_{i-1}+sod(A_ ...
- springcloud系列12 config的使用
config组件分为server端和client端 config的原理: 就是当我们将配置文件放置在git上面,那么configserver就会去拉取相关配置文件至本地: 可以看到我本地是拉去了配置文 ...
- Linux QtCreator 创建工程
这一天天的,都快成废物了, 每天忙得要死, 各种乱七八糟杂事,连点学习的时间都没有了, 这才一年不碰Linux,创建工程都不会了, Ubuntu 1N.N.N + QtCreator 创建工程 不安装 ...
- java笔试之尼科彻斯定理
验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和. 例如: 1^3=1 2^3=3+5 3^3=7+9+11 4^3=13+15+17+19 这题也可以用数学公式推理,首项m*(m ...
- 2018-8-10-如何删除错误提交的-git-大文件
title author date CreateTime categories 如何删除错误提交的 git 大文件 lindexi 2018-08-10 19:16:51 +0800 2018-2-1 ...
- 建立 CRAMFS 包
下载 cramfs 工具 从 http://prdownloads.sourceforge.net/cramfs/cramfs1.1.tar.gz下载源代码包. 把下载包拷贝到 dev_home/t ...
- Educational Codeforces Round 69 D E
Educational Codeforces Round 69 题解 题目编号 A B C D E F 完成情况 √ √ √ ★ ★ - D. Yet Another Subarray Problem ...