前言
摘自牛客网题目,笔记摘自评论区大佬的解答,仅作为笔记供个人进行学习
第一题
在接口中,属性都是默认public static final修饰的,所以:
A(错误):不能用private修饰;
B(正确):在接口中,属性默认public static final,这三个关键字可以省略;
C(错误):没写属性的类型;
D(错误):final修饰的属性必须赋值;
作者:特务依昂
链接:https://www.nowcoder.com/exam/test/82741876/submission?examPageSource=Intelligent&pid=58390510&testCallback=https%3A%2F%2Fwww.nowcoder.com%2Fexam%2Fintelligent%3FquestionJobId%3D10
来源:牛客网
针对D答案的补充:接口中的属性都是默认使用public static final关键字进行修饰的,且由于接口并没有静态块和构造器,所以在声明接口中的变量时就需要完成对该变量的赋值。但是在其他的类中,final修饰的变量是可以通过静态块和构造器来进行初始化的。
第二题
在Java中,字符串的比较有两种方式,一种是使用equals()
方法,这种方式是比较字符串的内容是否相同,另一种是使用==
操作符,这种方式是比较两个字符串对象是否是同一个对象(即比较他们在内存中的地址)。
对于这段代码,首先需要理解Java中的字符串常量池(String Constant Pool)。字符串常量池是Java为了优化字符串的创建而设立的。当我们创建一个字符串常量,如String s = "coder";
,Java会首先在字符串常量池中查找是否有相同的字符串,如果有,就返回该字符串的引用,如果没有,就在池中创建一个新的字符串。
然后我们来分析这段代码:
String s1 = "coder"; // 在字符串常量池中创建一个字符串"coder",s1指向它
String s2 = "coder"; // 在字符串常量池中找到已经存在的"coder",s2指向它,所以s1和s2指向同一个对象
String s3 = "coder" + s2; // 这里涉及到字符串的连接,会创建新的字符串对象,s3指向这个新的对象
String s4 = "coder" + "coder"; // 这里是常量字符串的连接,编译器会在编译期间就完成连接,所以s4指向字符串常量池中的"codercoder"
String s5 = s1 + s2; // 这里也是字符串的连接,会创建新的字符串对象,s5指向这个新的对象
System.out.println(s3 == s4); // s3和s4指向的不是同一个对象,所以结果为false
System.out.println(s3 == s5); // s3和s5指向的不是同一个对象,所以结果为false
System.out.println(s4 == "codercoder"); // s4和"codercoder"都指向字符串常量池中的同一个对象,所以结果为true
//所以,这段代码的输出应该是:
false
false
true
作者:想去广西嗦粉的奇亚籽胖乎乎
链接:https://www.nowcoder.com/exam/test/82742944/submission?examPageSource=Intelligent&pid=58391131&testCallback=https%3A%2F%2Fwww.nowcoder.com%2Fexam%2Fintelligent%3FquestionJobId%3D10
来源:牛客网
概括一下大概是:如果是两个字符串直接做拼接的话,得到的结果会被放在字符串常量池中。如果涉及到变量,不论事变量加字符串,或者变量加变量,都会创建一个新的对象。应该还有其他情况,待发掘。
第三题
想起来很久以前看的电影《少年班》
你需要爬11楼的时候,你倒回去一步只能待在第10楼或者第9楼。换句话说就是到达第9楼的方法次数加上第10楼的方法次数。
如果你待在第10楼,就得待在第9楼或者第8楼
如果你待在第9楼,就得待在第8楼或者第7楼
…
如果你待在第3楼,就得待在第1楼或者第2楼
爬1楼一种方法,
爬2楼两种方法。
爬3楼就是爬1楼方法次数加2楼的方法次数。
用数学表达就是:
a(11)=a(10)+a(9)=144
a(10)=a(9)+a(8)=89
a(9)=a(8)+a(7)=55
a(8)=a(7)+a(6)=34
a(7)=a(6)+a(5)=21
a(6)=a(5)+a(4)=13
a(5)=a(4)+a(3)=8
a(4)=a(3)+a(2)=5
a(3)=a(2)+a(1)=3
a(2)=2
a(1)=1
作者:得闲饮茶鱼飞飞
链接:https://www.nowcoder.com/exam/test/82756709/submission?examPageSource=Intelligent&pid=58397692&testCallback=https%3A%2F%2Fwww.nowcoder.com%2Fexam%2Fintelligent%3FquestionJobId%3D10%26tagId%3D21002%26type%3Dbase&testclass=%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91
来源:牛客网