笔试强训(八)

一、选择题

(1)以下说法错误的是(C)
A.数组是一个对象
B.数组不是一个原生类
C.数组的大小可以任意改变
D.在Java中,数组存储在堆中连续的内存空间中

数组不是一个原生类,数组是通过基本类型来定义的
int[] arr=new int[100];

(2)下面这段代码的执行结果(22,34,17)

public class Test4 {
    public static void main(String[] args) {
        
        System.out.println(new B().getValue());
    }
    static  class  A{
        protected  int value;
        public A(int v){
            setValue(v);
        }
        public void setValue(int value){

            this.value=value;
        }
       public int getValue(){
           try{
               value++;
               return value;
           }catch (Exception e){
               System.out.println(e.toString());
           }finally {
                this.setValue(value);
               System.out.println(value);
           }
           return  value;
       }
    }
    static  class  B extends A{
        public B(){
            super(5);
            setValue(getValue()-3)  ;
        }
        public void  setValue(int value){
            super.setValue(2*value);
        }
    }
}

在这里插入图片描述
(3)如何跳出Array 的for-each循环(A)
A.break
B.return true
C.return false
D.以上说法都不对
(4)一个以".java"为后缀的源文件(C)
A.只能包含一个类,类名必须与文件名相同
B.只能包含与文件名相同的类以及其中的内部类
C.只能有一个与文件名相同的类,可以包含其他类
D.可以包含任意类

.java后缀的源文件可以包含多个类,故A错误
不一定非是内部类,也可以是一个普通的类,B错误

(5)以下代码cnt值为(5)
在这里插入图片描述

如果一个类中的有多个静态代码块,那么定义在前面的静态代码块先执行,定义在后面的静态代码块后执行

二、编程题

2.1 两种排列方式

2.1.1 题目

在这里插入图片描述

2.1.2 题解

代码:

package newcoder;

import java.util.Scanner;

public class Test2 {
    public static boolean process(String str1,String str2){
        if(str1==null && str2==null) return true;
        if(str1==null || str2==null) return false;
        int i=0;
        int j=0;
        while(i<str1.length() && j<str2.length()){
            if(str1.charAt(i)>str2.charAt(j)){
                return false;
            } else if(str1.charAt(i)<str2.charAt(j)){
                return true;
            }else {
                i++;
                j++;
            }
        }
        if(i==str1.length()){
            return true;
        }else {
            return  false;
        }
    }
    public static boolean isLexi(String[] strs){
        for(int i=0;i<strs.length-1;i++){
            if(!process(strs[i],strs[i+1])){
                return false;
            }
        }
        return true;
    }
    public static boolean isLengths(String[] strs){
        for(int i=0;i<strs.length-1;i++){
            if(strs[i].length()>strs[i+1].length()){
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n=Integer.valueOf(scanner.nextLine());
        String[] strs=new String[n];
        if(n==0 ||strs==null ||strs.length==0)   System.out.println("both");
        for(int i=0;i<n;i++){
            strs[i]=scanner.nextLine();
        }
        if(isLengths(strs) && isLexi(strs)){
            System.out.println("both");
        }else if(isLengths(strs)){
            System.out.println("lengths");
        }else if(isLexi(strs)){
            System.out.println("lexicographically");
        }else {
            System.out.println("none");
        }
    }
}

【注意】:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值