java牛客刷题记录
好几天没刷题了,大清早刷个题,清醒地认识到自己有多菜。
不过这次错的还行,4个单选,6个多选,结果对了6个。虽然有好多都不太熟悉。看题吧,以下记录模糊或者有意义的题目。
-
关于static说法不正确的是( )
正确答案: D 你的答案: D (正确)
可以直接用类名来访问类中静态方法(public权限) 静态块仅在类加载时执行一次 static方法中不能有用this调用的方法 不可以用对象名来访问类中的静态方法(public权限) 解释: A、静态方法属于类本身,可以使用类名调用。 B、静态块只执行一次。 C、static块和方法不能出现this和super D、可以的,实例对象也可以调用静态方法。 D选项,项目中不都经常用吗?比如类加载ClassLoader不也是静态方法吗?
-
请问所有的异常类皆直接继承于哪一个类?()
正确答案: C 你的答案: C (正确)
java.applet.Applet java.lang.Throwable java.lang.Exception java.lang.Error
-
下列说法正确的是()?
正确答案: B D 你的答案: A B C (错误)
A我们直接调用Thread对象的run方法会报异常,所以我们应该使用start方法来开启一个线程 B一个进程是一个独立的运行环境,可以被看做一个程序或者一个应用。而线程是在进程中执行的一个任务。Java运行环境是一个包含了不同的类和程序的单一进程。线程可以被称为轻量级进程。线程需要较少的资源来创建和驻留在进程中,并且可以共享进程中的资源 C synchronized可以解决可见性问题,volatile可以解决原子性问题 D ThreadLocal用于创建线程的本地变量,该变量是线程之间不共享的 解释: volatile与synchronized的区别: volatile本质是在告诉jvm当前变量在寄存器中的值是不确定的,需要从主存中读取,synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住. volatile仅能使用在变量级别,synchronized则可以使用在变量,方法. volatile仅能实现变量的修改可见性,但不具备原子特性,而synchronized则可以保证变量的修改可见性和原子性. volatile不会造成线程的阻塞,而synchronized可能会造成线程的阻塞. volatile标记的变量不会被编译器优化,而synchronized标记的变量可以被编译器优化. 记住一句话,synchronized很强大,既可以保证可见性,又可以保证原子性,而volatile不能保证原子性! A:可以直接调用run方法, 但就起不到多线程的目的了。
-
下面有关 java 类加载器,说法正确的是?()
正确答案: A B C D 你的答案: A B C (错误)
引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的 扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。 系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类 tomcat 为每个 App 创建一个 Loader,里面保存着此 WebApp 的 ClassLoader。需要加载 WebApp 下的类时,就取出 ClassLoader 来使用 解释: 类的加载是由类加载器完成的,类加载器包括:根加载器( BootStrap )、扩展加载器( Extension )、系统加载器( System )和用户自定义类加载器( java.lang.ClassLoader 的子类)。从 Java 2 ( JDK 1.2 )开始,类加载过程采取了父亲委托机制( PDM )。 PDM 更好的保证了 Java 平台的安全性,在该机制中, JVM 自带的 Bootstrap 是根加载器,其他的加载器都有且仅有一个父类加载器。类的加载首先请求父类加载器加载,父类加载器无能为力时才由其子类加载器自行加载。 JVM 不会向 Java 程序提供对 Bootstrap 的引用。下面是关于几个类加载器的说明: Bootstrap :一般用本地代码实现,负责加载 JVM 基础核心类库( rt.jar ); Extension :从 java.ext.dirs 系统属性所指定的目录中加载类库,它的父加载器是 Bootstrap ; system class loader :又叫应用类加载器,其父类是 Extension 。它是应用最广泛的类加载器。它从环境变量 classpath 或者系统属性 java.class.path 所指定的目录中记载类,是用户自定义加载器的默认父加载器。 用户自定义类加载器: java.lang.ClassLoader 的子类 父类委托机制是可以修改的,有些服务器就是自定义类加载器优先的。
-
下列说法错误的有( )
正确答案: B C D 你的答案: A B (错误)
能被java.exe成功运行的java class文件必须有main()方法 J2SDK就是Java API Appletviewer.exe可利用jar选项运行.jar文件 能被Appletviewer成功运行的java class文件必须有main()方法 解释: B选项中J2SDK是编程工具,不是API. C选项中 Appletviewer.exe 就是用来解释执行java applet应用程序的,简单理解就是没有main函数的继承applet类的java类。 D选项中 能被Appletviewer成功运行的java class文件没有main()方法
-
以下说法错误的是()
正确答案: B C D 你的答案: B C (错误)
其他选项均不正确 java线程类优先级相同 Thread和Runnable接口没有区别 如果一个类继承了某个类,只能使用Runnable实现线程 B选项,在java中线程是有分优先等级的所以优先级不能相同,错误 C选项,Thread实现了Runnable接口是一个类不是接口,错误 D选项,实现多线程的三种方式,一种是继承Thread类使用此方式就不能继承其他的类了。还有两种是实现Runnable接口或者实现Callable接口 ,所以D错误。 A选项,综上A说其余三项都是错误的,所以A选项所述为真,不是错误的。
博客网站 https://yamon.top
个人网站 https://yamon.top/resume
GitHub网站 https://github.com/yamonc
欢迎前来访问