Java面向对象编程(28)

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

如果希望监听TCP端口9000,服务器端应该怎样创建socket?

A. new Socket("localhost",9000);

B. new ServerSocket(9000);

C. new Socket(9000);

D. new ServerSocket("localhost",9000);

答案:B

下列哪个类的声明是正确的?

A. abstract final class HI{}

B. abstract private move(){}

C. protected private number;

D. public abstract class Car

答案:D

java 接口的修饰符可以为()

A. private

B. protected

C. final

D. abstract

答案:D

jre 判断程序是否执行结束的标准是()

A. 所有的前台线程执行完毕

B. 所有的后台线程执行完毕

C. 所有的线程执行完毕

D. 和以上都无关

答案:A

int i=5; int s=(i++)+(++i)+(i--)+(--i); s=( )//s 的值是什么?

A. 28

B. 25

C. 21

D. 26

E. 24

F. 23

答案:E

如下语句通过算术运算和逻辑运算之后i和 j的结果是()

int i=0;
int j=0;
if((++i>0)||(++j>0)) {
//打印出i和j的值。
}

A. i=0;j=0

B. i=1;j=1

C. i=0;j=1

D. i=1;j=0

答案:D

下面不属于Object类中方法的是:

A. hashCode()

B. finally()

C. wait()

D. toString()

答案:B

下列哪项不属于jdk1.6垃圾收集器?

A. Serial收集器

B. parNew收集器

C. CMS收集器

D. G1收集器

答案:D

instanceof运算符能够用来判断一个对象是否为:

A. 一个类的实例

B. 一个实现指定接口的类的实例

C. 全部正确

D. 一个子类的实例

答案:C

对于java类型变量char c,short s,float f,double d,表达式c*s+f+d的结果类型为()

A. float

B. char

C. short

D. double

答案:D

反转部分单链表

题目描述:给定一个单链表,在链表中把第 L 个节点到第 R 个节点这一部分进行反转。

输入描述:n 表示单链表的长度。 val 表示单链表各个节点的值。L 表示翻转区间的左端点。 R 表示翻转区间的右端点。

输出描述:在给定的函数中返回指定链表的头指针。

 


public class Main44 {
    //首先定义单链表的节点
    static class Node{
        int val;
        Node next;
        public Node(int val){
            this.val=val;
        }
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        //获取当前链表的节点个数
        int n=scanner.nextInt();
        //吃掉nextInt方法的换行符
        scanner.nextLine();
        // "1 2 3 4 5"
        String nodeValue=scanner.nextLine();
        String[] nodes=nodeValue.split(" ");
        //进行链表的创建
        Node dummyHead=new Node(-1);
        Node tail=dummyHead;
        for (int i = 0; i < n; i++) {
            //链表的尾插
            Node node=new Node(Integer.parseInt(nodes[i]));
            tail.next=node;
            tail=node;
        }
        //获取左区间和右区间的范围  "1 3"
        String part=scanner.nextLine();
        //1
        int left=Integer.parseInt(part.split(" ")[0]);
        //3
        int right=Integer.parseInt(part.split(" ")[1]);
        Node newHead=reversePartList(dummyHead.next,left,right);
        //进行输出处理
        while (newHead !=null){
            System.out.print(newHead.val+" ");
            newHead=newHead.next;
        }
    }
    public  static Node reversePartList(Node head,int left,int right){
        Node dummyHead=new Node(-1);
        dummyHead.next=head;
        Node prev=dummyHead;
        for (int i = 1; i < left; i++) {
            prev=prev.next;
        }
        //prev引用指向待反转区间的前驱节点,cur引用就是待反转区间的第一个节点
        Node cur=prev.next;
        for (int i = left; i < right; i++) {
            Node third=cur.next;
            //先把third引用从链表中删除
            cur.next=third.next;
            //再把third节点插入prev中
            third.next=prev.next;
            prev.next=third;
        }
        return dummyHead.next;
    }
}

