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面向对象编程新篇章:多态,你准备好了吗?
【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