package com.heima.scanner;
public class test {
/**
* 面试题一
* 确定打印输出的值真假
* @param args
* equals:将此字符串与指定的对象比较。当且仅当该参数不为 null,
* 并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。
*
* ==
*
*
* 常量池中 当两个量相同时,只存一个地址,节省空间,这是常量池的特点
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// String s1 = "abc";
// String s2 = "abc";
// System.out.println(s1 == s2);
// System.out.println(s1.equals(s2));
/**
* 面试题二
* 该语句创建了几个对象
* 答案:两个对象,一个在常量池,一个在堆内存中 地址值不同
* 有java的api得:
* String
public String(String original)初始化一个新创建的 String 对象,
* 使其表示一个与参数相同的字符序列;
* 换句话说,新创建的字符串是该参数字符串的副本。
* 由于 String 是不可变的,
* 所以无需使用此构造方法,除非需要 original 的显式副本。
*/
// String s1 = new String("abc");
/**
* 面试题三
* 判断 ture 还是false
*
*
* 答案:第一个flase
* 解析:前者在堆内存 后者在常量池 == 判断地址值 所以不相等
* 第二个:ture
*/
// String s1 = new String("abc");
// String s2 = "abc";
// System.out.println(s1 == s2 );
// System.out.println(s1.equals(s2));
/**
* 面试题四
* 判断真假
* 都为真:考点:java中的常量优化机制
*/
// String s1 = "a"+"b"+"c";
// String s2 = "abc";
// System.out.println(s1 == s2 );
// System.out.println(s1.equals(s2));
/**
* 面试题五
* 判断真假
* 第一个为假
* 解析:
* Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。
* 字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。
* 字符串转换是通过 toString 方法实现的,
* 该方法由 Object 类定义,并可被 Java 中的所有类继承。
* 在堆内存和常量池 地址值不同
*
* 第二个为真
*/
// String s1 = "ab";
// String s2 = "abc";
// String s3 = s1 + "c";
// System.out.println(s2 == s3 );
// System.out.println(s2.equals(s3));
}
}
面试题 String类
最新推荐文章于 2022-07-30 22:11:25 发布