【Java笔试强训 30】

news/2024/11/8 8:41:18/

🎉🎉🎉点进来你就是我的人了
博主主页:🙈🙈🙈戳一戳,欢迎大佬指点!

欢迎志同道合的朋友一起加油喔🤺🤺🤺


目录

一、选择题

二、编程题

 🔥最难的问题

 🔥因子个数



一、选择题

1、考虑下面这个简单的例子,让我们看看reflection是如何工作的。

import java.lang.reflect.*;
public class DumpMethods{public static void main(String[] args) {try {Class c=Class.forName(args[0]);Method 	m[]=c.getDeclaredMethods();for (int i = 0; i < m.length; i++) {System.out.println(m[i].toString());}} catch (Throwable e) {System.err.println(e);}}
}

其中"c.getDeclaredMethods"的作用是:
A 取得类的公有方法对象
B 取得类的所有公有方法名称
C 取得类的所有方法对象
D 以上选项都不正确
正确答案: D
getDeclaredMethods:
获取该对象的所有声明的方法:包含该类中所有权限方法(public private 包访问权限 protected)不包含从父类中继承的方法
2、java 的字符类型采用的是 Unicode 编码方案,每个 Unicode 码占用()个比特位。
A 8
B 16
C 32
D 64
正确答案: B
3、下列哪些语句关于 java 内存回收的说明是正确的?
A 程序员必须创建一个线程来释放内存
B 内存回收程序负责释放无用内存
C 内存回收程序允许程序员直接释放内存
D 内存回收程序可以在指定的时间释放内存对象
正确答案: B
4、以下多线程对int型变量x的操作,哪个不需要进行同步()
A ++x
B x=y
C x++
D x=1
正确答案: D
D是原子操作。
5、如果希望某个变量只可以被类本身访问和调用,则应该使用下列哪一种访问控制修饰?
A public
B private
C private protected
D protected
正确答案: B
6、有如下4条语句:()

Integer i01=59;
int i02=59;
Integer i03=Integer.valueOf(59);
Integer i04=new Integer(59);

以下输出结果为false的是:
A System.out.println(i01i02);
B System.out.println(i01i03);
C System.out.println(i03i04);
D System.out.println(i02i04)
正确答案: C
参考答案:
A、D选项,当包装类与基本数据类型对比时,包装类会自动拆箱变为基本类型再进行比较,即Integer i01会拆箱为int类型与i02对比。因此System.out.println(i01i02);输出为true。
B选项,包装数据类直接赋值,默认调用其对用的valueOf()方法。那么Integer i03=Integer.valueOf(59);就等价于Integer i01=59;valueOf()操作-128 ~ 127之内的整型,在第一次引用,会在缓存中new一个对象;再次引用,直接从缓存中查找;操作-128 ~ 127之外的整型,则每次都要new一个对象。也就是说如果已经创建了一个-128 ~ 127之间的整数,使用valueOf创建第二次时,不会使用new关键字,而用已经缓存的对象。因此System.out.println(i01i03);输出true。
C选项,包装类是基础数据类型的引用类型,i04的定义使用了new关键字,这会开辟出一块新内存来放置值为59的Integer对象。那么两个地址不同的引用类型变量进行==判断结果自然是false。答案选择C。
7、关于以下程序代码的说明正确的是()

public class HasStatic {// 1private static int x = 100;// 2public static void main(String args[]) {// 3HasStatic hsl = new HasStatic();// 4hsl.x++;// 5HasStatic hs2 = new HasStatic();// 6hs2.x++;// 7hsl = new HasStatic();// 8hsl.x++;// 9HasStatic.x--;// 10System.out.println(" x=" + x);// 11}
}

A 程序通过编译,输出结果为:x=102
B 程序通过编译,输出结果为:x=103
C 10行不能通过编译.因为x星私有静态变量
D 5行不能通过编译.因为引用了私有静态变量
正确答案: A
8、以下代码输出的是:

public class SendValue{public String str="6";public static void main(String[] args) {SendValue sv=new SendValue();sv.change(sv.str);System.out.println(sv.str);
}public void change(String str) {str="10";}
}

A 6
B 10
C 都不对
D 16
正确答案: A
参考答案:
考察Java得值传递问题,change()方法中的str与sv.str都是新的对象实例成员变量值"6"的引用, 由于String类型的不可变性,change()方法中的str="10"语句实际上是将传入的str副本引用指向了一个值为“10”的新的内存地址,但原数据引用sv.str的引用值(也就是“6”的内存地址)并没有发生改变,因此sv.str指向的
值仍旧为6。不理解的同学可以看另一种情况,代码如下

class SendValue{ public String[] str={"1"};public static void main(String[] args) {SendValue sv=new SendValue(); sv.change(sv.str); System.out.println(sv.str[0]); }public void change(String[] str) { str[0]="2"; } 
}

输出2

这种情况下则是将srt指向的地址的值从1改成了2,而不是直接将str的副本引用指向一个新地址,再看如下代码

class SendValue {public String[] str = {"1"};public static void main(String[] args) {SendValue sv = new SendValue();sv.change(sv.str);System.out.println(sv.str[0]);}public void change(String[] str) {str = new String[]{"2"};}
}

 输出1
