java进阶--刷题与详解-1

下列哪个修饰符不能修饰外部类?

A.public B.private C.protected D.final

正确答案:BC

详解:外部类指包裹在其他类外面的类,是相对于内部的类而言的。外部类是顶级,private只能在声明它的作用域内访问,用private将无法被任何人访问,毫无意义。同理,protected 访问级别的规则是同包可见 + 不同包的子类可见,又因为别的类无法通过import找到该类,所以无意义

java运行时内存分为"线程共享"和"线程私有"两部分,以下哪些属于"线程共享"部分

A.程序计算器 B.方法区 C.java虚拟机栈 D.java堆

正确答案:BD

详解:线程私有**:**每个线程都有自己的独立副本,一个线程不能访问另一个线程的私有区域,与线程相同,线程创建时创建,线程结束时销毁,因为是私有的,不存在多线程竞争问题

线程共享:所有线程都可以访问同一块内存区域,多个线程同时访问时需要同步机制(如锁)保证数据一致性,与Java虚拟机进程相同,垃圾回收主要发生在共享区域

线程私有:程序计数器、Java 虚拟机栈、本地方法栈。

线程共享:Java 堆、方法区。

下面关于 Java 中异常相关的说法正确的有()

A.try代码快不可以单独存在,需要配合catch finally代码快使用

B.finally代码块可以存在也可以不存在

C.如果多个catch块中得意常出现继承关系,父类异常catch块放在最后面

D.可以有多个catch代码块,也可以只有一个,但不能没有

正确答案:ABC

详解:

  1. try 后面可以跟多个 catch 块。

  2. try 后面可以只跟一个 catch 块。

  3. try 后面也可以没有 catch 块,但必须有一个 finally 块。

  4. 不能只有 try 块,后面既没有 catch 也没有 finally

以下语句使用PreparedStatement接口向mysql数据库中插入成功插入数据:

|-------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 | String sql=``"insert into users(username,password,age) values(?,?,?)"``; PreparedStatement ps=conn.prepareStatement(sql); ps.setString(``1``,``"lisi"``); ps.setString(``2``,``"123456"``); ps.setInt(``3``,``24``); ps.executeUpdate(); |

试问,执行sql语句ps.executeUpdate()的返回值是:( )

A 0 B 1 C ture D false

正确答案:B

详解:

|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 | String sql=``"insert into users(username,password,age) values(?,?,?)"``; //表示创建了一个插入函数 PreparedStatement ps=conn.prepareStatement(sql); //通过方法创建对象 ps.setString(``1``,``"lisi"); // 第一个?替换为"lisi" ps.setString(``2``,``"123456"); // 第二个?替换为"123456" ps.setInt(``3``,``24); // 第三个?替换为24 ps.executeUpdate(); //执行插入操作,返回受影响的行数 |

下面哪些赋值语句是正确的()

A long test=012 B float f=-412 C int other=(int)true D double d=0x12345678 E byte b=128

正确答案:ABD

详解:A. long test=012 - 正确

这是一个八进制数值赋值给long类型变量。012在八进制表示为十进制的10,完全在long类型范围内。

B. float f=-412 - 正确

这是将一个负整数赋值给float类型变量。-412是在float类型表示范围内的,可以自动类型转换。

C. int other =(int)true - 错误

布尔类型(boolean)不能转换为整型(int)。Java不支持boolean类型和数值类型之间的转换。

D. double d=0x12345678 - 正确

这是一个十六进制数值赋值给double类型变量。0x12345678表示一个十六进制数,在double类型范围内。

E. byte b=128 - 错误

byte类型的取值范围是-128到127。128超出了byte类型的范围,因此这个赋值是错误的。

假设 A 类有如下定义,设 a 是 A 类同一个包下的一个实例,下列语句调用哪个是错误的?()

|-------------|---------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 | class A{ ``int i; ``static String s; ``void method1() { } ``static void method2() { } } |

A System.out.println(a.i); B a.method1(); C.A.method1(); D A.method2();

正确答案:C

