面试题解(Day02)
前面的话
博客主页:hyhWTX的博客主页
欢迎关注🖱点赞🎀收藏⭐留言✒
本文由hyhWTX原创,csdn首发!
系列专栏:面试题解
🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦
题目三
Scanner中的nextInt和nextLine再读取输入内容的时的区别。假如再拼接上字符串呢?
import java.util.Scanner;public class Test03 { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println(in.nextInt()+ in.nextInt() + in.nextLine() + in.nextLine()+ in.nextInt() ); }}
在控制台中依次输入数字:比如说,10,回车,10,回车,10,回车,10,回车
A .程序错误
B .10101010
C .201010
D .2020
考察点:nextInt和nextLine的区别,还有+拼接的问题
运行结果是C .201010
至于为什么是这样的,解析如下:
nextInt和nextLine的区别:
- 都可以读取输入的信息;nextInt读取到结果是int类型的,而nextLine读取到的结果是一个String类型的;
- 它们都以回车符作为结束的标志,但是nextInt是不读取回车,而nextLine是读取回车
从上面的执行过程来看,我们的输入是10,回车,10,回车,10,回车,10,回车,一共输入了四次这样的东西。
执行过程剖析:
通过我们输入的东西,我们来看,程序当中的第一个方法叫做nextInt,它是读取了第一个数据10,它将这个数据10读取出来了,但是没有读取这个回车符,将回车搁置在了这里。这样的话,它读取出来的结果就是一个整数10。第二个方法也是nextInt的方法,它与第一个相同,所以它的结果也是一个整数10,就是把我们输入的第二个10读取出来了,回车符依旧不管,搁置。而地三个方法,nextLine呢,它是可以读取回车符之前的东西,我们可以看到,第二个方法是有遗留下来的一个回车,(至于有的同学有疑问的第一个方法不是也遗留了一个回车,为何不管,我个人理解是因为它太远了,所以读取不到,它之前就已经回车了,是读取不到这个回车了,它只会读取当前的回车。如果有人就很很好的见解,请私信我,我们一起讨论学习),所以它读取到的就是一个空回车符,读取之后的结果是什么呢?结果是一个空字符串。而第四个方法与第三个方法相同,都是nextLine,所以它会读取到10和一个回车符,它将这两个都读取出来了,它的读取结果就是一个字符串形式的10。最后一个是nextInt方法,所以他就是读取的数字10,还是剩余了一个回车。
/* System.out.println( 10+ 10+ "" + "10"+ 10 );*/
所以,我们可以看到,我们是五个方法,但是却只输入了4次,它就可以读完,读完之后呢,它就进行拼接,对吧,所以我们可以看到上面的结果,就是两个数字10+10,结果就是20,再加上一个空字符串,就是20,拼接上10,在拼接上10,所以最后的结果就是C选项,201010。
题目四
权限修符的问题:,对于权限修饰符,我在此做一下介绍:
权限修饰符
public、默认(包访问权限)、protected、private
作用
-
修饰类:对于非内部类而言,类的访问权限仅有public和包访问权限两种(内部类可以是private或protected)
-
修饰成员:对于一个类,其成员能否被其他类访问,取决于该成员的权限修饰符。具体权限如下表:
四种访问修饰符的访问范围
1 访问级别 访问控制修饰符 同类 同包 子类 不同包 2 公开 public √ √ √ √ 3 受保护 protected √ √ √ × 4 默认 没有修饰符 √ √ × × 5 私有 private √ × × × 一旦使用private进行修饰,那么在本类中仍然可以随意访问,
但是,超过了本类范围外就不能直接访问了。 -
对于protected修饰的,子类的实例可以访问从父类继承而来的protected方法。即在子类中的某个方法直接访问父类的protected方法,再去实例化子类。通过子类的实例调用,从而间接实现访问父类的protected方法,但不能通过父类的实例直接去访问其protected方法。
有一点扯远了,还是上题目吧
题目:
package 面试题;class Target { public String name = "Hello word!"}
一下那个类可以更改name属性的值?
A . 任意的类
B .只能是Target类自己
C .可以是面试题包中的任意类
D .只能是Target的子类
考察点:只有一个,就是权限修饰符的问题
结果是:C .可以是面试题包中的任意类
至于为什么是这样的,解析如下:
解析过程剖析
很多人一看到name,哇,public修饰,那么根据我们所学习到的知识来看,public不是最大的范围,是共有的,所以就会认为,它是在任意类下都可以访问,所以就会有人选择A选项。如果你选择了A,那么恭喜你,你错了哈哈哈!!!
咱们来看,这个属性是怎么访问的呢?它首先需要的是类呀,找到类你才能知道属性呀,那么大家来看看这个类,看到这个类了没有,它的前面是没有public的勒。所以,我们能够知道,类是只有两种修饰符,一个是默认不写的,一个是public。而题目中的这个就是属于前者不写的那种,所以呢,它这个类,就只有在当前这个包里面才可以访问,这个类是没法出去这个包的,在当前类里面,这个属性就随便了。所以,我们就可以在包下面的任意类中访问到这个name,从而对它进行更改。
🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