Java面向对象编程(18)

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

如下SQL语句中,____可能返回null值。

(1) select count(*) from t1;

(2) select max(col1) from t1;

(3) select concat('max=',max(col1)) from t1;

A. (1)可能,(2)和(3)不可能

B. (2)可能,(1)和(3)不可能

C. (3)可能,(1)和(2)不可能

D. (1)不可能,(2)和(3)可能

E. 都不可能

F. 都可能

答案:D

在关系表中,属性值必须是另一个表主键的有效值或空值,这样的属性是( )

A. 外键

B. 候选键

C. 主键

答案:A

下列关于数据库特点的说法中正确的是( )

A. 数据能共享且独立性高

B. 数据能共享但数据冗余很高

C. 能保证数据完整性但降低了安全性

D. 数据独立性高但不能实现共享

答案:A

在Sql server中,以下哪一句从表TABLE_NAME中提取前10条记录?

A. select * from TABLE_NAME where rowcount=10

B. select TOP 10 * from TABLE_NAME

C. select TOP of 10 * from TABLE_NAME

D. select * from TABLE_NAME where rowcount<=10

答案:B

查找 student表中所有电话号码(列名:telephone)的第一位为8或6,第三位为0的电话号码

A. SELECT telephone FROM student WHERE telephone LIKE ‘[8,6]%0*’

B. SELECT telephone FROM student WHERE telephone LIKE ‘(8,6)*0%’

C. SELECT telephone FROM student WHERE telephone LIKE ‘[8,6]_0%’

D. SELECT telephone FROM student WHERE telephone LIKE ‘[8,6]_0*’

答案:C

数据库有一个试卷表,希望找出试卷平均得分小于 90 的所有试卷( )

A. SELECT * FROM paper group by score having sum(score) < 90;

B. SELECT * FROM paper group by score having avg(score) < 90;

C. SELECT * FROM paper group by score having max(score) < 90;

D. SELECT * FROM paper group by score having mid(score) < 90;

答案:B

电话号码表t_phonebook中含有100万条数据,其中号码字段PhoneNo上创建了唯一索引,且电话号码全部由数字组成,要统计号码头为321的电话号码的数量,下面写法 执行速度最慢的是___

A. select count(*) from t_phonebook where phoneno >= ‘321’ and phoneno < ‘321A’

B. select count(*) from t_phonebook where phoneno like ‘321%’

C. select count(*) from t_phonebook where substr(phoneno,1,3) = ‘321’

D. 都一样快

答案:C

使用 % 作为通配符时,匹配的是:

A. 0个或1个字符

B. 1个以上的字符(包含1)

C. 0个以上的字符(包含0)

答案:C

数据库事务的 4 个特性是:原子性、一致性、()、隔离性。

A. 只读性

B. 封装性

C. 持续性

D. 恢复性

答案:C

以下不是关系型数据库管理系统(RDBMS)的是()

A. mysql

B. postgreSql

C. oracle

D. hadoop

答案:D

统计每个月兔子的总数

有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。

例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。

一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?

数据范围:输入满足:1<=n<=31

输入描述:输入一个int型整数表示第n个月

输出描述:输出对应的兔子总数

输入:3

输出:2

方法1:


public class Main1 {
    //统计每个月兔子的总数
    public static int find(int n){
        if (n==1 || n==2){
            return 1;
        }
        return find(n-1)+find(n-2);
    }
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int count=find(n);
        System.out.println(count);
    }
}

方法2:


public class Main2 {
    //统计每个月兔子的总数
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        while (scanner.hasNext()){
            int m=scanner.nextInt();
            System.out.println(num(m));
        }
    }
    public static int num(int m){
        int frist=1;
        int second=1;
        int num=0;
        for (int i = 3; i <= m; i++) {
            num=frist+second;
            frist=second;
            second=num;
        }
        return num;
    }
}

字符串通配符

在计算机中,通配符一种特殊语法,广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。

要求: 实现如下2个通配符:

*:匹配0个或以上的字符(能被*和?匹配的字符仅由英文字母和数字0到9组成)着重注意一下!!

?:匹配1个字符 (能被*和?匹配的字符仅由英文字母和数字0到9组成)

注意:匹配时不区分大小写。

输入: 通配符表达式; 一组字符串。

输出: 返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false

字符串长度:1<=length<=100

进阶:时间复杂度:O(N^2) ,空间复杂度:O(N)

输入描述:先输入一个带有通配符的字符串,再输入一个需要匹配的字符串