这种情况则是将str的副本引用指向了一个新的内存地址,但原数据引用sv.str并不受影响。
综上,选A

 9、以下关于java封装的描述中,正确的是:
A 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性
B 封装的意义不大,因此在编码中尽量不要使用
C 如果子类继承父类,对于父类中进行封装的方法,子类仍然可以直接调用
D 只能对一个类中的方法进行封装,不能对属性进行封装
正确答案: A
10、在类设计中,类的成员变量要求仅仅能够被同一package下的类访问,请问应该使用下列哪个修饰词()
A protected
B public
C private
D 不需要任何修饰词
正确答案: D


二、编程题

   🔥最难的问题

    最难的问题__牛客网

import java.util.*;
public class Main {public static void main(String[] args){Scanner sc=new Scanner(System.in);while(sc.hasNextLine()){String s=sc.nextLine();StringBuilder sb=new StringBuilder();for(int i=0;i<s.length();i++){char str=s.charAt(i);if(str==' '){sb.append(" ");}else{sb.append((char)(str>'E'?str-5:str+21));}}System.out.println(sb);}}       
}

🔥因子个数

因子个数__牛客网

 【解题思路】
从最小因子2到数字的最大因子数(数字的平方根)开始判断是否能够取余可以则循环取余直到取余不为0,因子个数+1;否则使用下一个因子计算;
最终整除了各个因子数之后剩余的数字不为1则本身也是一个因子,因此因子数+1。

import java.util.*;
public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);while(sc.hasNext()){int n = sc.nextInt();int count = 0;for(int i=2; i<Math.sqrt(n); i++){if(n%i == 0){while(n%i == 0){n = n/i;}count++;}}if(n != 1){count++;}System.out.println(count);}}
}


http://www.ppmy.cn/news/56384.html

相关文章

Towards Principled Disentanglement for Domain Generalization

本文用大量的理论论述了基于解纠缠约束优化的域泛化问题。 这篇文章认为以往的文章在解决域泛化问题时所用的方法都是non-trivial的&#xff0c;也就是说没有作严格的证明&#xff0c;是不可解释的&#xff0c;而本文用到大量的定理和推论证明了方法的有效性。 动机 因为域泛…

R语言 | 列表

目录 一、建立列表 1.1 建立列表对象——对象元素不含名称 1.2 建立列表对象——对象元素含名称 1.3 处理列表内对象的元素名称 1.4 获得列表的对象元素个数 二、获取列表内对象的元素内容 2.1 使用"$"符号取得列表对象的元素内容 2.2 使用"[[ ]]"符…

互联网摸鱼日报(2023-05-02)

互联网摸鱼日报&#xff08;2023-05-02&#xff09; InfoQ 热门话题 ASPLOS 23系统顶会论文 Plugsched &#xff1a;安全、高效的多场景调度器热升级详解 美团大规模容器集群降本增效实践 GitHub增加SBOM导出功能&#xff0c;使其更易于符合安全性需求 平台工程应知应会 …

DateFormat使用时需要注意:多线程下需要特殊处理

前言 工作或学习过程中难免会接触到时间&#xff08;Date&#xff09;相关的内容&#xff0c;比如String类型转为Date类型&#xff0c;或者Date类型转为String类型&#xff0c;jdk为我们提供了一套完善的日期格式化工具&#xff0c;DateFormat类&#xff0c;使用者可以使用该接…

《Effective Python 编写高质量Python代码的59个有效方法》学习笔记6(完)

用functools.wraps定义函数修饰器 python为修饰器提供了专门的语法&#xff0c;它使得程序在运行的时候&#xff0c;能够用一个函数来修饰另一个函数 对于调试器这种依靠内省机制的工具&#xff0c;直接编写修饰器会引发奇怪的行为 内置的functools模块提供了名为wraps的修饰器…

修改 cuComplex.h, 将复数运算应用到没有cuda环境的C语言程序设计里

修改了 cuda环境里的 cuComplex.h文件&#xff1a; 基于float的complex数据类型的运算&#xff1a; /* cuComplex.h** float cuCrealf(cuFloatComplex x)// 取实部 float cuCimagf(cuFloatComplex x)// 取虚部 cuFloatComplex make_cuFloatComplex(float r, float i)// 组合…

男子订民宿被毁约5个家庭漂泊街头 房东:住满了,没办法

据媒体报道&#xff0c;5月1日&#xff0c;一位叫做诸先生的消费者和朋友们提前在平台上预订了五一假期前往青岛金沙滩地中海两天的别墅民宿&#xff0c;并支付了房款9600元。 但是当他们到达目的地前一个半小时联系房东时&#xff0c;却发现联系不上人。到达指定地点后&#x…

关于PostgreSql数据库和mysql的不同点及注意事项

关于PostgreSql数据库和mysql的不同点及注意事项 一、数据类型&#xff1a;1. update time &#xff08;更新时间&#xff09;2. IN3. upsert4. Boolean5. datetime6. decimal 二、Postgresql函数与mysql异同点&#xff1a;1. if函数2. Ifnull3. 时间函数4. dml schema不一样5.…