Java面向对象编程(27)

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

用命令方式运行以下代码的运行结果是()

public class f{
 public static void main(String[] args){
 String foo1 = args[1];
 String foo2 = args[2];
 String foo3 = args[3];
 }
}

命令: java f a b c

A. 程序编译错误

B. a b c

C. 程序运行错误

D. f

答案:C

若有定义语句: int a=10 ; double b=3.14 ; 则表达式 'A'+a+b 值的类型是()

A. char

B. int

C. double

D. float

答案:C

指出下列程序运行的结果()

public class Example{
 String str = new String("good");
 char[ ] ch = { 'a' , 'b' , 'c' };
 public static void main(String args[]){
 Example ex = new Example();
 ex.change(ex.str,ex.ch);
 System.out.print(ex.str + " and ");
 System.out.print(ex.ch);
}
 public void change(String str,char ch[ ]){
 str = "test ok";
 ch[0] = 'g';
}
}

A. good and abc

B. good and gbc

C. test ok and abc

D. test ok and gbc

答案:B

下列说法正确的是

A. 在类方法中可用this来调用本类的类方法

B. 在类方法中调用本类的类方法可直接调用

C. 在类方法中只能调用本类的类方法

D. 在类方法中绝对不能调用实例方法

答案:B

可将语句块或方法设为同步使用的语句是()

A. synchronized

B. static

C. abstract

D. final

答案:A

已知如下类说明:

public class Test{
 private float f=1.0f;
 int m=12;
 static int n=1;
 public static void main(String args[]){
 Test t=new Test();
 }
}

如下哪些使用是正确的()

A. t.f = 1.0

B. this.n

C. Test.m

D. Test.n

答案:D

有以下代码:

class A{
public A(String str){
}
}
public class Test{
public static void main(String[] args) {
A classa=new A("he");
A classb=new A("he");
System.out.println(classa==classb);
}
}

请问输出的结果是:

A. false

B. true

C. 报错

D. 以上选项都不正确

答案:A

以下哪项不属于java类加载过程?

A. 生成java.lang.Class对象

B. int类型对象成员变量赋予默认值

C. 执行static块代码

D. 类方法解析

答案:B

如果一个方法或变量是"private"访问级别,那么它的访问范围是:

A. 在当前类,或者子类中

B. 在当前类或者它的父类中

C. 在当前类,或者它所有的父类中

D. 在当前类中

答案:D

java中下面哪个能创建并启动线程()

public class MyRunnable implements Runnable {
 public void run() {
 //some code here
 }
}

A. new Runnable(MyRunnable).start()

B. new Thread(MyRunnable).run()

C. new Thread(new MyRunnable()).start()

D. new MyRunnable().start()

答案:C

不用加减乘除做加法

题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。

数据范围:两个数都满足-10<=n<=1000

进阶:空间复杂度 O(1),时间复杂O(1)

public class Solution4 {
    public int Add(int num1,int num2){
        while (num2 !=0){
            int a=num1 ^num2;
            int b=(num1 & num2)<<1;
            num1=a;
            num2=b;
        }
        return num1;
    }
}

三角形

题目描述:给定三条边,请你判断一下能不能组成一个三角形。

输入描述:输入包含多组数据,每组数据包含三个正整数a、b、c(1≤a, b, c≤10^100)。

输出描述:对应每一组数据,如果它们能组成一个三角形,则输出“Yes”;否则,输出“No”。

 

public class Main43 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            BigDecimal a=scanner.nextBigDecimal();
            BigDecimal b=scanner.nextBigDecimal();
            BigDecimal c=scanner.nextBigDecimal();
            if (a.add(b).compareTo(c) >0 && a.add(c).compareTo(b) >0 && b.add(c).compareTo(a) >0){
                System.out.println("Yes");
            }else {
                System.out.println("No");
            }
        }
    }
}

反转部分单链表

题目描述:给定一个单链表,在链表中把第 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;
    }
}
相关文章
|
28天前
|
Java
Java 面向对象编程的三大法宝:封装、继承与多态
本文介绍了Java面向对象编程中的三大核心概念:封装、继承和多态。
103 15
|
28天前
|
Java 数据安全/隐私保护 开发者
【潜意识Java】深入理解 Java 面向对象编程(OOP)
本文介绍了Java中的面向对象编程(OOP)核心概念,包括封装、继承、多态和抽象。封装通过访问控制保护数据,提高安全性;继承支持代码复用,减少冗余;多态实现灵活的行为调用;抽象则隐藏细节,简化接口设计。掌握这些概念有助于编写高效、灵活且易于维护的代码。文章通过实例详细讲解了每个概念在Java中的应用,并总结了它们的优势。
42 3
|
3月前
|
Java 开发者
Java 面向对象编程
总之,Java 的面向对象编程为开发者提供了一种有效的编程范式,帮助他们构建出高质量、可维护的软件系统。理解和掌握面向对象的概念和原则是成为优秀 Java 开发者的重要基础。
214 63
|
6月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
54 7
|
6月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
60 5
|
6月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
8月前
|
Java
Java面向对象编程新篇章:多态,你准备好了吗?
【6月更文挑战第17天】Java的多态性是面向对象编程的核心,它允许通过统一的接口处理不同类型的对象。例如,在一个虚拟宠物游戏中,抽象类`Pet`定义了`speak()`方法,猫、狗和鹦鹉等子类各自重写此方法以实现独特叫声。在`main`方法中,使用`Pet`类型的引用创建子类对象并调用`speak()`,多态机制确保调用实际对象的方法,实现代码的灵活性和可扩展性。通过多态,我们能以更低的耦合度和更高的复用性编写更优雅的代码。
53 3
|
8月前
|
Java
Java 面向对象编程:父类与子类的“传承”与“创新”之路
【6月更文挑战第16天】Java 中的父类与子类展示了面向对象的“传承”与“创新”。子类`Dog`继承`Animal`,获取其属性和方法如`name`和`makeSound`。子类通过`@Override`增强`makeSound`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
171 57
|
6月前
|
存储 前端开发 JavaScript
【前端学java】面向对象编程基础-类的使用(4)
【8月更文挑战第9天】面向对象编程基础-类的使用
36 0
|
6月前
|
Java 程序员 开发者
Java的面向对象编程:从基础到深入
【8月更文挑战第21天】在本文中,我们将探讨Java的面向对象编程(OOP)的核心概念,包括类、对象、继承、多态和封装。我们将通过实例和比喻,以通俗易懂的方式,深入理解这些概念的内涵和意义,以及它们如何影响我们的编程思维和实践。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更深入地理解Java的OOP,并启发你思考如何在你的项目中应用这些概念。

热门文章

最新文章