牛客刷题小记-24.8.30


前言

摘自牛客网题目,笔记摘自评论区大佬的解答,仅作为笔记供个人进行学习


第一题

在这里插入图片描述
在接口中,属性都是默认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
来源:牛客网

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值