输出描述:返回不区分大小写的匹配结果,匹配成功输出true,匹配失败输出false

输入
Te?t*.*
z
pq
**Z
?*Bc?
H*?*a
Txt12.xls
zz
ppqq
0QZz
abcd
H#a
输出
false
false
false
true
true
false

注意:能被*和?匹配的字符仅由英文字母和数字0到9组成,且匹配时不区分大小写。

import java.util.Scanner;
//字符串通配符
public class Main21 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String t=sc.nextLine();
        String s=sc.nextLine();
        System.out.println(match(t,s));
    }
    public static boolean match(String t,String s){
        char[] ct=t.toCharArray();
        char[] cs=s.toCharArray();
        int lt=ct.length;
        int ls=cs.length;
        boolean[][] dp=new boolean[ls+1][lt+1];
        dp[0][0]=true;
        for (int i = 0; i <= ls; i++) {
            for (int j = 1; j <= lt ; j++) {
                if (ct[j-1]=='*'){
                    if ((i==0)){
                        dp[i][j]=dp[i][j-1];
                    }else {
                        if (cs[i-1]=='.' || (cs[i-1] >= 'A' && 
cs[i-1]<='Z')||(cs[i-1] >= 'a' && cs[i-1]<='z')||(cs[i-1] >= '0' 
&& cs[i-1]<='9')){
                            dp[i][j]=dp[i-1][j] || dp[i][j-1];
                        }
                    }
                }else {
                    if (i>0 && defs(ct[j-1],cs[i-1])){
                        dp[i][j]=dp[i-1][j-1];
                    }
                }
            }
        }
        return dp[ls][lt];
    }
    public static boolean defs(char t,char s){
        if (t=='?'){
            return true;
        }
        if (t>='a' && t<='z'){
            t=(char)(t-'a'+'A');
        }
        if (s>='a' && t<='z'){
            s=(char)(s-'a'+'A');
        }
        return s==t;
    }
}


相关文章
|
3月前
|
Java 开发者
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
在Java面向对象编程的广阔海洋中,多态犹如一股深邃的潜流,它推动着代码从单一走向多元,从僵化迈向灵活。
42 7
|
3月前
|
Java 开发者
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
那些年,我们一同踏入Java编程的大门,多态,这个充满魔法的名字,曾无数次点亮我们探索面向对象编程的热情。
49 5
|
3月前
|
Java 程序员
Java中的继承和多态:理解面向对象编程的核心概念
【8月更文挑战第22天】在Java的世界中,继承和多态不仅仅是编程技巧,它们是构建可维护、可扩展软件架构的基石。通过本文,我们将深入探讨这两个概念,并揭示它们如何共同作用于面向对象编程(OOP)的实践之中。你将了解继承如何简化代码重用,以及多态如何为程序提供灵活性和扩展性。让我们启程,探索Java语言中这些强大特性的秘密。
|
5月前
|
Java
Java面向对象编程新篇章:多态,你准备好了吗?
【6月更文挑战第17天】Java的多态性是面向对象编程的核心,它允许通过统一的接口处理不同类型的对象。例如,在一个虚拟宠物游戏中,抽象类`Pet`定义了`speak()`方法,猫、狗和鹦鹉等子类各自重写此方法以实现独特叫声。在`main`方法中,使用`Pet`类型的引用创建子类对象并调用`speak()`,多态机制确保调用实际对象的方法,实现代码的灵活性和可扩展性。通过多态,我们能以更低的耦合度和更高的复用性编写更优雅的代码。
38 3
|
5月前
|
Java
Java 面向对象编程:父类与子类的“传承”与“创新”之路
【6月更文挑战第16天】Java 中的父类与子类展示了面向对象的“传承”与“创新”。子类`Dog`继承`Animal`,获取其属性和方法如`name`和`makeSound`。子类通过`@Override`增强`makeSound`,显示多态性。设计父类时应考虑普遍性,子类创新专注自身特性,遵循继承最佳实践,利用复用提升效率,构建可维护的软件系统。
152 57
|
3月前
|
存储 前端开发 JavaScript
【前端学java】面向对象编程基础-类的使用(4)
【8月更文挑战第9天】面向对象编程基础-类的使用
20 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`方法安全访问。封装提升代码稳定性、可维护性和复用性,防止外部直接修改导致的错误,确保数据安全。它是面向对象编程优于传统编程的关键,促进高效、可靠的开发。
62 7
下一篇
无影云桌面