详解:基本原则:

  1. 静态成员(静态变量和静态方法)可以通过类名直接访问

  2. 非静态成员(实例变量和实例方法)必须通过对象实例访问

  3. 不能通过类名直接访问非静态成员

对于同一类中的两个方法 , 在判断它们是不是重载方法时 , 肯定不考虑( )

A 参数个数 B参数类型 C返回值类型 D参数顺序

正确答案:C

详解:

  1. 参数个数(A选项)是判断方法重载的重要依据。同名方法如果参数个数不同,就构成重载。例如:

void test()

void test(int a)

  1. 参数类型(B选项)也是判断方法重载的关键。同名方法的参数类型不同也构成重载。例如:

void test(int a)

void test(String s)

  1. 返回值类型(C选项)不是判断方法重载的依据。两个方法如果只有返回值类型不同,其他都相同,这不构成重载,反而会导致编译错误。例如:

int test(int a)

void test(int a) //编译错误

  1. 参数顺序(D选项)同样是判断方法重载的依据。参数类型的顺序不同也可以构成重载。例如:

void test(int a, String s)

void test(String s, int a)

Integer a = 245;

Integer b = 245;
int c = 245;
System.out.println(a == b);
System.out.println(a == c);
运行后返回的是:

A true,true B true,false C false,true D false,false

正确答案:C

详解:第一个比较 a == b 返回false:

这里比较的是两个Integer对象。Integer默认会缓存-128到127之间的值,超出这个范围的值在自动装箱时会创建新对象。由于245超出了缓存范围,所以a和b是两个不同的对象引用,使用==比较返回false。

第二个比较 a == c 返回true:

这里比较的是Integer对象和int基本类型。当Integer与int进行比较时,会自动触发拆箱操作,将Integer对象转换为基本类型int,然后进行值的比较。因此比较的是245和245这两个数值,故返回true。

以下集合对象中哪几个是线程安全的()

A LinkedList B ArrayList C VEctor D Hashtable

正确答案:CD

详解:Vector和Hashtable的线程安全特性:

  1. Vector: 它的所有方法都是同步的(synchronized),在多线程环境下可以安全使用。

  2. Hashtable: 同样具有同步方法,能够在多线程环境下保证数据的一致性。

分析非线程安全的选项:

  1. LinkedList: 它是基于双向链表实现的List,其方法都不是同步的,在多线程环境下需要额外同步处理。

  2. ArrayList: 它是基于动态数组实现的List,同样没有同步机制,多线程访问时可能出现数据不一致。

以下关于对象序列化描述正确的是

A使用FileOutputStream可以对对象进行传输 B使用PrintWriter可以将对象进行传输

C使用transient修饰的变量不会被序列化 D对象序列化的所属类需要实现Serializable接口

正确答案:AB

详解:FileOutputStream是字节流,它只能处理原始字节数据的写入,不能直接序列化对象。要序列化对象,需要使用ObjectOutputStream包装FileOutputStream。

PrintWriter是处理字符数据的输出流,主要用于写入文本数据,不能直接进行对象序列化。要序列化对象必须使用ObjectOutputStream。

相关推荐
编程大师哥2 小时前
C++ 中解锁 Redis
开发语言·c++·redis
我是小鳄鱼2 小时前
Day 3: Bash 工具-- 30天复刻了一个 Claude Code
开发语言·bash
cypking2 小时前
一、Mac 下 JDK + Maven 安装配置文档(Bash 终端 / Source 生效)
java·macos·maven
七夜zippoe2 小时前
分布式事务解决方案 Seata AT模式深度解析
java·sql·seata·at·xa·undo log
计算机毕设指导62 小时前
基于微信小程序的社区医疗服务管理系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
实战项目2 小时前
基于Python的智联招聘数据可视化分析
学习
Java天梯之路2 小时前
Spring Boot 钩子全集实战(六):SpringApplicationRunListener.contextPrepared()详解
java·spring boot·后端
小小仙。2 小时前
IT自学第十八天
java·开发语言·算法
我命由我123452 小时前
Android 开发 - FragmentPagerAdapter、Pair、ClipboardManager、PopupWindow
android·java·java-ee·kotlin·android studio·android-studio·android runtime