精华内容
下载资源
问答
  • java基础笔试题
    千次阅读
    2019-06-05 11:15:41

    Java填空题

    1. 已知代码,最后输出结果a的值为__21____, b的值为______39____
      Int a = 10;
      int b = 20;
      If(a++ >10 || --b<20){
      a += 10;
      b += 20;
      }
    2. 已知代码,最后输出结果a的值为__11____, b的值为______20____

    int a = 10;
    int b = 20;
    if(a++ >10 && --b<20){
    a += 10;
    b += 20;
    }
    System.out.println(a);
    System.out.println(b);
    3. 已知代码,在空格处添加________代码块,实现打印5个KaTeX parse error: Expected '}', got 'EOF' at end of input: …m.out.println(“”);
    count–;
    if(count==5){ break; };
    }
    4.已知代码,在空格处添加___i+=2_____代码,输出1,3,5,7,9
    for(int i=1;i<=10;i+=2____){
    System.out.println(i);
    }
    5. 已知程序:输出num值为___200__输出num值为___300__
    public class Test{
    private static int num2 = 100;
    public static void changeNum(int num){
    num = 1000;
    }
    Public static void main(string[] args){
    int num = 200;
    int num2 = 300;
    changeNum(num)
    changeNum(num2)
    System.out.println(num);
    System.out.println(num2);
    }
    }
    6. 已知程序:控制台输出的结果是____in finally 7___
    public static int testTry(){
    int a = 7;
    try{
    return a;
    }catch(Exception e){
    System.out.println(“in catch”);
    }finally{
    System.out.println(“in finally”);
    a = 10;
    }
    return a;
    }
    public static void main(String[] args) {
    System.out.println(testTry());
    }

    简答题

    1. 请写出input标签的10个type属性
      Text文本框 password 密码框 radio 单选按钮 checkbox 复选框
      Image图像域 file文件域 button 按钮 reset 重置
      Submit提交按钮 hidden隐藏

    2. 请写出String,StringBuffer和StringBuilder的区别
      String 字符串常量 长度不可变 使用字符串拼接时是不同的2个空间 连接效率低
      StringBuffer 字符串缓冲区 长度可变 线程安全 字符串拼接直接在字符串后追加
      StringBuilder 字符串缓冲区 长度可变 非线程安全 字符串拼接直接在字符串后追加

    3. 请写出ArrayList与LinkedList的区别
      ArrayList 采用的是数组形式来保存对象的,这种方式将对象放在连续的位置中,所以最大的缺点就是插入删除时非常麻烦
      LinkedList 采用的将对象存放在独立的空间中,而且在每个空间中还保存下一个链接的索引 但是缺点就是查找非常麻烦 要丛第一个索引开始

    4. 表单提交Get和Post方式的区别
      get是从服务器上获取数据, post是向服务器传送数据。
      get传参,在URL中可以看到, post是通过HTTP post机制传参,用户看不到这个过程。
      对于get方式,服务器端用Request.QueryString获取变量的值,
      对于post方式,服务器端用Request.Form获取提交的数据。
      get传送的数据量较小,不能大于2KB,post传送的数据量较大,一般被默认为不受限制
      get安全性非常低,post安全性较高. 但是get执行效率却比Post方法好.
      上传时必须用post

    5. 请写出finally,final,finalize() 的区别
      Final是一个修饰符:
      当final修饰一个变量的时候,变量变成一个常量,它不能被二次赋值
      当final修饰的变量为静态变量(即由static修饰)时,必须在声明这个变 量的时候给它赋值
      当final修饰方法时,该方法不能被重写
      当final修饰类时,该类不能被继承
      Final不能修饰抽象类,因为抽象类中会有需要子类实现的抽象方法,
      (抽象类中可以有抽象方法,也可以有普通方法,当一个抽象类中没有抽象方法时,
      这个抽象类也就没有了它存在的必要)
      Final不能修饰接口,因为接口中有需要其实现类来实现的方法
      Finally:
      Finally只能与try/catch语句结合使用,finally语句块中的语句一定会执行,
      并且会在return,continue,break关键字之前执行
      finalize:
      Finalize是一个方法,属于java.lang.Object类,finalize()方法是GC(garbage collector垃圾回收)运行机制的一部分,finalize()方法是在GC清理它所从属的对象时被调用的
      6.请写出list集合的实现类的区别
      ArrayList:查询数据比较快,添加和删除数据比较慢(基于可变数组)线程不安全的
      LinkedList:查询数据比较慢,添加和删除数据比较快(基于链表数据结构)线程不安全
      Vector:线程安全

    访问权限修饰符以及它们修饰之后的访问范围?以及范围从小到大的排序
    访问修饰符 同一个类 同包 不同包,子类 不同包,非子类
    private √
    default √ √
    protected √ √ √
    public √ √ √ √

    访问修饰符是控制类,属性,方法的访问范围。
    Public 公共的 在整个项目中可以访问
    Protected 受保护的 在同一个包中以及不同包的子类中访问
    Default 默认的 在同一个包中 访问
    Private 私有的 只能在当前类中访问

    8.请写出运行时异常和非运行时异常的区别,并且每种至少写出3个常见的异常
    运行时异常: 都是RuntimeException类及其子类异常:
    IndexOutOfBoundsException 索引越界异常
    ArithmeticException:数学计算异常
    NullPointerException:空指针异常

    非运行时异常:是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。
    如:IOException、文件读写异常
    FileNotFoundException:文件未找到异常
    EOFException:读写文件尾异常
    9. 请写出Hashtable与HashMap的区别
    HashMap 线程不安全的,效率高,允许键对象和值对象为null
    HashTable线程安全的,效率低,不允许键对象和值对象为空,否则会报异常
    10. 简述重写和重载的区别
    重载:重载发生在同一个类中,在该类中如果存在多个同名方法,
    但是方法的参数类型和个数不一样,那么说明该方法被重载了。
    重写:重写发生在子类继承父类的关系中,父类中的方法被子类继承,
    方法名,返回值类型,参数完全一样,但是方法体不一样,那么说明父类中的该方法被子类重写了。
    当父类无法满足子类的需求的时候需要重写父类中的方法。子类不能重写父类私有的和static修饰的方法
    子类不能抛出比父类更大的异常,子类重写父类方法时访问权限不能小于父类
    11. 请写出throw和throws的区别
    Throw表示抛出一个异常对象,异常对象需要抛出才能使用。用在方法体内。
    Throws 用来声明异常,用在方法的参数列表和方法体之间,表示声明异常类。
    调用声明异常类的方法需要处理异常。
    12.接口抽象类的区别
    1、抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
    2、抽象类要被子类继承,接口要被类实现。
    3、接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现
    4、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
    5、抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
    6、抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果
    7、抽象类里可以没有抽象方法
    8、如果一个类里有抽象方法,那么这个类只能是抽象类
    9、抽象方法要被实现,所以不能是静态的,也不能是私有的。
    10、接口可继承接口,并可多继承接口,但类只能单继承
    13.表单提交Get和Post方式的区别

    1. get是从服务器上获取数据,post是向服务器传送数据。
    2. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。
      但理论上,IIS4中最大量为80KB,IIS5中为100KB。
      1. get安全性非常低,post安全性较高。但是执行效率却比Post方法好。

    4.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
    5. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。

    1. 请写出List ,Set,Map的区别
      List接口和Set接口都是 Collection的子接口。所以都是单列集合,大部分操作相同,遍历都可以通过迭代器。
      不同在于 List中的元素 是 有下标 有序 可重复的,Set中的元素 没有下标无序不可重复
      Map 双列集合也叫映射,每个元素都有key(键)和value(值)两个对象组成组成
    2. switch语句后括号里的表达式是什么类型
      Byte short int char Enum枚举 Jdk1.7之后可以使用String
      16.分别描述一下java三大特性
      封装步骤
      1.属性私有化 为所有的成员变量添加private关键字
      2.公开属性的访问方法,get取值 set赋值
      3.添加 有参数和无参数的构造方法
      封装之后的对象使用.
      封装之后的对象使用属性时,不能使用 对象.属性 的方法,
      只能通过对象的 set方法赋值,get方法取值。

    继承和生活中的继承一样,继承者拥被继承者的特性。
    在java中的继承关系通过 extends关键字体现,格式
    Class 子类 extends 父类{类体}
    继承后子类拥有父类的特性,子类不能继承父类里 private 的特性和 构造方法,java中只能是单继承 一个类只可以有一个父类,一个父类可以有多个子类,实例化子类时默认先调用父类的构造方法。我们将类中相同的属性和方法向上提取封装成父类,可以增加代码的复用减少代码量。
    多态的意思就是一种事物的多种状态,是面向对象的三大特征之一(封装,继承,多态)
    1.方法的重载和重写
    2.用子类给父类赋值 (用父类的引用指向子类)
    3.用实现类给方法赋值 (用接口的引用指向实现类)

    17.请写出String对象的5个常用方法
    length() charAt() equals() indexOf() substring()
    concat() toLowerCase() split() compareTo() replace()
    18.简述int和Integer区别
    Integer是int提供的封装类,而int是Java的基本数据类型;
    Integer默认值是null,而int默认值是0;
    声明为Integer的变量需要实例化,而声明为int的变量不需要实例化;
    Integer类中常用的两个方法 parseInt(); 将String类型转换成int类型 返回值时int
    valueOf(); 将String类型转换成int类型 返回值时integer
    19.this关键字的作用
    指代当前对象 一般用来区分成员变量和局部变量
    调用当前类的属性 this.属性名
    调用当前类的方法 this.方法名(); 可以省略this
    调用当前类的构造方法 this () 当调用有参时需要在()里添加参数
    20.static关键字作用
    Static 静态,被静态修饰的 属性和方法 都在类加载的时候 创建
    修饰属性 静态属性 可以不需要对象通过类名直接调用 类名.属性
    修饰方法 静态方法 可以不需要对象通过类名直接调用 类名.方法名(参数)
    Static 的属性可以认为是属于类的 并不是独立于对象中
    21.Super关键字作用
    一般用来调用父级的特性
    调用父级属性 super.属性名
    调用父类方法 super.方法名()

    更多相关内容
  • java基础笔试题(答案已整理).pdf
  • Java基础笔试题.doc.zip

    2021-06-02 23:14:20
    Java基础笔试题.doc.zip
  • java基础笔试题

    2016-11-26 12:27:13
    45页+ java基础 试题
  • Java基础笔试题Java基础笔试题
  • java基础笔试题加答案

    2017-08-18 13:50:31
    Java基础笔试题
  • JAVA基础笔试题

    2019-04-12 11:08:00
    JAVA基础笔试题用于考试样题,提高技术非常有用 妈妈再也不用担心我的考试成绩了
  • java基础笔试题(50题)

    千次阅读 2021-08-16 20:15:29
    第一:兔子问题 1.1题目描述 题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 1.2解题分析 兔子...

    目录

    第一题:兔子问题

    1.1题目描述

    1.2解题分析

    1.3编码实现

    第二题:素数问题

    2.1题目描述

    2.2解题分析

    2.3编码实现

    第三题:水仙花数题

    3.1题目分析

    3.2解题分析

    3.3编码实现

    第四题:正整数分解问题

    4.1题目描述

    4.2解题分析

    4.3编码实现

    第五题:成绩问题

    5.1题目描述

    5.2解题分析

    5.3代码实现

    第六题:最大最小公倍数问题

    6.1题目描述

    6.2解题分析

    6.3编码实现

    第七题:统计字符个数

    7.1题目描述

    7.2解题分析

    7.3编码实现

    第八题:累加数问题

    8.1题目描述

    8.2解题分析

    8.3编码实现

    9.1题目描述

    9.2解题分析

    9.3编码实现

    第十题:小球弹起问题

    10.1题目描述

    10.2解题分析

    10.3编码实现

    第十一题:组合问题

    11.1题目描述

    11.2解题分析

    11.3编码实现

    第十二题:企业利润问题

    12.1题目描述

    12.2解题分析

    12.3代码实现

    第十三题:完全平方数问题

    13.1题目描述

    13.2解题分析

    13.3编码实现

    第十四题:日期问题

    14.1题目描述

    14.2解题分析

    14.3代码实现

    第十五题:大小数输出问题

    15.1题目描述

    15.2解题分析

    15.3编码实现

    第十六题:输出 9*9 题

    16.1题目描述

    16.2解题分析

    16.3编码实现

    第十七题:猴子吃桃问题

    17.1题目描述

    17.2解题分析

    17.3编码实现

    第十八题:乒乓球问题

    18.1题目描述

    18.2解题分析

    18.3编码实现

    第十九题:菱形问题

    19.1题目描述

    19.2解题分析

    19.3.编码实现 

    第二十题:分数和

    20.1题目描述

    20.2解题分析

    20.3编码实现

    第二十一题:累乘和问题

    21.1题目描述

    21.2解题分析

    21.3编码实现

    第二十二题:递归问题

    22.1题目描述

    22.2解题分析

    22.3编码实现

    第二十三题:年龄问题

    23.1题目描述

    23.2解题分析

    23.3编码实现

    第二十四题:打印数问题

    24.1题目描述

    24.2解题分析

    24.3代码实现

    第二十五题:回文数问题

    25.1题目描述

    25.2解题分析

    25.3编码实现

    第二十六题:判断星期几题目

    26.1题目描述

    26.2解题分析

    26.3编码实现

    第二十七题:素数问题

    27.1题目描述

    27.2解题分析

    27.3编码实现

    第二十八题:数排序问题

    28.1题目描述

    28.2解题分析

    28.3编码实现

    第二十九题:矩阵问题

    29.1题目描述

    29.2解题分析

    29.3编码实现

    第三十题:数组放数问题

    30.1题目描述

    30.2解题分析

    30.3代码实现

    第三十一题:数组逆序输出问题

    31.1题目描述

    31.2解题分析

    31.3代码实现

    第三十二题:输出整数一些位数问题

    32.1题目描述

    32.2解题分析

    32.3编码实现

    第三十三题:杨辉三角形问题

    33.1题目描述

    33.2解题分析

    33.3编码实现

    第三十四题:大小数输出问题

    34.1题目描述

    34.2解题分析

    34.3代码实现

    第三十五题:数组元素交换问题

    35.1题目描述

    35.2解题分析

    35.3代码实现

    第三十六题:数字移动问题

    36.1题目描述

    36.2解题分析

    36.3代码实现

    第三十七题:围圈剩人问题

    37.1题目描述

    37.2解题分析

    37.3代码实现

    第三十八题:字符串问题

    38.1题目描述

    38.2解题分析

    38.3代码实现

    第三十九题:调用函数问题

    39.1题目描述

    39.2解题分析

    39.3代码实现

    第四十题:字符串排序问题

    40.1题目描述

    40.2解题分析

    40.3编码实现

    第四十一题:猴分桃问题

    41.1题目描述

    41.2解题分析

    41.3编码实现

    第四十二题:解方程

    42.1题目描述

    42.2解题分析

    42.3编码实现

    第四十三题:求奇数个数问题

    43.1题目描述

    43.2解题分析

    43.3编码实现

    第四十四题:偶数表示为奇数和问题

    44.1题目描述

    44.2解题分析

    44.3编码实现

    第四十五题:素数整除问题

    45.1题目描述

    45.2解题分析

    45.3代码实现

    第四十六题:字符串连接问题

    46.1题目描述

    46.2解题分析

    46.3编码实现

    第四十七题:读取并打印问题

    47.1题目描述

    47.2解题分析

    47.3代码实现

    第四十八题:电话加密问题

    48.1题目描述

    48.2解题分析

    48.3编码实现

    第四十九题:字符串子串问题

    49.1题目描述

    49.2解题分析

    49.3代码实现


    第一题:兔子问题

    1.1题目描述

    题目:古典问题:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

    1.2解题分析

    兔子的规律为数列 1,1,2,3,5,8,13,21.... 可以发现兔子的增长规律为斐波那契函数:f(n)=f(n-1)+f(n-2),即可设计程序

    1.3编码实现

    import java.util.Scanner;
    ​
    ​
    ​
    public class Demo04{
      public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        System.out.println(" 第"+n+"个月兔子总数为 "+fun(n));
      }
      private static int fun(int n){
        if(n==1 || n==2)
          return 1;
        else
          return fun(n-1)+fun(n-2);
      }
    }

    第二题:素数问题

    2.1题目描述

    判断101-200 之间有多少个素数,并输出所有素数。

    2.2解题分析

    一个大于1的正整数,如果除了1和它本身以外,不能被其他正整数整除,就叫素数

    2.3编码实现

    public class SuShu {
      public static void main(String[] args) {
        int i,j,count=0; 
          for(i=101;i<=200;i++) {
            for(j=2;j<=i;j++) {
              if(i!=j && i%j==0) { 
                 break;
              }if(i==j && i%j==0) { 
                    count++; 
                       System.out.println(i);
              }
            }
          }
      System.out.println("101~200之间的素数是"+count+"个");
    }
    }

    第三题:水仙花数题

    3.1题目分析

    打印出所有的 " 水仙花数 " ,所谓 " 水仙花数 " 是指一个三位数,其各位数字立方和等于该数本身。例 如: 153 是一个 " 水仙花数 " ,因为 153=1 的三次方+ 5 的三次方+ 3 的三次方。

    3.2解题分析

    利用for循环控制100-999的数,每个数分解出个位,十位,百位。

    3.3编码实现

    public class Flower {
      public static void main(String[] args) {
        int i = 100;          
        int x, y, z;
    ​
        while (i <= 999) {        
    ​
          x = i % 10;         
          y = i / 10 % 10;       
          z = i / 100;         
    ​
          if (i == x * x * x + y * y * y + z * z * z) {  
            System.out.println(i);
          }
          i++;
        }
      }
    }

    第四题:正整数分解问题

    4.1题目描述

    将一个正整数分解质因数。例如:输入 90, 打印出 90=233*5 。

    4.2解题分析

    程序分析:对 n 进行分解质因数,应先找到一个最小的质数 k,然后按下述步骤完成:

    (1) 如果这个质数恰等于 n,则说明分解质因数的过程已经结束,打印出即可。

    (2) 如果 n<>k,但 n 能被 k 整除,则应打印出 k 的值,并用 n 除以 k 的商 , 作为新的正整数 n, 重复执行第一步。

    (3) 如果 n 不能被 k 整除,则用 k+1 作为 k 的值, 重复执行第一步。

    4.3编码实现

    import java.util.Scanner;
    ​
    public class Num {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            int n = sc.nextInt();
            decompose(n);
        }
    ​
        private static void decompose(int n) {
            for (int i = 2; i < (n + 1); i++) {
                while (((n % i) == 0) && (n != i)) {
                    n /= i;
                    System.out.print(i + "*");
                }
    ​
                if (n == i) {
                    System.out.println(i);
    ​
                    break;
                }
            }
        }
    }

    第五题:成绩问题

    5.1题目描述

    利用条件运算符的嵌套来完成此题:学习成绩 >=90 分的同学用 A 表示, 60-89 分之间的用 B 表示,60 分以下的用 C表示。

    5.2解题分析

    (a>b)?a:b 这是条件运算符的基本例子。

    5.3代码实现

    import java.util.Scanner;
    ​
    public class CJ {
        public static void main(String[] args) {
            System.out.println("Please enter the score:");
            Scanner sc = new Scanner(System.in);
            int input = sc.nextInt();
            String result = input >= 90 ? "A" : ((input >= 60 && input < 90) ? "B" : "C");
            System.out.println(result);
        }
    }

    第六题:最大最小公倍数问题

    6.1题目描述

    输入两个正整数 m 和 n,求其最大公约数和最小公倍数。

    6.2解题分析

    用俩个方法分别求出最大公约数和最小公倍数

    6.3编码实现

    package demo03;
    ​
    import java.util.Scanner;
    ​
    public class Test1 {
        public static void main(String[] args){
            Scanner in= new Scanner(System.in);
            System.out.print("请输入第一个数字:");
            int a = in.nextInt();
            System.out.print("请输入第二个数字:");
            int b =in.nextInt();
            System.out.println("最大公约数是:"+ method(a,b));
            System.out.println("最小公倍数是:"+ method1(a,b));
        }
    ​
         public static int method(int m, int n){
            if(m<n){
                int temp=n;
                n=m;
                m=temp;
            }
            if(m%n==0){
                return n;
            }else{
                m%=n;
                return method(m,n);
            }
         }
    ​
         public static int method1(int p, int s){
            int i=1;
            if(p>s){
                int temp=s;
                s=p;
                p=temp;
            }
            int method1=p;
            while (method1%s!=0){
                method1=p*i;
                i++;
            }
            return  method1;
         }
    ​
    }

    第七题:统计字符个数

    7.1题目描述

    输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

    7.2解题分析

    通过 scanStr.toCharArray()将字符串变为数组,再进行计算各个字符个数

    7.3编码实现

    import java.util.Scanner;
    ​
    public class Test2 {
        public static void main(String[] args){
            Scanner in = new Scanner(System.in);
            System.out.println("请输入字符串:");
            String scanStr = in.nextLine();
            int countL=0 , countD=0, countS=0,countA=0;
            char[] scanChar = scanStr.toCharArray();
    ​
    ​
            for(int i=0;i<scanChar.length;i++){
                if(Character.isLetter(scanChar[i])){
                    countL++;
                }else if(Character.isDigit(scanChar[i])){
                    countD++;
                }else if(Character.isSpaceChar(scanChar[i])){
                    countS++;
                }else {
                    countA++;
                }
            }
            System.out.println();
            System.out.println("中英文字母个数:"+countL);//汉字也算做了字符
            System.out.println("数字个数:"+countD);
            System.out.println("空格个数:"+countS);
            System.out.println("其他字符个数:"+countA);
        }
    }

    第八题:累加数问题

    8.1题目描述

    求 s=a+aa+aaa+aaaa+aa...a 的值,其中 a 是一个数字。例如 2+22+222+2222+22222(此时共有 5 个数相加 ) ,几个数相加有键盘控制。

    8.2解题分析

    关键是计算出每一项的值。

    8.3编码实现

    import java.util.Scanner;
    ​
    public class Test8 {
        public static void main(String[] args){
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入1-9之间的数字:");
            int shu=sc.nextInt();
            int a=shu;
            int sum=0;
            System.out.println("请输入相加的个数:");
            int jiShu=sc.nextInt();
            if (shu>0&&shu<10){
                System.out.print(shu+"+");
                for (int i=1;i<jiShu;i++){
                    shu=a+shu*10;
                    sum+=shu;
                    if(i==jiShu-1){
                        System.out.print(shu);
                    }else {
                        System.out.print(shu+"+");
                    }
                }
                System.out.println("的值是"+sum+a);
            }
            else{
                System.out.println("请输入1-9之间的数");
            }
    ​
    ​
    ​
        }
    }
    第九题:完数问题

    9.1题目描述

    一个数如果恰好等于它的因子之和,这个数就称为 " 完数 " 。例如 6=1+2+3. 编程找出 1000 以内的所有完数。

    9.2解题分析

    找出因数。

    9.3编码实现

    package demo03;
    ​
    import java.util.Scanner;
    ​
    public class Test9 {
        public static void main(String[] args){
    ​
            for(int i=1;i<=1000;i++){
                int sum=0;
                for(int j=1;j<i/2+1;j++){
                    if(i%j==0){
                        sum+=j;
                    }
                }
                if (i==sum){
                    System.out.println(i);
                }
            }
    ​
        }
    }

    第十题:小球弹起问题

    10.1题目描述

    一球从 100 米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第 10 次落地时,共经过多少米?第 10 次反弹多高?

    10.2解题分析

    注意小数和弹起来回距离总和问题。

    10.3编码实现

    public class Test10 {
    ​
        public static void main(String[] args){
    ​
            double n =100,s=0;
    ​
    ​
            for(int j =1;j<=10;j++){
    ​
                s=s+n+n/2.0;
                n/=2.0;
                if(j==10){
                    System.out.println("第十次高度为:"+n);
                }
    ​
    ​
            }
            System.out.println("共经过"+(s-n)+"米");
    ​
        }
    ​
    }

    第十一题:组合问题

    11.1题目描述

    有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    11.2解题分析

    注意每个数不一样,三个嵌套循环即可

    11.3编码实现

    package demo03;
    ​
    public class Test11 {
    ​
        public static void main(String[] args){
    ​
            int count=0,n =0;
    ​
    ​
            for(int i=1;i<5;i++){
    ​
                for(int j=1;j<5;j++){
    ​
                    if(i==j)
    ​
                        continue;
                    for(int k=1;k<5;k++){
    ​
                        if(k!=i && k!=j){
    ​
                            n=100*i+10*j+k;
                            count++;
                            System.out.print(n+" " );
    ​
    ​
                        }
    ​
                    }
    ​
                }
    ​
            }
    ​
            System.out.println();
            System.out.println("符合条件的数共:"+count+"个");
    ​
        }
    ​
    }

    第十二题:企业利润问题

    12.1题目描述

    企业发放的奖金根据利润提成。利润 (I) 低于或等于 10 万元时,奖金可提 10%;利润高于 10 万元,低于 20 万元时,低于 10 万元的部分按 10%提成,高于 10 万元的部分,可可提成 7.5%;20 万到 40 万之间时,高于 20 万元的部分,可提成 5%;40 万到 60 万之间时高于 40 万元的部分,可提成 3%;60 万到 100 万之间时,高于 60 万元的部分,可提成 1.5%,高于 100 万元时,超过 100 万元的部分按 1%提成,从键盘输入当月利润 I ,求应发放奖金总数?

    12.2解题分析

    I<=10 --> bonus=I10% 10<I<=20 --> bonus=1010%+(I-10)7.5% 20<I<=40 --> bonus=1010%+107.5%+(I-20)5% 40<I<=60 --> bonus=1010%+107.5%+205%+(I-40)3% 60<I<=100 --> bonus=1010%+107.5%+205%+203%+(I-60)1.5% 100<I --> bonus=1010%+107.5%+205%+203%+401.5%+(I-100)*1%

    12.3代码实现

    import java.util.Scanner;
    ​
    public class Test12 {
    ​
        public static void main(String[] args){
    ​
            System.out.println("请输入当月利润I:");
            Scanner sc = new Scanner(System.in);
            double I = sc.nextInt();
            double bonus=0;
    ​
            if(I<=10){
                bonus=I*0.1;
            }else if(10<I && I <=20){
                bonus=10*0.1+(I-10)*0.075;
            }else if(20<I && I<=40){
                bonus=10*0.1+10*0.075+(I-20)*0.05;
            }else if(40<I && I <=60){
                bonus=10*0.1+10*0.075+20*0.05+(I-40)*0.03;
            }else if(60<I && I <=100){
                bonus=10*0.1+10*0.075+20*0.05+20*0.03+(I-60)*0.015;
            }else if(I >100){
                bonus=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(I-100)*0.01;
            }
            System.out.println("根据您的输入,当月应得的奖金应为:"+bonus+"万元。");
        }
    ​
    }

    第十三题:完全平方数问题

    13.1题目描述

    一个整数,它加上100 后是一个完全平方数,再加上168 又是一个完全平方数,请问该数是多少?

    13.2解题分析

    先将该数加上 100 后再开方,再将该数加上 268 后再开方,如果开方后的结果满足条件,就是结果。

    13.3编码实现

    public class Test13 {
    ​
        public static void main(String[] args){
    ​
            for (int i=0;;i++){
    ​
                int x=(int)Math.sqrt(i+100);
                int y=(int)Math.sqrt(i+268);
                if (i+100==x*x&&i+268==y*y){
                    System.out.println(i);
                    break;
                }
    ​
            }
    ​
        }
    ​
    }
    

    第十四题:日期问题

    14.1题目描述

    输入某年某月某日,判断这一天是这一年的第几天?

    14.2解题分析

    分离年月日,三种月份的日子

    14.3代码实现

    import java.util.Scanner;
    ​
    public class Test14 {
    ​
    ​
        public static void main(String[] args){
    ​
            int d=0;
            int day=0;
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入年份:");
            int year = sc.nextInt();
            if (year<0){
                System.out.println("输入错误,请重新输入!");
                System.exit(0);
            }
            
            System.out.println("请输入月份:");
            int month = sc.nextInt();
            if (month<0 || month>12){
                System.out.println("输入错误,请重新输入!");
                System.exit(0);
            }
    ​
            System.out.println("请输入日:");
            int days= sc.nextInt();
    ​
            if(day<=0 ||day>31){
                System.out.println("输入错误,请重新输入!");
                System.exit(0);
            }
    ​
    ​
            for (int i=1;i<=month;i++){
                switch(i){
    ​
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        day=31;
                        break;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        day = 30;
                        break;
                    case 2:
                    if((year%400==0)||(year%4==0&&year%100!=0)){
                        day = 29;
                    }else{
                        day=28;
                    }
                    break;
                }
                d+=day;
    ​
    ​
                }
            System.out.println(year+"年"+month+"月"+day+"日是当年的第"+(d+day) +"天。");
    ​
            }
    ​
        }

    第十五题:大小数输出问题

    15.1题目描述

    输入三个整数 x,y,z ,请把这三个数由小到大输出。

    15.2解题分析

    我们想办法把最小的数放到 x 上,先将 x 与 y 进行比较,如果 x>y 则将 x 与 y 的值进行交换,然后再用 x 与 z 进行比较,如果 x>z 则将 x 与 z 的值进行交换,这样能使 x 最小。

    15.3编码实现

    ​
    import java.util.Scanner;
    ​
    public class Test15 {
    ​
        public static void main(String[] args){
    ​
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入x的值:");
            int x = sc.nextInt();
            System.out.print("请输入y的值:");
            int y = sc.nextInt();
            System.out.print("请输入z的值:");
            int z = sc.nextInt();
    ​
            if (x>z){
                int temp=0;
                temp = x;
                x=z;
                z=temp;
    ​
            }
    ​
            if (x>y){
                int temp=0;
                temp = x;
                x = y;
                y= temp;
            }
    ​
            if (y>z){
                int temp = 0;
                temp = y;
                y = z;
                z = temp;
            }
            System.out.println("这三个数排序为:"+x+" "+y+" "+z);
    ​
        }
    ​
    }

    第十六题:输出 9*9 题

    16.1题目描述

    输出 9*9 口诀。

    16.2解题分析

    考虑分行与列,共 9 行 9 列, i 控制行, j 控制列。

    16.3编码实现

    ​
    public class Test16 {
    ​
        public static void main(String[] main){
    ​
            for (int i =1;i<=9;i++){
                for (int j=1; j<=i;j++){
    ​
                    System.out.print(j+"*"+i+"="+i*j+" ");
    ​
                }
    ​
                System.out.println(" ");
    ​
            }
    ​
        }
    ​
    }

    第十七题:猴子吃桃问题

    17.1题目描述

    猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半, 又多吃了一个。 以后每天早上都吃了前一天剩下的一半零一个。 到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

    17.2解题分析

    反着推

    17.3编码实现

    package demo03;
    ​
    public class Test17 {
    ​
        public static void main(String[] args) {
            int x = 1;
            for (int i = 1; i < 10; i++) {
                x = 2 * (x + 1);
            }
            System.out.println(x);
        }
    ​
    }

    第十八题:乒乓球问题

    18.1题目描述

    两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定比赛名单。有人向队员打听比赛的名单。 a 说他不和 x 比, c 说他不和 x,z 比,请编程序找出三队赛手的名单。

    18.2解题分析

    排除题目给出的情况,剩下的即为答案

    18.3编码实现

    public class Test18 {
    ​
        public static void main(String[] args){
    ​
    ​
            for(char a = 'x';a <= 'z'; a++){
                for(char b = 'x'; b <= 'z'; b++){
                    for(char c = 'x'; c <= 'z'; c++){
                        if(a != 'x' && c!='x'&&c!='z'&&a!=b&&a!=c&&b!=c){ // 后三个条件是去除重复情况
                            System.out.println("a  vs  "+a);
                            System.out.println("b  vs  "+b);
                            System.out.println("c  vs  "+c);
                        }
                    }
                }
            }
    ​
        }
    ​
    ​
    }

    第十九题:菱形问题

    19.1题目描述

    打印出如下图案(菱形)

    19.2解题分析

    先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重 for 循环,第一层控制行,第二层控制列。

    19.3.编码实现 

    public class Test19 {
            public static void main(String[] args) {
                for (int i = 1; i <= 4; i++) {
                    for (int x = 1; x <= 4 - i; x++) {
                        System.out.print(" ");
                    }
                    for (int j = 1; j <= 2 * i - 1; j++) {
                        System.out.print("*");
                    }
                    System.out.println();
                }
                for (int i = 3; i >= 0; i--) {
                    for (int x = 1; x <= 4 - i; x++) {
                        System.out.print(" ");
                    }
                    for (int j = 1; j <= 2 * i - 1; j++) {
                        System.out.print("*");
                    }
                    System.out.println();
                }
            }
        }

    第二十题:分数和

    20.1题目描述

    有一分数序列: 2/1 ,3/2 ,5/3 ,8/5 ,13/8 ,21/13... 求出这个数列的前 20 项之和。

    20.2解题分析

    找出分子与分母的变化规律。

    20.3编码实现

    ​public class Test20 {
    ​
       public static void main(String[] args){
    ​
    ​
           double s=0;
           double x=1;
           double y=2;
    ​
    ​
           for(double n =1;n<=20;n++){
    ​
    ​
               s+=y/x;
               double temp = 0;
               temp = y;
               y=x+y;
               x=temp;
    ​
          }
           System.out.println("该数列前20项和为:" +s );
    ​
    ​
      }
    ​
    }

    第二十一题:累乘和问题

    21.1题目描述

    求 1+2!+3!+...+20! 的和

    21.2解题分析

    分解每个累乘再相加

    21.3编码实现

    public class Test21 {
    ​
       public static void main(String[] args){
    ​
           int n = 1;
           long s = 0,m = 1;
           for(int i=1;i<=20;i++){
    ​
               m=i*m;
               s+=m;
    ​
          }
    ​
           System.out.println("1+2!+3!+..+20!和为:"+ s);
    ​
      }
    ​
    }

    第二十二题:递归问题

    22.1题目描述

    利用递归方法求 5! 。

    22.2解题分析

    程序调用自身的编程技巧称为递归。

    22.3编码实现

    import java.util.Scanner;
    ​
    public class Test22 {
    ​
        public static void main(String[] args){
    ​
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入num值:");
            int num = sc.nextInt();
    ​
            int n = factory(num);
            System.out.println("num!的值为:"+n);
    ​
        }
    ​
        public static int factory(int i){
    ​
            if (i==1){
                return i;
            }else {
    ​
                return (i*factory(i-1));
    ​
            }
    ​
        }
    ​
    }

    第二十三题:年龄问题

    23.1题目描述

    有 5 个人坐在一起,问第五个人多少岁?他说比第 4 个人大 2 岁。问第 4 个人岁数,他说比第 3 个人大 2 岁。问第三个人,又说比第 2人大两岁。问第 2 个人,说比第一个人大两岁。最后问第一个人,他说是 10 岁。请问第五个人多大?

    23.2解题分析

    利用逆向思维加递归算法

    23.3编码实现

    public class Test23 {
    ​
       public static void main(String[] args){
    ​
    ​
           int age = method(5,2);
           System.out.println("第五个人的年龄为:"+ age);
    ​
      }
    ​
       public static int method(int a,int b){
    ​
           if(a == 1){
    ​
               return 10;
    ​
          }else {
    ​
    ​
               return (method(a-1,b)+b);
    ​
    ​
          }
    ​
      }
    ​
    }

    第二十四题:打印数问题

    24.1题目描述

    给一个不多于 5 位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

    24.2解题分析

    先用字符函数把它变成字符,然后放入数组逆向输出

    24.3代码实现

    import java.util.Scanner;
    ​
    public class Test24 {
    ​
        public static void main(String[] args){
    ​
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个不多余5位的正整数:");
            int  num = sc.nextInt();
            if (num>=100000 || num<=0){
    ​
                System.out.println("您输入有误,请重新输入!");
    ​
                System.exit(0);
            }
    ​
            String str = String.valueOf(num);
            System.out.println("它的位数为:"+str.length());
            char[] numS = str.toCharArray();
            for (int i = str.length()-1;i>=0;i--){
                System.out.print(numS[i]+" ");
            }
    ​
        }
    ​
    }

    第二十五题:回文数问题

    25.1题目描述

    一个 5 位数,判断它是不是回文数。即 12321 是回文数,个位与万位相同,十位与千位相同。

    25.2解题分析

    先变成字符,再放入数组,看04和13相同判断是否为回文数

    25.3编码实现

    import java.util.Scanner;
    ​
    public class Test25 {
    ​
        public static void main(String[] args){
    ​
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入要判断的数:");
            int num = sc.nextInt();
            if(num<10000 || num >=100000){
                System.out.println("您输入有误,请重新输入!");
                System.exit(0);
            }
    ​
            String str = String.valueOf(num);
            char[] numS = str.toCharArray();
    ​
            if(numS[0]==numS[4] && numS[1]==numS[3]){
    ​
                System.out.println("该数是回文数。");
    ​
            }else{
    ​
                System.out.println("该数不是回文数。");
    ​
            }
    ​
        }
    ​
    }

    第二十六题:判断星期几题目

    26.1题目描述

    请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

    26.2解题分析

    字符全变为大写或者小写,然后swith依次判断

    26.3编码实现

    import java.util.Scanner;
    ​
    public class Test26 {
    ​
        public static void main(String[] args){
    ​
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入星期的首字母(不区分大小写):");
            String str1 = scanner.nextLine().toUpperCase();
    ​
            switch (str1) {
                case "M":
                    System.out.println("Monday");
                    break;
                case "T":
                    System.out.println("请输入星期的次字母(不区分大小写):");
                    String str2 = scanner.nextLine().toUpperCase();
                    if (str2.equals("U")) {
                        System.out.println("Tuesday");
                    } else if (str2.equals("H")) {
                        System.out.println("Thursday");
                    } else {
                        System.out.println("您输入的数据有误!");
                    }
                    break;
                case "W":
                    System.out.println("Wednesday");
                    break;
                case "F":
                    System.out.println("Friday");
                    break;
                case "S":
                    System.out.println("请输入星期的次字母(不区分大小写):");
                    String str3 = scanner.nextLine().toUpperCase();
                    if (str3.equals("U")) {
                        System.out.println("Sunday");
                    } else if (str3.equals("A")) {
                        System.out.println("Saturday");
                    } else {
                        System.out.println("您输入的数据有误!");
                    }
                    break;
                default:
                    System.out.println("您输入的数据有误!");
    ​
            }
    ​
        }
    }

    第二十七题:素数问题

    27.1题目描述

    求100以内的素数

    27.2解题分析

    设置判断条件,如果可以整除就改变条件值,最后依旧判断条件输出。

    27.3编码实现

    public class Test27 {
    ​
        public static void main(String[] args) {
    ​
    ​
            for (int n = 2; n <= 100; n++) {
                int m = 0;
    ​
                for (int i = 2; i < n; i++) {
    ​
                    if ((n % i) == 0) {
    ​
                        m = 1;
    ​
                    }
                }
                if (m == 0) {
    ​
                    System.out.print(n + " ");
    ​
                }
    ​
            }
    ​
        }
    }

    第二十八题:数排序问题

    28.1题目描述

    对 10 个数进行排序

    28.2解题分析

    冒泡法

    28.3编码实现

    import java.util.Scanner;
    ​
    public class Test28 {
    ​
        public static void main(String[] args){
    ​
    ​
            int[] a  = new int[10];
            Scanner sc = new Scanner(System.in);
            for(int i = 0;i<10;i++ ){
    ​
                System.out.print("请输入第"+i+"数:");
    ​
                a[i]=sc.nextInt();
    ​
    ​
            }
    ​
            for(int m=0;m<a.length-1;m++){
    ​
                for(int n=0;n<a.length-1-m;n++)
                    if (a[n] > a[n + 1]) {
                        int temp = a[n];
                        a[n] = a[n + 1];
                        a[n + 1] = temp;
                    }
    ​
            }
            System.out.println("从小到大排序后的结果是:");
            for(int k=0;k<a.length;k++)
                System.out.print(a[k]+" ");
    ​
    ​
        }
    ​
    }

    第二十九题:矩阵问题

    29.1题目描述

    求一个 3*3 矩阵对角线元素之和

    29.2解题分析

    构造二维数组,用循环把各个点上的数相加

    29.3编码实现

    package demo03;
    ​
    import java.util.Scanner;
    ​
    public class Test29 {
    ​
        public static void main(String[] args){
    ​
            int[][] arr = new int[3][3];
            int sum = 0;
            Scanner console = new Scanner(System.in);
            for(int i = 0; i < 3; i++)
            {
                for(int j = 0; j < 3; j++)
                {
                    arr[i][j] = console.nextInt();
                    if(i == j)
                        sum += arr[i][j];
                    if((i == 0 && j ==2) || (i == 2 && j == 0))
                        sum += arr[i][j];
                }
            }
            System.out.println("对角线元素和为:"+sum);
    ​
    ​
        }
    ​
    }

    第三十题:数组放数问题

    30.1题目描述

    有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

    30.2解题分析

    先定义数组,再扩大随便放入要插入的数,再全体排序

    30.3代码实现

    ​import java.util.Arrays;
    import java.util.Scanner;
    ​
    public class Test30 {
    ​
        public static void main(String[] args) {
            int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
            System.out.print("定义的数组为:");
            for (int i = 0; i < array.length; i++) {
                System.out.print(array[i] + " ");
            }
            System.out.println();
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入一个数:");
            int addNumber = sc.nextInt();
            array = Arrays.copyOf(array, array.length + 1);
            array[array.length - 1] = addNumber; 
            int i = 0;
            if (array[i] <= array[array.length - 2]) {
                Arrays.sort(array);
                System.out.print("插入一个数后的数组为:");
                for (i = 0; i < array.length; i++) {
                    System.out.print(array[i] + " ");
                }
            } else {
                Arrays.sort(array);
                System.out.print("插入一个数后的数组为:");
                for (i = array.length - 1; i >= 0; i--) {
                    System.out.print(array[i] + " ");
                }
            }
        }
    ​
    }

    第三十一题:数组逆序输出问题

    31.1题目描述

    将一个数组逆序输出。

    31.2解题分析

    建立一个数组,逆向遍历输出

    31.3代码实现

    package demo03;
    ​
    import java.util.Scanner;
    ​
    public class Test31 {
    ​
        public static void main(String[] args) {
    ​
    ​
            int[] a = new int[5];
            Scanner sc = new Scanner(System.in);
            for(int i = 0;i<5;i++ ){
    ​
                System.out.print("请输入第"+i+"数:");
    ​
                a[i]=sc.nextInt();
    ​
    ​
            }
            method(a);
    ​
    ​
        }
    ​
        public  static void method(int[] b){
    ​
            for (int i=b.length-1;i>=0;i--){
    ​
                System.out.print(b[i]+" ");
    ​
            }
    ​
        }
    ​
    }

    第三十二题:输出整数一些位数问题

    32.1题目描述

    取一个整数 a 从右端开始的 4~7 位。

    32.2解题分析

    输入数字转化成字符,再转化为数组,即可方便输出所需数

    32.3编码实现

    import java.util.Scanner;
    ​
    public class Test32 {
    ​
        public static void main(String[] args) {
    ​
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个大于等于七位的整数:");
            long num = sc.nextInt();
            String ss = String.valueOf(num);
            char[] ch = ss.toCharArray();
            int b = ch.length;
            if (b<7){System.out.println("输入错误!");}
            else {
                System.out.println("截取从右端开始的4~7位是:"+ch[b-7]+ch[b-6]+ch[b-5]+ch[b-4]);
            }
    ​
    ​
        }
    ​
    }

    第三十三题:杨辉三角形问题

    33.1题目描述

    打印出杨辉三角形(要求打印出 10 行如下图)

    33.2解题分析

    创建一个二维数组,只输出杨辉三角的数字

    33.3编码实现

    import java.util.Scanner;
    ​
    public class Test33 {
    ​
        public static void main(String[] args) {
    ​
    ​
            //定义了一个长度为10,高度为10的二维数组,数组中的值都为0;
            int[][] arr=new int[10][10];
            for(int i=0;i<arr.length; i++) {
                //由于只是给杨辉三角内的位置赋值,所以是j<=i
                for(int j=0;j<=i;j++) {
                    //根据规律,使用if else 赋值
                    if(j==0||j==i) {
                        arr[i][j]=1;
                    }else {
                        arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
                    }
                /*由于只是输出杨辉三角范围内的值,所以在内层循环就输出,这种方法不能全部赋值完之后再输出
                   "\t"的原因是10和小于10的数组的宽度不同,所以使用\t制表符能使数与数之间距离相等
                */
                    System.out.print(arr[i][j]+"\t");
                }
                System.out.println();
            }
    ​
        }
    ​
    }

    第三十四题:大小数输出问题

    34.1题目描述

    输入 3 个数 a,b,c ,按大小顺序输出。

    34.2解题分析

    分别比较一下即可

    34.3代码实现

    import java.util.Scanner;
    ​
    public class Test34 {
    ​
        public static void main(String[] args) {
    ​
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入第一个数:");
            int a = sc.nextInt();
            System.out.print("请输入第二个数:");
            int b = sc.nextInt();
            System.out.print("请输入第三个数:");
            int c = sc.nextInt();
    ​
    ​
            if(a<b){
                int t = a;
                a = b;
                b = t;
            }
            if(a<c){
                int t = a;
                a = c;
                c = t;
            }
            if(b<c){
                int t = b;
                b = c;
                c = t;
            }
    ​
            System.out.println("三数从大到小输出为:" + a+" " + b + " " + c);
        }
    ​
    }

    第三十五题:数组元素交换问题

    35.1题目描述

    输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

    35.2解题分析

    定义俩变量,遍历数组,最大的给一个,最小的给一个,改变数组值即可

    35.3代码实现

    import java.util.Scanner;
    ​
    public class Test35 {
    ​
        public static void main(String[] args) {
    ​
            Scanner a = new Scanner(System.in);
            System.out.print("请输入数组长度:");
            int q = a.nextInt();
            int max = 0;
            int min = 0;
            int[] b = new int[q];
    ​
            for(int c = 0;c<q;c++){
                System.out.print("请输入数组的第"+(c+1)+"个元素:");
                int d = a.nextInt();//
                b[c] = d;
            }
            for(int e = 0;e<b.length;e++){
                if(b[e]>b[min]){
                    min=e;
                }else if(b[max]>b[e]){
                    max=e;
                }
            }
    ​
            int f = b[0];
            b[0] = b[min];
            b[min] = f;
    ​
    ​
            int g= b[q-1];
            b[q-1] = b[max];
            b[max] = g;
            for(int h = 0;h<b.length;h++){
                System.out.print(b[h]+" ");
            }
    ​
        }
    ​
    

    第三十六题:数字移动问题

    36.1题目描述

    有 n 个整数,使其前面各数顺序向后移 m个位置,最后 m个数变成最前面的 m个数

    36.2解题分析

    放进一个数组,会移到最前的老数组的数放在一个新数组,然后向后移动,再把新数组得数放进老数组

    36.3代码实现

    import java.util.Scanner;
    ​
    public class Test36 {
    ​
        public static void main(String[] args) {
            int array[];
            System.out.print("请输入整数的个数:");
            Scanner sc=new Scanner(System.in);
            int  n=sc.nextInt();
            array = new int[n];
            for (int i = 0; i < n; i++) {
                System.out.print("输入第" + (i + 1) + "个数据:");
                array[i] = sc.nextInt();
            }
            System.out.print("你输入的数组为:");
            for(int i=0;i<n;i++) {
                System.out.print(array[i] + " ");
            }
            System.out.print("\n请输入向后移动的位数:");
            int m = sc.nextInt();
            int[] b = new int[m];
            for(int i=0; i<m; i++) {
                b[i] = array[n-m+i];
            }
            for(int i=n-1; i>=m; i--) {
                array[i] = array[i-m];
            }
            for(int i=0; i<m; i++) {
                array[i] = b[i];
            }
            System.out.print("位移后的数组是:");
            for(int i=0; i<n; i++) {
                System.out.print(array[i] + " ");
            }
        }
    }

    第三十七题:围圈剩人问题

    37.1题目描述

    有 n 个人围成一圈,顺序排号。从第一个人开始报数(从 1 到 3 报数),凡报到 3 的人退出圈子,问最后留下的是原来第几号的那位。

    37.2解题分析

    给每个人状态值,走的人改变状态值,状态值为初始值的时候变量加1,加到3的人状态值改变,剩下的状态值没变的即是答案

    37.3代码实现

    import java.util.Scanner;
    ​
    public class Test37 {
    ​
        public static void main(String[] args) {
    ​
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入数字个数:");
            int n = sc.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i <arr.length; i++) {
                arr[i] = 1;
            }
            method(arr);//方法执行后,此时这个圈子只剩下一个人了
            for (int i = 0; i < arr.length; i++) {
                if(arr[i]==1){
                    System.out.println("第"+(i+1)+"人剩下");
                }
            }
        }
    ​
    ​
        public static void method(int[] arr) {
            int count = 0;//循环三个计数
            int x=arr.length;//标识1的总数
            int i=0;    //数组角标
            while(x>1){
                if(arr[i]==1){
                    count++;
                }
    ​
                if(count==3){
                    arr[i]=0;//遇到数3的人了,退出圈子,标识立马变为0
                    x--;    //标记为1的人数少一个
                    count=0;//计数器归零,重新计数
                }
    ​
                if(i==arr.length-1){
                    i=-1;
                }
    ​
                i++;//让人动起来
            }
    ​
    ​
        }
    ​
    }

    第三十八题:字符串问题

    38.1题目描述

    写一个函数,求一个字符串的长度,在 main 函数中输入字符串,并输出其长度。

    38.2解题分析

    放入一个数组即可

    38.3代码实现

    import java.util.Scanner;
    ​
    public class Test38 {
    ​
        public static void main(String[] args) {
    ​
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入一个字符:");
            String str = sc.nextLine();
    ​
            char[] ch = str.toCharArray();
            System.out.println("该字符长度为:"+(ch.length));
    ​
        }
    ​
    }

    第三十九题:调用函数问题

    39.1题目描述

    编写一个函数,输入 n 为偶数时,调用函数求 1/2+1/4+...+1/n, 当输入 n 为奇数时,调用函数1/1+1/3+...+1/n( 利用指针函数 )

    39.2解题分析

    写俩函数调用一下即可,注意数值类型

    39.3代码实现

    import java.util.Scanner;
    ​
    public class Test39 {
    ​
        public static void main(String[] args) {
    ​
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入n的值:");
            int n = sc.nextInt();
    ​
            if(n%2==0){
                System.out.println("结果:"+method(n));
            }else {
                System.out.println("结果:"+method1(n));
            }
    ​
        }
    ​
    ​
        static double method(int m){
    ​
            double sum = 0;
            for(int i=2 ; i<=m;i+=2){
    ​
                sum+=1.0/(2*i);
    ​
            }
            return sum;
    ​
        }
    ​
        static double method1(int m){
            double sum = 0;
            for(int i=1 ; i<m+1;i+=2){
    ​
                sum+=1.0/(i);
    ​
            }
            return sum;
    ​
        }
    ​
    }

    第四十题:字符串排序问题

    40.1题目描述

    字符串排序

    40.2解题分析

    比较对应位置字母的ASCII码值的大小

    40.3编码实现

    public class Test40 {
    ​
        public static void main(String[] args) {
    ​
            String[] input=new String[] {"tmc","aPad","apache","niHao","niHaoA"};
            String[] output=arraySort(input);
            for (String out:output) {
                System.out.println(out);
            }
        }
    ​
        public static String[] arraySort(String[] input){
            for (int i=0;i<input.length-1;i++){
                for (int j=0;j<input.length-i-1;j++) {
                    if(isBiggerThan(input[j],input[j+1])){
                        String temp=input[j];
                        input[j]=input[j+1];
                        input[j+1]=temp;
                    }
                }
            }
            return input;
        }
    ​
    ​
        private static boolean isBiggerThan(String first, String second){
            if(first==null||second==null||"".equals(first) || "".equals(second)){
                System.out.println("字符串不能为空!");
                return false;
            }
            char[] arrayFirst=first.toCharArray();
            char[] arraySecond=second.toCharArray();
            int minSize = Math.min(arrayFirst.length, arraySecond.length);
            for (int i=0;i<minSize;i++) {
                if((int)arrayFirst[i]>(int)arraySecond[i]){
                    return true;
                }else if((int)arrayFirst[i] < (int)arraySecond[i]){
                    return false;
                }
            }
            if(arrayFirst.length>arraySecond.length){
                return true;
            }else {
                return false;
            }
    ​
        }
    ​
    }

    第四十一题:猴分桃问题

    41.1题目描述

    海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

    41.2解题分析

    倒着推

    41.3编码实现

    public class Test41 {
    ​
       public static void main(String[] args) {
    ​
           int n;
           n = fun(0);
           System.out.println(" 原来有 "+n+" 个桃子 ");
      }
       private static int fun(int i){
           if(i==5)
               return 1;
           else
               return fun(i+1)*5+1;
           
      }
       
    }

    第四十二题:解方程

    42.1题目描述

    809??=800??+9*??+1

    42.2解题分析

    编个解方程式子,给个取值范围

    42.3编码实现

    public class Test42 {
    ​
        public static void main(String[] args) {
    ​
            int n = 0;
            boolean flag = false;
            for (int i = 10; i < 100; i++) {
                if (809 * i == 800 * i + 9 * i + 1) {
                    flag = true;
                    n = i;
                    break;
                }
            }
    ​
            if (flag) {
                System.out.println(n);}
            else
            {System.out.println(" 无符合要求的数! ");
            }
    
    ​
        }
    }

    第四十三题:求奇数个数问题

    43.1题目描述

    求 0—7 所能组成的奇数个数。

    43.2解题分析

    暴力求解

    43.3编码实现

    class Odd07 {
    ​
        public static int oddNum(int num) {
            int sum = 0;
            for (int i = 1; i <= num + 1; i++) {
                if (i == 1) {
                    sum += (num + 1) / 2;
                } else if (i == 2) {
                    sum += (num - 1) * (num + 1) / 2;
                } else {
                    int multi = (num - 1) * (num + 1) / 2;
                    for (int j = num - 1; j > num - i + 1; j--) {
                        multi *= j;
                    }
                    sum += multi;
                }
            }
            return sum;
        }
    ​
        public static void main(String[] args) {
            System.out.println(oddNum(7));
        }
    }

    第四十四题:偶数表示为奇数和问题

    44.1题目描述

    一个偶数总能表示为两个素数之和。

    44.2解题分析

    除了2的素数都是奇数,俩奇数和为偶数

    44.3编码实现

    import java.util.Scanner;
    ​
    public class Test44 {
    ​
        public static void main(String[] args) {
                System.out.print(" 请输入一个偶数: ");
                Scanner scan = new Scanner(System.in);
                int n = scan.nextInt();
                scan.close();
                if(n%2!=0){
                    System.out.println(" 您输入的不是偶数! ");
                    return;
                }
                twoAdd(n);
            }
    // 偶数分解为素数之和
            private static void twoAdd(int n){
                for(int i=2;i<n/2+1;i++){
                    if(isPrime(i)&&isPrime(n-i)){
                        System.out.println(n+"="+(i)+"+"+(n-i));
                        break;
                    }
                }
            }
    // 判断素数
            private static boolean isPrime(int m){
                boolean flag = true;
                for(int i=2;i<Math.sqrt(m)+1;i++){
                    if(m%i==0){
                        flag = false;
                        break;
                    }
                }
                return flag;
    ​
        }
    ​
    }

    第四十五题:素数整除问题

    45.1题目描述

    判断一个素数能被几个 9 整除

    45.2解题分析

    输入素数除9

    45.3代码实现

    import java.util.Scanner;
    ​
    public class Test45 {
    ​
        public static void main(String[] args) {
            System.out.print("请输入一个数:");
            Scanner scan = new Scanner(System.in);
            long l = scan.nextLong();
            long n = l;
            scan.close();
            int count = 0;
            while (n > 8) {
                n /= 9;
                count++;
            }
            System.out.println(l + "能被" + count + "个9整除。");
        }
    ​
    ​
    }

    第四十六题:字符串连接问题

    46.1题目描述

    俩个字符串连接程序

    46.2解题分析

    直接➕

    46.3编码实现

    public class Test46 {
    ​
        public static void main(String[] args){
            String str1 = "guoYang";
            String str2 = " 老司机 ";
            String str = str1+str2;
            System.out.println(str);
        }
        
    }

    第四十七题:读取并打印问题

    47.1题目描述

    读取 7 个数( 1—50)的整数值,每读取一个值,程序打印出该值个数的*。

    47.2解题分析

    输入数组,for循环输出星号

    47.3代码实现

    import java.util.Scanner;
    ​
    public class Test47 {
    ​
        public static void main(String[] args){
            System.out.print(" 请输入 7 个整数 (1-50) :");
            Scanner scan = new Scanner(System.in);
            int n1 = scan.nextInt();
            int n2 = scan.nextInt();
            int n3 = scan.nextInt();
            int n4 = scan.nextInt();
            int n5 = scan.nextInt();
            int n6 = scan.nextInt();
            int n7 = scan.nextInt();
            scan.close();
            printStar(n1);
            printStar(n2);
            printStar(n3);
            printStar(n4);
            printStar(n5);
            printStar(n6);
            printStar(n7);
        }
        static void printStar(int m){
            System.out.println(m);
            for(int i=0;i<m;i++)
                System.out.print("*");
            System.out.println();
        }
    ​
    }

    第四十八题:电话加密问题

    48.1题目描述

    某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每

    位数字都加上 5, 然后用和除以 10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。

    48.2解题分析

    用数组

    48.3编码实现

    public class Test48 {
    ​
        public static void main(String[] args){
            int n = 1234;
            int[] a = new int[4];
            for(int i=3;i>=0;i--){
                a[i] = n%10;
                n /= 10;
            }
            for(int i=0;i<4;i++)
                System.out.print(a[i]);
            System.out.println();
            for(int i=0;i<a.length;i++){
                a[i] += 5;
                a[i] %= 10;
            }
            int temp1 = a[0];
            a[0] = a[3];
            a[3] = temp1;
            int temp2 = a[1];
            a[1] = a[2];
            a[2] = temp2;
            for(int i=0;i<a.length;i++)
                System.out.print(a[i]);
        }
    ​
    ​
    ​

    第四十九题:字符串子串问题

    49.1题目描述

    计算字符串中子串出现的次数

    49.2解题分析

    字符串放进数组,分别比较asiii值

    49.3代码实现

    public class Test49 {
    ​
        public static void main(String[] args){
            String str = "I come from County WuHu Province AnHui.";
            char[] ch = str.toCharArray();
            int count = 0;
            for(int i=0;i<ch.length;i++){
                if(ch[i]==' ')
                    count++;
            }
            count++;
            System.out.println(" 共有 "+count+" 个字串 ");
        }
    ​
    }
    展开全文
  • 2021年java基础笔试题答案已整理.pdf2021年java基础笔试题答案已整理.pdf2021年java基础笔试题答案已整理.pdf2021年java基础笔试题答案已整理.pdf2021年java基础笔试题答案已整理.pdf2021年java基础笔试题答案已整理...
  • 2021年java基础笔试题答案已整理.docx2021年java基础笔试题答案已整理.docx2021年java基础笔试题答案已整理.docx2021年java基础笔试题答案已整理.docx2021年java基础笔试题答案已整理.docx2021年java基础笔试题答案...
  • java基础笔试题汇总

    2019-04-11 01:28:12
    NULL 博文链接:https://zhangzemin007.iteye.com/blog/1684635
  • java基础笔试题.pdf

    2022-07-14 03:11:48
    java基础笔试题.pdf
  • java基础笔试题(答案已整理).doc
  • java基础笔试题(答案已整理).docx
  • java基础笔试题(标准答案已整理).docx
  • java笔试题大集合及答案
  • java基础总结大全.txt Java开发与技术挑战——关于技术的技术思考.docx Java框架研发思考.docx Java程序员们最常犯的10个错误.docx java程序员的就业指导(重点).docx Java程序员面试宝典 .pdf java笔试题大集合及...
  • Java基础笔试题

    千次阅读 2019-02-26 20:32:04
    1.JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类。 JSP 工作原理: JSP页面在执行的时候都会被服务器端的JSP引擎转换为Servelet(.java),然后又由...

    1、指出Servlet及jsp的作用及区别,并且说明Servlet的生命周期?

    1.JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类。

    JSP 工作原理:
    JSP页面在执行的时候都会被服务器端的JSP引擎转换为Servelet(.java),然后又由JSP引擎调用Java编译器,将Servelet(.java)编译为Class文件(.class),并由Java虚拟机(JVM)解释执行。下面验证这一点:
    有一个JSP页面Test.jsp,在浏览器地址栏中输入http://localhost:8080/Test.jsp,将会出现执行结果。同时在%CATALINA_HOME%/work/Catalina/localhost下多出两个文件:_Test_jsp.java和_Test_jsp.class,他们分别就是Servelet和Class文件。

    2.Servlet的应用逻辑是在Java文件中,从Java代码中动态输出HTML,并且完全从表示层中的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。JSP侧重于视图,Servlet主要用于控制逻辑。

    2、HTTP请求的GET与POST方式的区别?

    1)  GET 请求,请求的数据会附加在 URL 之后,以?分割 URL 和传输数据,多个参数用&

    连接。URL 的编码格式采用的是 ASCII 编码,而不是 uniclde,即是说所有的非
    ASCII 字符都要编码之后再传输。POST 请求:POST 请求会把请求的数据放置在
    HTTP 请求包的包体中。因此,GET 请求的数据会暴露在地址栏中,而 POST 请求则
    不会

    2)  传输数据的大小:在 HTTP 规范中,没有对 URL 的长度和传输的数据大小进行限

    制。但是在实际开发过程中,对于 GET,特定的浏览器和服务器对 URL 的长度有限
    制。因此,在使用 GET 请求时,传输数据会受到 URL 长度的限制。对于 POST,由
    于不是 URL 传值,理论上是不会受限制的,但是实际上各个服务器会规定对 POST
    提交数据大小进行限制,Apache、IIS 都有各自的配置。

    3)  安全性 POST 的安全性比 GET 的高。这里的安全是指真正的安全,而不同于上面

    GET 提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,
    在进行登录操作,通过 GET 请求,用户名和密码都会暴露再 URL 上,因为登录页面
    有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码
    就很容易被他人拿到了。除此之外,GET 请求提交的数据还可能会造成 Cross-site
    request frogery 攻击


    3、Request、Session及Application的生命周期分别是什么?

    application

    全局作用范围,整个应用程序共享,就是在部署文件中的同一个webApp共享,生命周期为:应用程序启动到停止。

    session

    会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。生命周期:会话超时,或者服务器端强制使会话失效。

    打开一个浏览器请求一个网站的页面后,Session开始,当session超过时间限制(一般是20分种)后,session注销而失效或是人为使用session.invalidate();使用session失效。

    用浏览器打开一个web程序,一个浏览器窗口就会有一个session,且是唯一的,过了session的生存周期就没了,或者是你关了窗口也就没了。

    不同浏览器的session在计算机中并不是同一个。

    request

    请求作用域,就是客户端的一次请求。比如访问某个页面,就是一次请求。页面访问结束,该页面的request就结束了


    4、说说HTML中的innerHTML和innerText有什么区别?

    innerHTML指的是从对象的起始位置到终止位置的全部内容,包括Html标签。
    innerText   指的是从起始位置到终止位置的内容,但它去除Html标签。


    5、Java中this与super关键字分别是什么意思?

    this代表的是当前对象,可以是当前对象的方法、变量。
    super代表的是父类,说白了就是在子类中通过super关键字来调用父类的东西。


    6、以下两种字符串定义方式有什么区别?
        String Str1 = new String("hello");
        String Str2 = "hello";
        str1 == str2 是true还是false?


    str1.equals(str2); 的结果为 true
    str1 == str2 的结果也为false
    请注意eqauls是比较两个对象内容是否相等, "==" 比较符是比较两者是否是同一个内存地址


    7、Java变量分为静态变量、成员变量及局部变量,说明他们的生存周期及作用域?

    存储区域:
    全局变量(全局静态变量)是放在方法区中。
    成员变量如果没有实例化那么变量是放在栈中;实例化了对象放在堆中,栈中放的是指向堆中对象的引用地址。
    局部变量放在栈中,new的对象放在堆中,8中基本数据类型变量放在栈中,变量所对应的值是放在栈帧中。

    生命周期:
    全局变量:当类加载的时候,就开始被创建,在类中只有一份; 会跟着类的消失而消失,生存时间叫长。
    成员变量:在对象被创建时而存在,当对象被GC回收的同时,他也会消失,生存时间适中。
    局部变量:当方法被调用时而存在,当方法调用结束而消失,生存时间短。

    作用域:
    全局变量:作用整个类中,直接被类调用。
    成员变量:作用在整个类中(除静态方法不能使用,静态方法没有隐式的this),被对象调用。
    局部变量:作用在一个局部区域,比如说在一个方法中,方法调用。


    8、Java中基本数据类型及引用数据类型有什么区别?

    基本数据类型,包括数值型,字符型和布尔型。
    数值型:1)整型:byte 1个字节;short 2个字节;int 4个字节;long 8个字节。
        2)浮点型:float 4个字节;
        double 8个字节;可以采用十进制和十六进制两种表示方式,其中十六进制表示方法只能采用科学计数法,例如:0x1.2p3,表示的是的是1乘以16加上2乘以16的-1次方的和乘以2的三次方;浮点型的默认类型为DOUBLE型,如果声明float型浮点数,要在数值后面加上f或F,例如:float
        f1 = 3.14F;否则会报精度错误。
    字符型:char 采用unicod的16位编码方式进行编码。
    布尔型:true,false;
    引用数据类型:类、接口类型、数组类型、枚举类型、注解类型;

    基本数据类型和引用数据类型的区别主要在存储方式上:

    基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;
    引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

     

    9、Java在方法调用时,形参和实参什么时候是值传递,什么时候是引用传递?请列举几个实例?

    形参:用来接收调用该方法时传递的参数。只有在被调用的时候才分配内存空间,一旦调用结束,就释放内存空间。因此仅仅在方法内有效
    public void sum(int a, int b) {...}
    这里边的a,b就是形参
    public void sum(1, 2) {...}
    其中1和2就是实际的参数值,就叫实参

    参数传递:
    形参:方法声明时,方法小括号内的参数
    实参: 调用方法时,实际传入的参数值

    java中传递值得机制:
    形参是基本数据类型的: 将实参的值传递给实参的基本数据类型的变量
    形参是引用数据类型的: 将实参的引用类型的值(即在堆空间中生成的首地址的值)传递给形参的引用类型的变量


    10、如果父类没有无参数的构造方法,那么其子类能否有无参数的构造方法?为什么?

    你在Xx类里定义了一个带参数的构造方法,那么这个Xx类就没有无参数的构造方法了。

    子类在继承父类时,如果没有相同的带参构造方法,那么他就需要在其构造方法中明确的通过super()调用父类的带参构造方法,否则构造不出父类,从而也构造不出他自己了。

    你如果在父类中写个不带参数的构造方法,就可以不用实现父类的带参构造方法了。


    11、子类中能否包含一个方法签名中只有返回类型与父类不一样的方法?为什么?
    12、说明public、protected、private及default的区别?

    public:具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类  对外的一种接口的形式。
    protected:主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西
    default:有时候也称为friendly,它是针对本包访问而设计的,任何处于本包下的类、接口、异常等,都可以相互访问,即使是父类没有用protected修饰的成员也可以。
    private:访问权限仅限于类的内部,是一种封装的体现,例如,大多数成员变量都是修饰符为private的,它们不希望被其他任何外部的类访问。


    13、char类型占几个字节,能否存在中文字符?

    Java基本类型占用的字节数:
    1字节: byte , boolean
    2字节: short , char
    4字节: int , float
    8字节: long , double
    注:1字节(byte)=8位(bits)

    1.编码与中文:
    Unicode/GBK: 中文2字节
    UTF-8: 中文通常3字节,在拓展B区之后的是4字节
    综上,中文字符在编码中占用的字节数一般是2-4个字节。


    14、Java什么时候会抛出NullPointerException?

    空指针异常,null


    15、列举几个常用的字节流及字符流?

    Java的流体系十分庞大,我们来看看体系图:

     这么庞大的体系里面,常用的就那么几个,我们把它们抽取出来,如下图

    详细请查看链接:JavaIO流原理之常用字节流和字符流详解以及Buffered高效的原理


    16、java.util.Collection接口有哪些常用的实现类?

    详细请查看链接:java.util.Collection包下各个类的特点汇总


    17、使用final修饰符修饰的变量,是引用不能变还是引用的对象不能变?

    总得来说对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。

    详细请查看链接:final修饰的变量是引用不能改变还是引用的对象不能改变
    18、下面的代码有什么不妥之处?
        if(username.equals("Jim")){
            ...
        }

    如果username为空的话,if(username.equals("zxx")){}会报出空指针异常。改为:
    if("zxx".equals(username)){}比较妥当


    19、运行异常与可检测异常有何区别?

    详细请查看链接:java异常处理 Exception、error、运行时异常和一般异常有何异同


    20、SQL语句中Where子句后面能否使用聚合函数?

    详细请查看链接:SQL中where子句中不能出现聚合函数的原因


    21、SQL语句中union和union all有什么不同?

    UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复 union 是取唯一值,记录没有重复
    1、UNION 的语法如下:
    [SQL 语句 1]
    UNION
    [SQL 语句 2]

    2、UNION ALL 的语法如下:
    [SQL 语句 1]
    UNION ALL
    [SQL 语句 2]

    效率:
    UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。

    1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union All不会去除重复记录。
    2、对排序的处理:Union将会按照字段的顺序进行排序;UNION ALL只是简单的将两个结果合并后就返回。

    从效率上说,UNION ALL 要比UNION快很多,所以,如果可以确认合并的两个结果集中不包含重复数据且不需要排序时的话,那么就使用UNION ALL。


    22、说说JDBC开发中Statement和PreparedStatement的区别?

    类似mybatis # 与 $ 的区别,防注入攻击

    详细请查看链接:浅谈 JDBC 中 CreateStatement 和 PrepareStatement 的区别与优劣


    23、java.util.Date和java.sql.Date有什么区别

    详细请查看链接:java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp区别和总结
    24、JS中undfined和null有什么区别?

    undfined 未定义 null 空值

    详细请查看链接:Javascript 中 null、NaN和undefined的区别
    25、下面代码有没有错误,为什么?
         var a = [];
         a[0] = 1;
         a[10000] = "this is element 10000";

    26、MySQL、Oracle和SQL Server的分页查询语句

    假设当前是第PageNo页,每页有PageSize条记录,现在分别用Mysql、Oracle和SQL Server分页查询student表。

    Mysql的分页查询:
    SELECT
        *
    FROM
        student
    LIMIT (PageNo - 1) * PageSize,PageSize;
    理解:(Limit n,m)  =>从第n行开始取m条记录,n从0开始算。

    Oracel的分页查询:
    SELECT
        *
    FROM
        (
            SELECT
                ROWNUM rn ,*
            FROM
                student
            WHERE
                Rownum <= pageNo * pageSize
        )
    WHERE
        rn > (pageNo - 1) * pageSize
    理解:假设pageNo = 1,pageSize = 10,先从student表取出行号小于等于10的记录,然后再从这些记录取出rn大于0的记录,从而达到分页目的。ROWNUM从1开始。

    SQL Server分页查询:
    SELECT
        TOP PageSize *
    FROM
        (
            SELECT
                ROW_NUMBER () OVER (ORDER BY id ASC) RowNumber ,*
            FROM
                student
        ) A
    WHERE
        A.RowNumber > (PageNo - 1) * PageSize
    理解:假设pageNo = 1,pageSize = 10,先按照student表的id升序排序,rownumber作为行号,然后再取出从第1行开始的10条记录。

    展开全文
  • 文档中含有java基础语法的考试及答案,一共八套,题库丰富,囊括范围广,知识点全面.值得大家分享
  • 基础试题 一选择1*3030题目写在答题纸上面 1Java?提供哪几种运算符 多选?abcd ) A算术运算符?B位运算符 C关系运算符?D逻辑运算符?E条件运算符 2java.lang?包的方法比较二个对象是否相等返回?true. b A:toString) B...
  • NULL 博文链接:https://jphfly-163-com.iteye.com/blog/745499
  • 招银网络java科技笔试题 觉得不错,记得帮我点击一个star,据说点star的人最后都拿offer了 前言 我在 19 年的校招中获得到银行 offer 如下: 中国交通银行总行软件中心 中国银行软件中心 中国农业银行数据中心 中国...
  • 高级java笔试题 java ​ 欢迎大家进入马士兵大学,希望大家在这里能够学到自己想要学习的技术,获得提升,找到理想的工作! ​ 本课程最贴合企业级需求的java基础课程,向上有完整的知识点覆盖,除了语言自身,...
  • JAVA笔试题--Java选择题汇总.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,071
精华内容 12,828
关键字:

java基础笔试题