猴子分桃

题目描述:老猴子辛苦了一辈子,给那群小猴子们留下了一笔巨大的财富——一大堆桃子。老猴子决定把这些桃子分给小猴子。 第一个猴子来了,它把桃子分成五堆,五堆一样多,但还多出一个。它把剩下的一个留给老猴子,自己拿走其中的一堆。 第二个猴子来了,它把桃子分成五堆,五堆一样多,但又多出一个。它把多出的一个留给老猴子,自己拿走其中的一堆。 后来的小猴子都如此照办。最后剩下的桃子全部留给老猴子。

这里有n只小猴子,请你写个程序计算一下在开始时至少有多少个桃子,以及最后老猴子最少能得到几个桃子。

输入描述:输入包括多组测试数据。

每组测试数据包括一个整数n(1≤n≤20)。

输入以0结束,该行不做处理。

输出描述:每组测试数据对应一行输出。

包括两个整数a,b。

分别代表开始时最小需要的桃子数,和结束后老猴子最少能得到的桃子数。

 


public class Main45 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            int n=scanner.nextInt();
            if (n==0){
                break;
            }
            long a=(long) (Math.pow(5,n)-4);
            long b=(long) (Math.pow(4,n)+n-4);
            System.out.println(a+" "+b);
        }
    }
}
相关文章
|
3月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
41 7
|
3月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
48 5
|
3月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
5月前
|
Java
Java面向对象编程新篇章:多态,你准备好了吗?
【6月更文挑战第17天】Java的多态性是面向对象编程的核心,它允许通过统一的接口处理不同类型的对象。例如,在一个虚拟宠物游戏中,抽象类`Pet`定义了`speak()`方法,猫、狗和鹦鹉等子类各自重写此方法以实现独特叫声。在`main`方法中,使用`Pet`类型的引用创建子类对象并调用`speak()`,多态机制确保调用实际对象的方法,实现代码的灵活性和可扩展性。通过多态,我们能以更低的耦合度和更高的复用性编写更优雅的代码。
36 3
|
5月前
|
Java
Java 面向对象编程:父类与子类的“传承”与“创新”之路
【6月更文挑战第16天】Java 中的父类与子类展示了面向对象的“传承”与“创新”。子类`Dog`继承`Animal`,获取其属性和方法如`name`和`makeSound`。子类通过`@Override`增强`makeSound`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
152 57
|
3月前
|
存储 前端开发 JavaScript
【前端学java】面向对象编程基础-类的使用(4)
【8月更文挑战第9天】面向对象编程基础-类的使用
19 0
【前端学java】面向对象编程基础-类的使用(4)
|
3月前
|
Java 程序员 开发者
Java的面向对象编程:从基础到深入
【8月更文挑战第21天】在本文中,我们将探讨Java的面向对象编程(OOP)的核心概念,包括类、对象、继承、多态和封装。我们将通过实例和比喻,以通俗易懂的方式,深入理解这些概念的内涵和意义,以及它们如何影响我们的编程思维和实践。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更深入地理解Java的OOP,并启发你思考如何在你的项目中应用这些概念。
|
4月前
|
Java API 项目管理
Java中的函数式编程与传统面向对象编程对比
Java中的函数式编程与传统面向对象编程对比
|
5月前
|
Java 安全 索引
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
【6月更文挑战第2天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
62 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
5月前
|
存储 安全 Java
深入探讨 Java 封装机制:为何它是面向对象编程的核心?
【6月更文挑战第16天】Java的封装是OOP核心,它将数据和操作数据的方法打包在类中,隐藏实现细节并提供公共接口。例如,`Student`类封装了私有属性`name`和`age`,通过`get/set`方法安全访问。封装提升代码稳定性、可维护性和复用性,防止外部直接修改导致的错误,确保数据安全。它是面向对象编程优于传统编程的关键,促进高效、可靠的开发。
59 7