面试题:
每博一文案
你对我好,我会加倍对你好,你带我薄,我便不会期望,不合身的衣服,
不要穿,不适合的人,别再强求,听不懂的话,无需再解释,得不到
的感情,要学会放手。无需刻意迎合谁,无需刻意将就谁,不辜负
所有的遇见,也不遗憾所有的离开,你做你自己,我也做唯一的我自己
毕竟人生从来不求皆大欢喜,但求一个问心无愧。
—————— 一禅心灵庙语
开胃菜
判断下面代码的运行结果:
public class Blog5 {
public static boolean isAdmin(String userId) {
return userId.toLowerCase() == "abmin";
// toLowerCase() 将字符串中大写字符 转为 小写字符
}
public static void main(String[] args) {
System.out.println(isAdmin("Admin"));
}
}
解析
不是,为什么呢,toLowerCase() 的作用是将字符串中大写的字符转为小写字符,小写后字符串的结果不是相等吗? 嘿嘿,不要着急我们看看首先,字符串内容上的比较是不可以用 == 的而是用方法 equals() ,而字符串之间的 == 判断的是字符串引用的对象地址上是否相等,而我们查其 toLowerCase() 方法的源码:
public String toLowerCase(Locale locale) { return new String(result, 0, len + resultOffset);
该方法返回的是一个 new 对象,即对象的地址是不相等的,返回 false
中胃菜
判断下面代码的运行结果:
public class Blog5 {
public static void main(String[] args) {
boolean d = true ? false : true == true ? true : false;
System.out.println(d);
boolean b = false ? false : true == true ? true : false;
System.out.println(b);
}
}
解析
大家不要慌,
我们把代码解开一步一步看就明白了
结尾菜
输入多组字符串,去除其中的重复的字符,
如输入:abcdefabc
输出:abcdef
public class Blog5 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()) { // 无限输入
String str = scanner.nextLine(); // 注意它不可以与 nextInt()一起使用,因为它会读取回车键
StringBuffer ret = new StringBuffer();
for(int i = 0;i < str.length();i++) {
char ch = str.charAt(i); // 取出字符串中每个对应下标的字符
String tmp = ret.toString(); // 定义一个空的字符用于拼接
if(!tmp.contains(ch+"")) { // contains 判断字符串中是否存在该字符
ret.append(ch); // 拼接上
}
}
System.out.println(ret);
}
}
}
解析
首先使用:循环多组输入 while(scanner.hasNext()) ,使用StringBuffer ret = new StringBuffer() 定义拼接的字符,减少空间的消耗。详细解释大家可以移步到??? 认识 String类_ChinaRainbowSea的博客-CSDN博客 ,
遍历字符串,使用方法 charAt(i) 取出字符串中的每个字符,
再使用if(!tmp.contains(ch+“”)) 判断该字符串是否存在于该字符串中,存在返回 true ,不存在返回 false ,因为我们是要去掉重复的字符,
所以已经存在了的字符就不用拼接上了,所以我们需要不存在的字符取非一下 ,还有因为该方法接受的是字符串,所以我们让该字符拼接上一个 “” 空字符串,变成字符串,就好了,然后,不存在该字符串中的字符使用ret.append(ch) 拼接上,就好了,
最后:
限于自身水平,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家,后会有期,江湖再见!