写点什么

牛客 java 选择题每日打卡 Day5

作者:Geek_b91541
  • 2022 年 7 月 03 日
  • 本文字数:2297 字

    阅读完需:约 8 分钟

牛客 java 选择题每日打卡 Day5

👩‍💻博客主页:京与旧铺的博客主页

✨欢迎关注🖱点赞🎀收藏⭐留言✒

🔮本文由京与旧铺原创,csdn 首发!

😘系列专栏:java 学习

👕参考网站:牛客网

💻首发时间:🎞2022 年 5 月 21 日🎠

🎨你做三四月的事,八九月就会有答案,一起加油吧

🀄如果觉得博主的文章还不错的话,请三连支持一下博主哦

🎧最后的话,作者是一个新人,在很多方面还做的不好,欢迎大佬指正,一起学习哦,冲冲冲




图片



🛒导航小助手🎪

[TOC]



🥩选择题 1

public class Square {      long width;      public Square(long l) {           width = l;      }      public static void main(String arg[]) {           Square a, b, c;           a = new Square(42L);           b = new Square(42L);           c = b;           long s = 42L;      } }
复制代码


a = new` `Square(42L); b = new Square(42L);


这里 new 了两个对象,所以 a,b 不是同一个引用 a!=b


s 的类型跟 a,b 不同类型,所以 s!=a,s!=b


``c = b;


这里 b,c 是同一个对象的引用,所以 b==c 是 true

👩‍🦰选择题 2


String test="javaandpython"; String str1="java"; String str2="and"; String str3="python"; System. out. println(test=="java"+"and"+"python"): System. out. println(test ==str1 + str2 + str3);
复制代码


对于上面这段代码,结果是 true false


这是因为字符串字面量拼接操作是在 Java 编译器编译期间就执行了,也就是说编译器编译时,直接把"java"、"and"和"python"这三个字面量进行"+"操作得到一个"javaandpython" 常量,并且直接将这个常量放入字符串池中,这样做实际上是一种优化,将 3 个字面量合成一个,避免了创建多余的字符串对象(只有一个对象"javaandpython",在字符串常量池中)。而字符串引用的"+"运算是在 Java 运行期间执行的,即 str1 + str2 + str3 在程序执行期间才会进行计算,它会在堆内存中重新创建一个拼接后的字符串对象。且在字符串常量池中也会有 str1,str2 与 str3,这里创建多少个新的对象与原来字符串常量池中有没有 str1\str2\str3 有关,如果之前存在就不会创建新的对象。


总结来说就是:字面量"+"拼接是在编译期间进行的,拼接后的字符串存放在字符串池中;而字符串引用的"+"拼接运算实在运行时进行的,新创建的字符串存放在堆中。


那么再来看这题,很明显只在编译期间在字符串常量池中创建了"welcometo360"一个字符串

🧀选择题 3


weblogic 中开发消息 Bean 时的 persistent 与 non-persisten 的差别:


  • persistent 方式的 MDB 可以保证消息传递的可靠性,也就是如果 EJB 容器出现问题而 JMS 服务器依然会将消息在此 MDB 可用的时候发送过来。

  • non-persistent 方式的消息将被丢弃

🥮选择题 4


java.util.*,只能读取其目录下的类,不能读取其子目录下的类。


因为其根目录和子目录下可能有同名类,若都能读取,则会混淆。

🍞选择题 5


全选,Object 类中方法及说明如下:


registerNatives() //私有方法


getClass() //返回此 Object 的运行类。hashCode() //用于获取对象的哈希值。equals(Object obj) //用于确认两个对象是否“相同”。clone() //创建并返回此对象的一个副本。toString() //返回该对象的字符串表示。


notify() //唤醒在此对象监视器上等待的单个线程。


notifyAll() //唤醒在此对象监视器上等待的所有线程。


wait(long timeout) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或 者超过指定的时间量前,导致当前线程等待。


wait(long timeout, int nanos) //在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待。wait() //用于让当前线程失去操作权限,当前线程进入等待序列 finalize() //当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。

🥖选择题 6


Java 语言提供了很多修饰符,主要分为以下两类:


1、访问修饰符


default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。


private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)


public : 对所有类可见。使用对象:类、接口、变量、方法


protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)


2、非访问修饰符,包括但不限于:


static 修饰符,用来修饰类方法和类变量。


final 修饰符,用来修饰类、方法和变量,final 修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。


abstract 修饰符,用来创建抽象类和抽象方法。


synchronizedvolatile 修饰符,主要用于线程的编程。


本题应该是想考标识符:


​ Java 标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。在 Java 中是区分大小写的,而且还要求首位不能是数字。最重要的是,Java关键字不能当作 Java 标识符。

🥪选择题 7


A B 选项,免程序在多线程竞争情况下读到不正确的值需要保证内存可见性,即当一个线程修改了 volatile 修饰的变量的值,volatile 会保证新值立即同步到主内存,以及每次使用前立即从主内存读取。


C 选项,synchronized 可以修饰方法、代码块或对象,并不修饰变量。


D 选项,static 修饰的变量属于类,线程在使用这个属性的时候是从类中复制拷贝一份到线程工作内存中的,如果修改线程内存中的值之后再写回到原先的位置,就会有线程安全问题。用 static 修饰的变量可见性是无法确保的。

🤴总结

好啦,今天的错题总结就到这里啦,以后的每一天我都会尽量去打卡做 java 的基础选择题,然后总结出错题,相信练习之后会有更好的学习效果,既然看到这里啦,可以给我三连一下吗,爱你们啊

用户头像

Geek_b91541

关注

还未添加个人签名 2022.06.02 加入

还未添加个人简介

评论

发布
暂无评论
牛客java选择题每日打卡Day5_7月月更_Geek_b91541_InfoQ写作社区