零基础小白也能一起跟的算法入门——Day-3

94 阅读6分钟

「这是我参与11月更文挑战的第5天,活动详情查看:2021最后一次更文挑战

👍欢迎来到算法入门到王者之路专栏,一起学习,一起进步😜

前言

大家好,我是全世界最强男人-白胡子。从今天开始我打算立一个flag。就是连续刷题48天。每天最少两道编程题。外加选择题不等。还望大家监督!!!。如果到时候一起刷题的人多的话,我会建一个算法交流群。主要还是看大家的想法啦。

@TOC

在这里插入图片描述

🐱‍🏍 一、选择题

✈️ 1: 以下代码运行输出的是

 public class Person{
private String name = "Person";
int age=0;
}
public class Child extends Person{
public String grade;
public static void main(String[] args){
Person p = new Child();
System.out.println(p.name);
}
}

A 输出:Person B 没有输出 C 编译出错 D 运行出错

💯解析: Person类的name属性是私有的,直接通过实例对象使用.操作符是获取不到的,需要构造getName方法来获取name。

🎖️正确答案:C


✈️ 2:以下程序的输出结果为

class Base{
public Base(String s){
System.out.print("B");
}
}
 public class Derived extends Base{
public Derived (String s) {
System.out.print("D");
} public static void main(String[] args){
new Derived("C");
}
}

A BD B DB C C D 编译错误

💯解析:

每个类至少要有一个构造方法,如果不写的话编译器会默认帮你创建一个。如果自己创建了一个含有参数的构造方法并且没有再创建不带参数的构造方法也是可以的。

在调用子类构造器之前会先调用父类构造器,如果当子类构造器中没有使用"super(参数或无参数)"指定调用父类构造器时,是默认调用父类的无参构造器,如果父类中包含有参构造器,却没有无参构造器,则在子类构造器中一定要使用“super(参数)”指定调用父类的有参构造器,不然就会报错。 上面的代码的正确做法:

class Base{
    public Base(String s){
        System.out.print("B");
    }
}
 class Derived extends Base{
    public Derived (String s) {
        super ("B");
        System.out.print("D");
    }
    public static void main(String[] args){
        new Derived("C");
    }
}

使用super关键性调用父类的有参数的构造方法。

🎖️正确答案:D


✈️ 3:下面关于构造方法的说法不正确的是 () A 构造方法也属于类的方法,可以创建对象的时候给成员变量赋值 B 构造方法不可以重载 C 构造方法没有返回值 D 构造方法一定要和类名相同

💯解析: A正确。 B:构造方法也可以重载,举个例子

class Dog{
    int age;
    String name;

    public Dog (int age) {
        this.age = age;
    }

    public Dog (String name) {
        this.name = name;
    }

    public Dog (int age, String name) {
        this.age = age;
        this.name = name;
    }
}

C构造方法里不能写return语句。 D不想同就不是构造方法了

🎖️正确答案:B


✈️ 4:在异常处理中,以下描述不正确的有 A try块不可以省略 B 可以使用多重catch块 C finally块可以省略 D catch块和finally块可以同时省略

💯解析:

异常的处理有try、catch、finally三板斧。try里是可能出现的异常代码。catch是对这些异常代码出现异常的措施,finally是无论出现或者不出现都执行的代码块。finally可省略。try和catch不可省略。

🎖️正确答案:D


✈️ 5:下列描述中,错误的是 A SQL语言又称为结构化查询语言 B java中”static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问 C 面向对象开发中,引用传递意味着传递的并不是实际的对象,而是对象的引用,因此,外部对引用对象所做的改变不会反映到所引用的对象上 D java是强类型语言,javascript是弱类型语言 E 面向对象的三大特性包括:封装,继承,多态

💯解析: C:Java 中只有值传递,外部对引用对象的改变会改变引用对象上。

🎖️正确答案:C


✈️ 6: 程序读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于 10 ,使用 throw 语句显式地引发异常,异常输出信息为 ”something’swrong!” ,语句为() A if(i>10)throw new Exception("something’swrong!"); B if(i>10)throw Exception e("something’swrong!"); C if(i>10) throw new Exception e("something’swrong!"); D if(i>10)throw Exception( "something’swrong!");:

💯解析:格式中不需要对象e

🎖️正确答案:A


✈️ 7: 以下关于集合类 ArrayList 、 LinkedList 、 HashMap 描述错误的是: A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值 B ArrayList和LinkedList均实现了List接口 C 添加和删除元素时,ArrayList的表现更佳 D ArrayList的访问速度比LinkedList快

💯解析: ArrayList底层是数组,在删除和添加时如果是最后一个元素那还好,如果是数组中的元素就需要将待删除(添加)元素的后面所有元素移动,很麻烦。

🎖️正确答案:C


✈️ 8: 在创建派生类对象,构造函数的执行顺序() A 基类构造函数,派生类对象成员构造函数,派生类本身的构造函数 B 派生类本身的构造函数,基类构造函数,对象成员构造函数 C 基类构造函数,派生类本身的构造函数,派生类对象成员构造函数 D 对象成员构造函数,基类构造函数,派生类本身的构造函数

💯解析: 父类优先于子类,静态优先非静态。 类的初始化过程就是方法执行的过程。 父类的静态域-子类的静态域 父类的非静态域-父类的构造函数 子类的非静态域-子类的构造函数 规律就是 父类先于子类 静态的先于非静态的 其中静态域包含静态代码块与静态方法,这个谁在前面,则先执行谁。 非静态域同理

🎖️正确答案:A


🐱‍🏍🐱‍🏍 二、编程题

2.1 字符串中找出连续最长的数字串

题目链接 链接:www.nowcoder.com/questionTer… 来源:牛客网 题目信息: 读入一个字符串str,输出字符串str中的连续最长的数字串

输入描述: 个测试输入包含1个测试用例,一个字符串str,长度不超过255。

输出描述: 在一行内输出str中里连续最长的数字串。 示例1 输入 abcd12345ed125ss123456789 输出 123456789

💯解析: 假设有字符串:abcd12345ed125ss123456789 1:先试用split方法按[a-z]分割。最后就剩下只包含数字的字符串 12345、125、123456789这三个 2:遍历数组,不断更新最长字符串并输出。

🎖️正确答案代码:

import java.util.Scanner;
public  class  Main{
    public static void main (String[] args) {
        Scanner sc = new Scanner (System.in);
        String s = sc.nextLine();
        //用这个split分割字符串最后得到的都是数字字符串
        String arr[]=s.split ("[a-z]");
       String res="";
        for (String tmp:arr) {
            //空格也不要
            if(tmp.contains (" ")){
                continue;
            }
            //不断遍历找出最长的那个数字串
            if(res.length ()<tmp.length ()){
                res=tmp;
            }
        }
        System.out.println (res);
    }
}

2.2数组中出现次数超过一半的数字

这道题我之前写过博客,这里附上链接。 题解

三、结尾

希望大家看到了能给个反馈,今天是第三天啦,一起加油!.