Java面向对象编程(30)

简介: Java面向对象编程(30)

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

mport 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

java 的字符类型采用的是 Unicode 编码方案,每个 Unicode 码占用()个比特位。

A. 8

B. 16

C. 32

D. 64

答案:B

下列哪些语句关于 java 内存回收的说明是正确的?

A. 程序员必须创建一个线程来释放内存

B. 内存回收程序负责释放无用内存

C. 内存回收程序允许程序员直接释放内存

D. 内存回收程序可以在指定的时间释放内存对象

答案:B

以下多线程对int型变量x的操作,哪个不需要进行同步()

A. ++x

B. x=y

C. x++

D. x=1

答案:D

如果希望某个变量只可以被类本身访问和调用,则应该使用下列哪一种访问控制修饰?

A. public

B. private

C. private protected

D. protected

答案:B

有如下4条语句:()

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

以下输出结果为false的是:

A. System.out.println(i01==i02);

B. System.out.println(i01==i03);

C. System.out.println(i03==i04);

D. System.out.println(i02==i04);

答案:C

关于以下程序代码的说明正确的是()

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

A. 程序通过编译,输出结果为:x=102

B. 程序通过编译,输出结果为:x=103

C. 10行不能通过编译.因为x星私有静态变量

D. 5行不能通过编译.因为引用了私有静态变量

答案:A

以下代码输出的是:

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封装的描述中,正确的是:

A. 封装的主要作用在于对外隐藏内部实现细节,增强程序的安全性

B. 封装的意义不大,因此在编码中尽量不要使用

C. 如果子类继承父类,对于父类中进行封装的方法,子类仍然可以直接调用

D. 只能对一个类中的方法进行封装,不能对属性进行封装

答案:A

在类设计中,类的成员变量要求仅仅能够被同一package下的类访问,请问应该使用下列哪个修饰词()

A. protected

B. public

C. private

D. 不需要任何修饰词

答案:D

最难的问题

题目描述:NowCoder生活在充满危险和阴谋的年代。为了生存,他首次发明了密码,用于军队的消息传递。假设你是军团中的一名军官,需要把发送来的消息破译出来、 并提 供给你的将军。

消息加密的办法是:对消息原文中的每个字母,分别用该字母之后的第5个字母替换(例如:消息原文中的每个字母A 都分别替换成字母F),其他字符不 变,并 且消息原文的所有字母都是大写的。

密码中的字母与原文中的字母对应关系如下。

密码字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

原文字母:V W X Y Z A B C D E F G H I J K L M N O P Q R S T U

输入描述:输入包括多组数据,每组数据一行,为收到的密文。

密文仅有空格和大写字母组成。

输出描述:对应每一组数据,输出解密后的明文。

public class Main47 {
//    最难的问题
public static void main(String[] args) {
    Scanner scanner=new Scanner(System.in);
    while (scanner.hasNext()){
        String line=scanner.nextLine();
        StringBuilder sb=new StringBuilder();
        for (int i = 0; i < line.length(); i++) {
            char c=line.charAt(i);
            if (c==' '){
                sb.append(" ");
            }else {
                sb.append((char) (c>'E' ?c-5:c+21));
            }
        }
        System.out.println(sb);
    }
}
}

因子个数

题目描述:一个正整数可以分解成一个或多个数组的积。例如36=2*2*3*3,即包含2和3两个因子。NowCoder最近在研究因子个数的分布规律,现在给出一系列正整数, 他希望你开发一个程序输出每个正整数的因子个数。

输入描述:输入包括多组数据。 每组数据仅有一个整数n (2≤n≤100000)。 输出描述:对应每个整数,输出其因子个数,每个结果占一行。

public class Main48 {
    //因子个数
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            int n=scanner.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);
        }
    }
}
相关文章
|
28天前
|
Java
Java面向对象编程新篇章:多态,你准备好了吗?
【6月更文挑战第17天】Java的多态性是面向对象编程的核心,它允许通过统一的接口处理不同类型的对象。例如,在一个虚拟宠物游戏中,抽象类`Pet`定义了`speak()`方法,猫、狗和鹦鹉等子类各自重写此方法以实现独特叫声。在`main`方法中,使用`Pet`类型的引用创建子类对象并调用`speak()`,多态机制确保调用实际对象的方法,实现代码的灵活性和可扩展性。通过多态,我们能以更低的耦合度和更高的复用性编写更优雅的代码。
|
29天前
|
Java
Java 面向对象编程:父类与子类的“传承”与“创新”之路
【6月更文挑战第16天】Java 中的父类与子类展示了面向对象的“传承”与“创新”。子类`Dog`继承`Animal`,获取其属性和方法如`name`和`makeSound`。子类通过`@Override`增强`makeSound`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
|
1月前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
33 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
29天前
|
存储 安全 Java
深入探讨 Java 封装机制:为何它是面向对象编程的核心?
【6月更文挑战第16天】Java的封装是OOP核心,它将数据和操作数据的方法打包在类中,隐藏实现细节并提供公共接口。例如,`Student`类封装了私有属性`name`和`age`,通过`get/set`方法安全访问。封装提升代码稳定性、可维护性和复用性,防止外部直接修改导致的错误,确保数据安全。它是面向对象编程优于传统编程的关键,促进高效、可靠的开发。
|
27天前
|
Java 数据安全/隐私保护 开发者
Java是一种完全支持面向对象编程的语言,其面向对象特性包括封装、继承、多态和抽象等
【6月更文挑战第18天】**面向对象编程(OOP)通过对象封装状态和行为,实现问题域的抽象。Java全面支持OOP,核心特性包括**: - **封装**:保护数据安全,隐藏内部细节。 - **继承**:子类继承父类属性和行为,促进代码重用。 - **多态**:一个接口多种实现,增强灵活性和扩展性。 - **抽象**:通过接口和抽象类抽离共性,简化复杂性。 **Java的OOP便于理解和解决复杂系统问题。**
30 3
|
26天前
|
Java 开发者
Java面向对象编程(OOP)的四个主要概念
【6月更文挑战第19天】Java OOP的基石是封装、抽象、继承和多态。封装是通过类隐藏数据细节;抽象简化复杂性,用接口和抽象类实现;继承让子类从父类继承属性和行为,促进代码重用;多态一个接口可有多种形态,分编译时和运行时。这些概念支持灵活且可扩展的软件设计。
21 1
|
29天前
|
Java
Java 面向对象编程大揭秘:子类如何“继承”父类,摇身一变成为“新贵”?!
【6月更文挑战第16天】Java中的继承允许子类从父类继承特性与功能,如`Dog`继承`Animal`,重写`makeSound`方法,展现独特行为。同样,`Circle`继承`Shape`,定制`draw`方法以绘制圆形。继承提高了代码复用和灵活性,使子类能基于父类基础创新,如同接力赛中父类传递接力棒,子类创造新辉煌。在Java世界,继承是构建复杂项目的关键机制,有待深入探索。
|
2月前
|
Java 编译器 数据库
滚雪球学Java(40):解读Java面向对象编程中的方法和继承,打造可维护的代码库
【5月更文挑战第15天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
35 4
滚雪球学Java(40):解读Java面向对象编程中的方法和继承,打造可维护的代码库
|
2月前
|
Java
深入探索Java语言的面向对象编程
深入探索Java语言的面向对象编程
|
2月前
|
Java 编译器
Java面向对象编程:构造方法详解
Java面向对象编程:构造方法详解
37 2