Java面向对象编程(7)

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

JAVA属于(   )。

A.操作系统

B.办公软件

C.数据库系统

D.计算机语言

答案:D

类声明中,声明抽象类的关键字是 ( )

A.public

B.abstract

C.final

D.class

答案:B

在使用 interface 声明一个接口时,只可以使用()修饰符修饰该接口

A.private

B.protected

C.默认

D.public

答案:D

Math.round(11.5) 等于()

A.11

B.11.5

C.12

D.12.5

答案:C

以下对继承的描述错误的是()

A.Java中的继承允许一个子类继承多个父类

B.父类更具有通用性,子类更具体

C.Java中的继承存在着传递性

D.当实例化子类时会递归调用父类中的构造方法

答案:A

在 java 中 , 一个类()

A.可以继承多个类

B.可以实现多个接口

C.在一个程序中只能有一个子类

D.只能实现一个接口

答案:B

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

class HasStatic{
    private static int x = 100;
    public static void main(String args[ ]){
        HasStatic hs1 = new HasStatic();
        hs1.x++;
        HasStatic hs2 = new HasStatic();
        hs2.x++;
        hs1=new HasStatic();
        hs1.x++;
        HasStatic.x--;
        System.out.println( "x=" +x);
    }
}

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

B.10行不能通过编译,因为x是私有静态变量

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

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

答案:D

以下 _____ 不是 Object 类的方法

A.clone()

B.finalize()

C.toString()

D.hasNext()

答案:D

下面哪一项不是 java 类访问权限控制关键字

A.public

B.this

C.private

D.protected

答案:B

java 语言使用的字符码集是

A.ASCII

B.BCD

C.DCB

D.Unicode

答案:D

Fibonacci数列是这样定义的:↓

F[0]·=-0

F[1]·=.1

For  each  i ≥·2:  F[i]·=F[i-1]·+F[i-2]

因此,Fibonacci数列就形如:0;1,1,2,3,5,8,13...,在Fibonacci数列中的数我们称

为Fibonacci数。给你一个N,你想让其变为一个Fibonacci数,每一步你可以把当前数

字X变为X-1或者X+1,现在给你一个数N求最少需要多少步可以变为Fibonacci数。

输入描述:

输入为一个正整数N(1·≤ N·≤·1,000,000)

输出描述:<

输出一个最小的步数变为Fibonacci数"<↓

方法1:

public class Main9 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int f1=0;
        int f2=1;
        while (f2<n){
            int f3=f1+f2;
            f1=f2;
            f2=f3;
        }
        //循环结束的时候:f1<n<=f2
        int min=Math.min(n-f1,f2-n);
        System.out.println(min);
    }
}

方法2:

public class Main10 {
    //递归实现斐波那契数
    public static int Fibonacci(int n){
        if (n==0){
            return 0;
        }
        if (n==1 || n==2){
            return 1;
        }
        return Fibonacci(n-1)+Fibonacci(n-2);
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int i=0;
        int count=0;
        //在while循环内部,确保Fibonacci(i) <= n
        while (Fibonacci(i) <= n){
            int ret=Fibonacci(i);
            if (ret < n){
                i++;
                count=ret;
            }else if (ret==n){
                System.out.println(0);
            }
        }
        if (Fibonacci(i-1) < n){
            int ret= Fibonacci(i);
            if ((ret-n) > (n-Fibonacci(i-1))){
                System.out.println(n-Fibonacci(i-1));
            }else if ((ret-n) < (n-Fibonacci(i-1))){
                System.out.println(ret-n);
            }else {
                System.out.println(0);
            }
        }
    }
}

合法括号序列判断:

题目描述:

给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。

public class Parenthesis {
    public static boolean chkParenthesis(String str, int n) {
        if (str.length() != n || n %2 !=0 ){
            return false;
        }
        char[] ch=str.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            if ((ch[i] != '(' ) && (ch[i] !=')')){
                return false;
            }
        }
        return true;
    }
}

方法2:

用栈!!栈中存放左括号,当遇到右括号之后,检查栈中是否有右括号,如果有则出栈,如果没有则说明不匹配!!

  1. 如果字符串的长度不为偶数的时候,直接返回false
  2. 当长度为偶数,遍历字符串,遇到左括号入栈,遇到右括号,看栈顶元素是否为左括号,如果是,则左括号出栈,继续遍历
  3. 如果遍历到一个非括号的字符,直接返回false
public class Main11 {
    public static Boolean chkParenthesis(String A,int n){
        if (n % 2 != 0){
            return false;
        }
        Stack<Character> stack=new Stack<>();
        for (char c:A.toCharArray()) {
            if (c=='('){
                stack.push(c);
            }else if (c==')'){
                //右括号优先于左括号出现,非法!
                if (stack.isEmpty()){
                    return false;
                }else if (stack.peek()=='('){//偷看
                    stack.pop();
                }
            }else {//既不是左括号,有不是右括号的情况!
                return false;
            }
        }
        return stack.isEmpty();
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        String str=scanner.nextLine();
        int n=scanner.nextInt();
        Boolean boo=chkParenthesis(str,n);
        System.out.println(boo);
    }
}
相关文章
|
3月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
38 7
|
3月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
46 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`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
148 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!!
59 5
滚雪球学Java(48):面向对象编程中的StringBuffer类详解
|
5月前
|
存储 安全 Java
深入探讨 Java 封装机制:为何它是面向对象编程的核心?
【6月更文挑战第16天】Java的封装是OOP核心,它将数据和操作数据的方法打包在类中,隐藏实现细节并提供公共接口。例如,`Student`类封装了私有属性`name`和`age`,通过`get/set`方法安全访问。封装提升代码稳定性、可维护性和复用性,防止外部直接修改导致的错误,确保数据安全。它是面向对象编程优于传统编程的关键,促进高效、可靠的开发。
58 7