文档库 最新最全的文档下载
当前位置:文档库 › java经典基础练习题及参考答案

java经典基础练习题及参考答案

java经典基础练习题及参考答案
java经典基础练习题及参考答案

1. 写一个函数,计算一个整数数组的平均值

import java.util.Random;

public class javaSevenDayLianXi {

public static void main(String[] args) {

int arr[] = new int[10];

Random score = new Random();

float sum = 0.0f;

System.out.print("这组数为:");

for (int i = 0; i < arr.length; i++) {

arr[i] = score.nextInt(101);

sum += arr[i];

System.out.print(arr[i] + " ");

}

System.out.println();

System.out.println("数组arr的平均值为:"+ sum / arr.length);

}

}

2. 自定义一个整数数组a,读入一个整数n,如果n 在数组中存在,则输出n 的下标;如果不存在,则输出-1。

Scanner sca = new Scanner(System.in);

int []a = {0,1,2,3,4,5,6,7,8,9};

System.out.print("请输入一个数:");

int shuJu = sca.nextInt();

boolean bool = true;

for(int i=0;i

if(a[i]==shuJu){

System.out.println(shuJu+"在数组a中的下标为:"+i);

bool = false;

break;

}

}

if(bool)

System.out.println(-1);

3. 给定一个数组,输出数组中的最大值和最小值

int []a = {12,34,563,2,45,778,554,4421,4456,6786};

Arrays.sort(a);

int min=a[0];

int max=a[a.length-1];

System.out.println("数组中最小的数为:"+min+",最大的数为:"+max);

4. *给定一个数组,把这个数组中所有元素顺序进行颠倒。

import java.util.Random;

public class javaSevenDayLianXi {

public static void main(String[] args) {

int arr[] = new int[10];

int shu=0;

Random score = new Random();

System.out.print("颠倒前的arr组数值为:");

for (int i = 0; i < arr.length; i++) {

arr[i] = score.nextInt(101);

System.out.print(arr[i] + " ");

}

for(int i=0;i<=(arr.length-1)/2;i++){

shu=arr[i];

arr[i]=arr[arr.length-1-i];

arr[arr.length-1-i]=shu;

}

System.out.println();

System.out.print("颠倒后的arr数组值为:");

for(int i :arr)

System.out.print(i+" ");

}

}

5. *数组的扩容。

给定一个数组,要求写一个expand 函数,把原有数组的长度扩容一倍,并保留原有数组原有的内容。

例如,给定一个数组int[] a = {1,2,3},则扩容之后,a 数组为:{1,2,3,0,0,0} public class javaNineDay {

public static void main(String[] args) {

int[] arr = { 1, 2, 3, 4, 5, 6, 7, 8 };

arr = setArrays(arr);

for (int term : arr)

System.out.print(term + " ");

}

public static int[] setArrays(int[] arr) {

int[] arrays = new int[arr.length * 2];

System.arraycopy(arr, 0, arrays, 0, arr.length);

return arrays;

}

}

6. *数组的插入和删除

写两个函数,一个函数为delete 函数,声明如下:

public static void delete(int pos)

该函数表示删除数组pos 位置上的元素。

第二个函数为insert 函数,声明如下:

public static void insert(int pos, int value)

该函数表示在数组pos 位置上插入value 值。

为了能在多个函数中使用同一个数组,需要把这个数组写在函数的外面,类的里面,并使用static 修饰。

为了方便,还应该定义一个index 变量,用来保存数组的有效元素的个数。

例如下面的代码:

public class TestInsertDelete{

static int[] a = {1,3,2,5,7}; //多个函数可以直接操作该数组

static int index = 5;

public static void main(String args[]){

delete(2); //1 3 5 7

insert(1, 4); //1 4 3 5 7

insert(0, 6); //6 1 4 3 5 7

}

public static void delete(int pos){

}

public static void insert(int pos, int value){

}

}

实现方式:

1. delete 方法:把数组pos 位后的所有元素向前移动1 位

2. insert 方法:把数组pos 位以及之后的元素向后移动1 位,然后设置value。

要注意的是,insert 时有可能需要数组扩容。

有效元素的个数的含义:对于a 数组,调用一次delete 之后,a 数组的长度不变,

长度依然为5,然而有效元素的个数为4 个。

Tips:

insert 方法中,如何判断是否需要扩容:比较有效元素的个数和数组的长度,如果这

两者一致,则需要扩容。

public class javaNineDay {

static int[] arr = { 1, 2, 3, 4, 2, 5, 6, 7, 2, 8, 9 };

static int index = arr.length;

public static void main(String[] args) {

System.out.print("初始数组为:");

for(int term:arr)

System.out.print(term+" ");

System.out.print("\n删除2后的数组为:"+" ");

delete(2);

System.out.print("\n插入100后的数组为:"+" ");

insert(5, 100);

}

public static void delete(int pos) {

int num = index;

for (int i = 0; i < index; i++) {

if (arr[i] == pos && i < index - 1) {

System.arraycopy(arr, i + 1, arr, i, index - 1 - i);

arr[--num] = 0;

} else if (arr[i] == pos && i == index - 1) {

arr[--num] = 0;

}

}

index = num;

for (int term : arr) {

if (term > 0) {

System.out.print(term + " ");

}

}

}

public static void insert(int pos, int value) {

int arrays[];

if (index == arr.length) {

arrays = new int[index + 1];

System.arraycopy(arr, 0, arrays, 0, index);

} else

arrays = arr;

System.arraycopy(arrays, pos, arrays, pos + 1, index- pos);

arrays[pos] = value;

index++;

for (int term : arrays) {

if (term > 0) {

System.out.print(term + " ");

}

}

}

}

7. *完成数组的冒泡排序算法:给定一个数组:int[] a = {1,3,2,7,5},利用冒泡排序对其按照

从小到大的顺序排序,然后输出结果。

public class javaSevenDayLianXi {

public static void main(String[] args) {

int[] arr = { 1, 3, 2, 7, 5 };

int term = 0;

for (int i = 0; i < arr.length - 1; i++) {

for (int j = i + 1; j < arr.length; j++) {

if (arr[i] > arr[j]) {

term = arr[j];

arr[j] = arr[i];

arr[i] = term;

}

}

}

System.out.print("按冒泡排序后的结果为:");

for (int i : arr)

System.out.print(i + " ");

}

}

8. *使用第二种算法对数组进行排序

import java.util.Arrays;

public class javaSevenDayLianXi {

public static void main(String[] args) {

int[] arr = { 1, 3, 2, 7, 5 };

Arrays.sort(arr);

System.out.print("用第二种方法给数组排序后的结果为:");

for (int i : arr)

System.out.print(i + " ");

}

}

杨辉三角的特点:

1. 第i 行有i 个元素

2. 每一行的第一个元素和最后一个元素都为1

3. 除了1 之外,每个元素的值,都等于上一行同位置的元素以及前一个元素的和。

例如:

1 4 6 4 1 的下一行

1 a1 a

2 a

3 a

4 1

a1 = 4 + 1 = 5

a2 = 6 + 4 = 10

a3 = 4 + 6 = 10

a4 = 1 + 4 = 5

依次类推。

要求:读入一个整数n,输出杨辉三角的前n 行

import java.util.Scanner;

public class javaSevenDayLianXi {

public static void main(String[] args) {

Scanner sca = new Scanner(System.in);

System.out.print("请输入杨辉三角的行数:");

int row = sca.nextInt();

int arr[][] = getArrays(row);

for (int[] a : arr) {

for (int term : a)

System.out.print((term> 0 ? term : "") + " ");

System.out.println();

}

}

public static int[][] getArrays(int row) {

int arr[][] = new int[row][row];

for (int i = 0; i < arr.length; i++) {

arr[i][0] = 1;

arr[i][i] = 1;

}

for (int i = 1; i < arr.length; i++) {

for (int j = 1; j <= i; j++) {

arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];

}

}

return arr;

}

}

9. *数学黑洞6174

已知:一个任意的四位正整数。将数字重新组合成一个最大的数和最小的数相减,重复

这个过程,最多七步,

必得6174。即:7641-1467=6174。将永远出不来。

求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的步数。

import java.util.Arrays;

import java.util.Scanner;

public class javaSixDay {

public static void main(String[] args) {

Scanner sca = new Scanner(System.in);

int shu, max = 0, min = 0, result = 0, biaoShi = 0;

int[] arr = new int[4];

while (true) {

boolean bool = true;

int count = 0;

if (biaoShi == 0)

System.out.print("请输入一个四位数(全相同的除外):");

shu = sca.nextInt();

if (shu >= 1000 && shu <= 9999) {

result = shu;

do {

arr[0] = result / 1000;

arr[1] = result / 100 % 10;

arr[2] = result / 10 % 10;

arr[3] = result % 10;

if (arr[0] == arr[1] && arr[1] == arr[2]

&& arr[2] == arr[3]) {

System.out.print("请重新输入一个四位数:");

bool = false;

biaoShi=1;

break;

} else

biaoShi = 0;

max = setResult(arr, 0);

min = setResult(arr, 1);

result = max - min;

count++;

} while (result != 6174);

if (bool)

System.out.println(shu + "运行了" + count + "次后,结果变为6174。");

}else

biaoShi=0;

}

}

// 计算最大值,最小值

public static int setResult(int[] shu, int biaoshi) { int result = 0, j;

Arrays.sort(shu);

if (biaoshi == 0) {

j = 0;

for (int i : shu) {

result += (int) (i * Math.pow(10, j));// 获取最大值

j++;

}

}

if (biaoshi == 1) {

j = 3;

for (int i : shu) {

result += (int) (i * Math.pow(10, j));// 获取最小值

j--;

}

}

return result;

}

}

10. *筛选法求质数:输入一个整数n,求小于这个整数的所有质数。

算法:定义一个长度为n 的boolean 数组,true 表示是质数,false 表示不是质数。初始均为true。之后从2 开始循环:

1. 找到第一个值为true 的下标i

2. 把所有下标为i 的倍数的值置为false。

直到扫描完数组中的所有数值。

最后遍历数组,如果下标i 的值为true,则说明i 为质数。

import java.util.Scanner;

public class javaSevenDayLianXi {

public static void main(String[] args) {

Scanner sca = new Scanner(System.in);

System.out.print("请输入一个大于2的整数:");

int n = sca.nextInt();

int count = 0;

boolean[] bool = new boolean[n];

if (true) {

bool[2] = true;

for (int i = 3; i < n; i++) {

if (i % 2 == 0)

bool[i] = false;

else

bool[i] = true;

}

for (int i = 3; i <= n / 2; i++) {

for (int j = i; j < n; j += 2) {

if (j % i == 0 && j != i)

bool[j] = false;

}

}

System.out.print("小于" + n + "的所有质数为:");

for (boolean lean : bool) {

if (lean)

System.out.print(count + " ");

count++;

}

} else

System.out.println("输入的数不大于2!");

}

}

11. **定义一个奇数阶二维数组,把每个元素顺序填入不同的自然数,要求行列和对角线元素相加的结果相等

算法:

1. 第一个数字填在第一行正中间

2. 如果可以填在斜上方,则数字尽量填在斜上方

3. 如果斜上方出了上边界,则数字填入下一列最下端

4. 如果斜上方出了右边界,则数字填入上一行最左端

5. 如果既出了右边界,又出了上边界,则数字填入上一个数字的下方的

6. 如果斜上方已经被填过,则数字填入上一个数字的下方。

要求:读入一个奇数n,按照上述规则,输出n*n 的方阵。

import java.util.Scanner;

public class javaEightDayLianXi {

public static void main(String[] args) {

Scanner sca = new Scanner(System.in);

int num, count = 0;

int rowSub = 0, listSub = 0;

while (true) {

System.out.print("请输入一个奇数:");

num = sca.nextInt();

if (num % 2 != 0)

break;

}

int arr[][] = new int[num][num];

listSub = num / 2;

while (count < num * num) {

count++;

arr[rowSub][listSub] = count;

if (rowSub == 0 && listSub < num - 1) {

rowSub = num - 1;

listSub++;

} else if (rowSub > 0 && listSub < num - 1

&& arr[rowSub - 1][listSub + 1] == 0) { rowSub--;

listSub++;

} else if (rowSub > 0 && listSub == num - 1) { rowSub--;

listSub = 0;

} else if (rowSub > 0 && listSub < num - 1

&& arr[rowSub - 1][listSub + 1] != 0) { rowSub++;

} else if (rowSub == 0 && listSub == num - 1) { rowSub++;

}

}

for (int[] score : arr) {

for (int term : score)

System.out.print(term + "\t");

System.out.println("");

System.out.println("");

}

}

}

12. **十五个猴子围成一圈选大王,依次1-7 循环报数,报到7 的猴子被淘汰,直到最后一只猴子成为大王。问,哪只猴子最后能成为大王?

总数要输入,从哪一只开始要输入,点到几要输入

public class javaSevenDay {

public static void main(String[] args) {

int all = 15, start = 1, end = 7, num;

System.out.print("出局的猴子有:");

int[] monkey = new int[all + 1];

num = all + 1;

monkey[0] = 0;

for (int i = 1; i < monkey.length; i++)

monkey[i] = 1;

for (int i = 1; i <= end; i++) {

if (all == 1)

break;

else if (i == end) {

all--;

i = 0;

monkey[start] = 0;

System.out.print(start + " ");

}

do {

start++;

start = start % num;

} while (monkey[start] != 1);

}

System.out.println();

System.out.print("猴王为第" + start + "只猴子。");

}

}

13. **螺旋填数

读入两个整数m,n,输出一个m 行n 列的矩阵,这个矩阵是1~m*n 这些自然数按照右、下、左、上螺旋填入的结果。

例如:读入4,5,

则输出

1 2 3 4 5

14 15 16 17 6

13 20 19 18 7

12 11 10 9 8

import java.util.Scanner;

public class javaEightDay {

public static void main(String[] args) {

Scanner sca = new Scanner(System.in);

System.out.print("请输入矩阵的行数");

int row = sca.nextInt();

System.out.print("\n请输入矩阵的列数:");

int list = sca.nextInt();

int[][] arr = new int[row][list];

int count = 0; //数组存储的值。

int rowSub = 0, listSub = 0;//数组的行下标和列下标

final int up = 1, down = -1, left = 2, right = -2;//螺旋时的四个状态

int start = right;//初始状态

int circle = 1; //第一圈

while (count < row * list) {

count++;

arr[rowSub][listSub] = count;

switch (start) {

case right:

if (listSub < list - circle)

listSub++;

else {

start = down;

rowSub++;

}

break;

case down:

if (rowSub < row - circle)

rowSub++;

else {

start = left;

listSub--;

}

break;

case left:

if (listSub > circle - 1)

listSub--;

else {

start = up;

rowSub--;

}

break;

case up:

if (rowSub > circle)

rowSub--;

else {

circle++;

start = right;

listSub++;

}

break;

}

}

for (int[] score : arr) { //输出数组for (int term : score)

System.out.print(term + " ");

System.out.println();

}

}

}

Java编程基础知识点汇总及习题集答案

J a v a编程基础知识点汇总及习题集答案 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

目录 第一章 Java入门 (2) 第二章 Java基础 (5) 第三章条件转移 (14) 第四章循环语句 (20) 第五章方法 (26) 第六章数组 (33) 第七章面向对象 (42) 第八章异常 (63) 第一章 Java入门 知识点汇总 1、JAVA 三大体系 Java SE:(J2SE,Java2 Platform Standard Edition,标准版),三个平台中最核心的部分,包含Java 最核心的类库。 JavaEE:(J2EE,Java 2 Platform, Enterprise Edition,企业版),开发、装配、部署企业级应用,包含Servlet、JSP、JavaBean、JDBC、EJB、Web Service等。 Java ME:(J2ME,Java 2

Platform Micro Edition,微型版),用于小型电子设备上的软件开发。 2、JDK,JRE,JVM的作用及关系作用 ★JVM:保证Java语言跨平台 ★JRE:Java程序的运行环境 ★JDK:Java程序的开发环境 关系 ★JDK:JRE+工具 ★JRE:JVM+类库 3、JDK环境变量配置 path环境变量:存放可执行文件的存放路径,路径之间 用逗号隔开 classpath环境变量:类的运行路径,JVM在运行时通过classpath加载需要的类 4、重点掌握两个程序 :Java编译器工具,可以将编写好的Java文件(.java)编译成Java字节码文件(.class); :Java运行工具,启动Java虚拟机进程,运行编译器生成的字节码文件(.class) 5、一切程序运行的入口public static void main (String args []){ World!”); } 课堂笔记

java基础笔试测试题与答案

Java 一章至五章考试 一. 填空题(8 分) 1. 面向对象的三大原则是( 封装),( 继承) 和( 多态).2 分 2. 如果想在对象实例化的同时就初始化成员属性,则使用( 构造函数).2 分 3. ( 实体) 方法和( 构造) 方法不能修饰为abstract ?2分 二.选择题(60 分) 1) 在Java 语言中,下列(a,d )是不满足命名规范的变量名。(选择二项) a) 姓名 b) $Name c) _instanceof d) instanceof 2) 下列Java 代码片段的输出结果是( a ) 。 char c='a'; int i=c; float f=i; byte b=(byte)c; System.out.println(c+","+i+","+f+","+b); a) 编译错误 b) a,97,97,97 c) a,97,97.0,97 d) a,97,97.0f,97 3) 下列Java 代码中,空白处的代码是(b,c )。( 选择两项) public interface Fee{ public float calLabFee(float unitPrice, float time); } public class FeeImpl implements Fee { public float calLabFee(float unitPrice, float time){ return unitPrice * time; } } public class FeeInterfaceTest { public static void main(String[] args){ ________________ Float labFee = fee.calLabFee(400.00,5); } }

Java基础测试题(答案)

1. 有以下程序片段,下列哪个选项不能插入到行1。( D ) 1. 2.public class Interesting{ 3.//do sth 4. } (只能有一个public修饰的class) A、import java.awt.*; B、package mypackage; C、class OtherClass{ } D、public class MyClass{ } 2. 以下哪项是接口的正确定义?( B D ) A、interface B { void print(){};} (接口里的方法都是抽象的,不能有方法体) B、abstract interface B { void print() ;} C、abstract interface B extends A1,A2 //A1、A2为已定义的接口 { abstract void print(){ };} (同上) D、interface B { void print();} 1.接口可以声明为public(公共)或默认的访问权限。接口隐含表明是抽象的(abstract)的。 2.接口的方法默认即为public(公共)且是abstract(抽象)的. 3.接口中的变量默认即为public(公共), static(静态) and final(最终的)。 接口声明编译器如何解释呢 public interface Searchable {}public abstract interface Searchable {} abstract interface Searchable {}abstract interface Searchable {} interface Searchable {}abstract interface Searchable {}

Java基础试题及其答案

Java试题 1) java程序中,main方法的格式正确的是()。(选择一项) a)static void main(String[] args) b)public void main(String[] args) c)public static void main(String[]s) d)public static void main(String[] args) 2)给定java代码,如下: public byte count(byte b1,byte b2){ return______; } 要使用这段代码能够编译成功,横线处可以填入()。(选择一项)a)(byte) (b1-b2) b)(byte) b1-b2 c) b1-b2 d) (byte) b1/b2 3)在Java中,在包下定义一个类,要让包下的所有类都可以访问这个类,这个类必须定义为()。(选择一项) a)protected b)private c)public d)friendly 4)在Java中,下列()语句不能通过编译。 (选择一项) a) String s= “join”+ “was”+ “here”; b) String s= “join”+3; “”+new Person() toString() c) int a= 3+5 d) float f=5+; double float 6)给定java代码如下,运行时,会产生()类型的异常。(选择一项) String s=null; (“abc”); a)ArithmeticException b)NullPointerException c)IOException d)EOFException 已到文件尾,再读取抛出 7) 在java中,()对象可以使用键/值的形式保存数据。(选择一项) a)ArrayList List 有序可重复 b) HashSet Set 无序不可重复同一对象是重复 的 c) HashMap Map(key/value)重复定义:hashCode、 equals(业务) d) LinkedList List 8)给定如下java代码,编译运行之后,将会输出()。 public class Test{ public static void main(String args[]){ int a=5;

Java基础笔试机试测试题(带答案)

Java基础考试题 班级:__________ 姓名:___________ 日期:_____________ 一、笔试(45题,每题2分) 1) 分析下面的Java程序段,编译运行后的输出结果是()。 public class Test { public static void changeString(StringBuffer sb) { sb.append("stringbuffer2"); } public static void main(String[] args) { StringBuffer sb = new StringBuffer("stringbuffer1"); changeString(sb); System.out.println("sb = " + sb.toString()); } } A. sb = stringbuffer2stringbuffer1 B. sb = stringbuffer1 C. sb = stringbuffer2 D. sb = stringbuffer1stringbuffer2 2) 在Java中,包有多种用途,但不包含()。 A. 将类组合成较小的单元,便于使用 B. 有助于避免命名冲突 C. 有助于提高运行效率 D. 允许在更广的范围内保护类、数据和方法 3) 在Java中,如果要在字符串类型s="java"中,得到字母'v' 出现的位置,选()语句。 A)s.matches('v'); B)s.charAt('v'); C)s.indexOf('v'); D)s.substring('v'); 4)下列代码运行后,变量c的值是()。 int a=15,b=10; double c=a/b; a) 1.5 b) 1.0 c) 1 d) 0 5)main方法如下所示,该程序的运行结果是()。 public static void main(String [] args){ int i=0; System.out.print(i++); } a) 输出0 b) 输出1 c) 编译错误d) 运行时出现异常

JAVA入门练习50题(含答案)

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 public class lianxi01 { public static void main(String[] args) { System.out.println("第1个月的兔子对数: 1"); System.out.println("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; System.out.println("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 public class lianxi02 { public static void main(String[] args) { int count = 0; for(int i=101; i<200; i+=2) { boolean b = false; for(int j=2; j<=Math.sqrt(i); j++) { if(i % j == 0) { b = false; break; } else { b = true; } } if(b == true) {count ++;System.out.println(i );} } System.out.println( "素数个数是: " + count); } }

Java基础入门课后习题及答案

《Java基础入门》课后习题 第1章Java开发入门 一、填空题 1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。 2、Java程序的运行环境简称之为JRE_____。 3、编译Java程序需要使用_javac_____命令。 4、javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin______目录下。 5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用 来保存保存Java虚拟机要运行的“.class”文件路径。 二、选择题 1、以下选项中,哪些属于JDK工具?(多选)ABCD A、Java编译器 B、Java运行工具 C、Java文档生成工具 D、Java打包工具 2、Java属于以下哪种语言?C A、机器语言 B、汇编语言 C、高级语言 D、以上都不对 3、下面哪种类型的文件可以在Java虚拟机中运行?D A、.java B、.jre C、.exe D、.class 4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?B A、Java文档制作工具 B、Java解释器 C、Java编译器 D、Java启动器 5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java 命令,需要将环境变量path设置为以下哪个选项?B A.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d:\jre;

JAVA试题及答案

JA V A语言基础内部测试题 选择题(针对以下题目,请选择最符合题目要求的答案,针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分。)(每题2分) 没有注明选择几项的,只选择一项 1、JAVA所定义的版本中不包括:() A、JAVA2 EE B、JAVA2 Card C、JAVA2 ME D、JAVA2 HE E、JAVA2 SE 2、下列说法正确的是() A、JAVA程序的main方法必须写在类里面 B、JAVA程序中可以有多个main方法 C、JAVA程序中类名必须与文件名一样 D、JAVA程序的main方法中如果只有一条语句,可以不用{}(大括号)括起来 3、Java中,在如下所示的Test类中,共有()个构造方法。 public class Test{ private int x; public Test(){ x=35; } public void Test(double f){ =(int)f; } public Test(String s){} } A、0 B、 1 C、 2 D、3 4、变量命名规范说法正确的是() A、变量由字母、下划线、数字、$符号随意组成; B、变量不能以数字作为开头; C、A和a在java中是同一个变量; D、不同类型的变量,可以起相同的名字; 5、下列javaDoc注释正确的是() A、/*我爱北京天安门*/

B、quals("john") C、"john" = "john" D、"john".equals(new String("john")) 6、下列输出结果是() int a = 0 ; while ( a < 5 ) { switch(a){ case 0: case 3 : a = a + 2; case 1 : case 2 : a = a + 3; default : a = a + 5; } } ( a ) ; A、0 B、5 C、10 D、其他 7、下列代码输出结果是( ) int i = 10; while ( i > 0 ){ i = i + 1; if ( i = =10 ){ break; } } A.while循环执行10次 B.死循环 C.循环一次都不执行 D.循环执行一次 8、下面有关for循环的描述正确的是() A、for循环体语句中,可以包含多条语句,但要用大括号括起来 B、for循环只能用于循环次数已经确定的情况 C、在for循环中,不能使用break语句跳出循环 D、for循环是先执行循环体语句,后进行条件判断 9、下列()属于引用数据类型(选择两项) A、String B、char C、用户自定义的Student类类型

2019最新Java面试题,常见面试题及答案汇总

ava最新常见面试题+ 答案汇总 1、面试题模块汇总 面试题包括以下十九个模块:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示: 可能对于初学者不需要后面的框架和JVM 模块的知识,读者朋友们可根据自己的情况,选择对应的模块进行阅读。 适宜阅读人群 需要面试的初/中/高级java 程序员 想要查漏补缺的人 想要不断完善和扩充自己java 技术栈的人 java 面试官 具体面试题 下面一起来看208 道面试题,具体的内容。 一、Java 基础 1.JDK 和JRE 有什么区别? 2.== 和equals 的区别是什么? 3.两个对象的hashCode()相同,则equals()也一定为true,对吗? 4.final 在java 中有什么作用? 5.java 中的Math.round(-1.5) 等于多少? 6.String 属于基础的数据类型吗? 7.java 中操作字符串都有哪些类?它们之间有什么区别? 8.String str="i"与String str=new String(“i”)一样吗? 9.如何将字符串反转? 10.String 类的常用方法都有那些? 11.抽象类必须要有抽象方法吗? 12.普通类和抽象类有哪些区别? 13.抽象类能使用final 修饰吗?

14.接口和抽象类有什么区别? 15.java 中IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21.HashMap 和Hashtable 有什么区别? 22.如何决定使用HashMap 还是TreeMap? 23.说一下HashMap 的实现原理? 24.说一下HashSet 的实现原理? 25.ArrayList 和LinkedList 的区别是什么? 26.如何实现数组和List 之间的转换? 27.ArrayList 和Vector 的区别是什么? 28.Array 和ArrayList 有何区别? 29.在Queue 中poll()和remove()有什么区别? 30.哪些集合类是线程安全的? 31.迭代器Iterator 是什么? 32.Iterator 怎么使用?有什么特点? 33.Iterator 和ListIterator 有什么区别? 34.怎么确保一个集合不能被修改?

Java基础试题和答案

J a v a基础试题和答案 Revised by Petrel at 2021

J a v a试题1)java程序中,main方法的格式正确的是()。(选择一项) a)staticvoidmain(String[]args) b)publicvoidmain(String[]args) c)publicstaticvoidmain(String[]s) d)publicstaticvoidmain(String[]args) 2)给定java代码,如下: publicbytecount(byteb1,byteb2){ return______; } 要使用这段代码能够编译成功,横线处可以填入()。(选择一项)a)(byte)(b1-b2) b)(byte)b1-b2 c)b1-b2 d)(byte)b1/b2 3)在Java中,在包com.db下定义一个类,要让包com.util下的所有类都可以访问这个类,这个类必须定义为()。(选择一项) a)protected b)private c)public d)friendly 4)在Java中,下列()语句不能通过编译。(选择一项) a)Strings=“join”+“was”+“here”; b)Strings=“join”+3; c)inta=3+5 d)floatf=5+5.5;

5)在Java中下列()方法可以把JFrame的布局管理器设为FlowLayout类型(选择一项) a)jFrame.setLayout(newFlowLayout()); b)jFrame.addLayout(newFlowLayout()) c)jFrame.setFlowLayout() d)jFrame.addFlowLayout() 6)给定java代码如下,运行时,会产生()类型的异常。(选择一项)Strings=null; s.concat(“abc”); a)ArithmeticException b)NullPointerException c)IOException d)EOFException 7)在java中,()对象可以使用键/值的形式保存数据。(选择一项) a)ArrayList b)HashSet c)HashMap d)LinkedList 8)给定如下java代码,编译运行之后,将会输出()。publicclassTest{ publicstaticvoidmain(Stringargs[]){ inta=5; (a+1)/2:a/2); } }(选择一项)

Java基础测试题

Ps:答案已写在上面。希望大家把其他错误选项问题找出来. 第一组: 1.下面哪些是合法的变量名 (DEG) A.2variable .variable2 ._whatavariable $_¥ 2.请问“abcd” instanceof Object返回的值是 (B) A. “abcd” B. true C. false D. String 前面是后面的子类 面说法正确的是:(A) A. 如果源代码中有package语句,则该语句必须放在代码的第一行(不考虑注释和空格); B. 如果源代码中有import语句,则该语句必须放在在代码的第一行(不考虑注释和空格)如果源代码中有main()方法,则该方法必须被放在代码的第一行如果某文件的源代码中定义了一个public 的接口,接口名和文件名可以不同。 4.下面有关方法覆盖说法不正确的是:(B) A. 方法覆盖要求覆盖和被覆盖的方法有相同的名字,参数列以及返

回值 B. 方法覆盖要求覆盖和被覆盖的方法必须具有相同的访问权限; C. 覆盖的方法不能比被覆盖的方法抛出更多的异常 D. 覆盖的方法一定不能是private的 5.一个Java程序运行从上到下的环境次序是(C) A. 操作系统、Java程序、JRE/JVM、硬件 B. JRE/JVM、Java程序、硬件、操作系统 C. Java程序、JRE/JVM、操作系统、硬件 D. Java程序、操作系统、JRE/JVM、硬件 6. 下面选项中哪个关键字可以用来修饰接口中的变量和方法(A) A. static B. private C. synchronized D. protected 7. 下面代码段中:(A) String String=”String”; String B. 不知道 C. 编译出错 D. 运行出错 8. 下面哪种是正确的创建Map集合的方式:(D) A. Map m=new Map();

JAVA基础练习题

JA V A练习 1. 以下方法fun的功能是求两参数之积。(return a*b) int fun ( int a, int b ) { __________________; } 2. 以下方法fun的功能是求两参数之积。(return (float)a*b) float fun ( int a, double b ) { __________________; } 3. 以下方法fun的功能是求两参数的最大值。(return a>b?a:b) int fun ( int a, int b ) { __________________; } 4. 以下方法m的功能是求两参数之积的整数部分。 (return (int)(a*b)) int m ( float x, float y ) { __________________; } 5. 下面是用户程序对Applet 类中方法paint( ) 的重新定义。 (void call) public ___ paint(Graphics ____) { call.drawString("Hello,java!",10,20); } 6.下面方法的功能是判断一个整数是否为偶数,将程序补充完整。(boolean true)public ________ isEven(int a) { if(a%2==0) return _____; else return false; } 7.同一个类中多个方法具有相同的方法名,不同的_____________称为方法的重载。(参数列表)

二.选择题及答案 1.下列方法定义中,正确的是( D )。 A) int x( int a,b ) { return (a-b); } B) double x( int a,int b) { int w; w=a-b; } C) double x( a,b ) { return b; } D) int x( int a,int b) { return a-b; } 2.下列方法定义中,正确的是( D )。 A) void x( int a,int b ); { return (a-b); } B) x( int a,int b) { return a-b; } C) double x { return b; } D) int x( int a,int b) { return a+b; } 3. 下列方法定义中,不正确的是(D)。 A) float x( int a,int b ) { return (a-b); } B) int x( int a,int b) { return a-b; } C) int x( int a,int b ); { return a*b; } D) int x(int a,int b) { return 1.2*(a+b); } 4. 下列方法定义中,正确的是( A )。 A) int x( ){ char ch='a'; return (int)ch; } B) void x( ){ ...return true; } C) int x( ){ ...return true; } D) int x( int a, b){ return a+b; } 5. 列方法定义中,方法头不正确的是(D )。

最新Java基础试题及其答案

Java试题 一单项选择 1)在Java中,在包com.db下定义一个类,要让包com.util下的所有类都可以访问这个类,这个类必须定义为()。() a)protected b)private c)public d)friendly 2)在Java中,下列()语句不能通过编译。(选择一项) a) String s= “join”+ “was”+ “here”; b) String s= “join”+3; c) int a= 3+5 d) float f=5+5.5; 3)给定java代码如下,运行时,会产生()类型的异常。(选择一项) String s=null; s.concat(“abc”); a)ArithmeticException b)NullPointerException c)IOException d)EOFException 4) 在java中,()对象可以使用键/值的形式保存数据。(选择一项) a)ArrayList b) HashSet c) HashMap d) LinkedList 5)给定如下java代码,编译运行之后,将会输出()。 public class Test{ public staticvoid main(String args[]){ int a=5; System.out.println(a%2==1) ?(a+1) /2:a/2) ; } } (选择一项) a)1 b)2 c)2.5 d)3 6)以下Java语句中,String str = “123456789”;str =str.subString(1,3);执行后str中的值为。(选择一项) a) “23” b)“123”

java基础面试全集

Java面试题大全 2013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试大全》进行了全面的修订并重新发布在我的CSDN博客。在修订的过程中,参照了当时JDK最新版本(Java 7)给出了题目的答案和相关代码,去掉了EJB 2.x、JSF等无用内容或过时内容,补充了数据结构和算法、大型网站技术架构、设计模式、UML、spring MVC等内容并对很多知识点进行了深入的剖析,例如hashCode方法的设计、垃圾收集、并发编程、数据库事务等。当时我甚至希望把面试中经常出现的操作系统、数据库、软件测试等内容也补充进去,但是由于各种原因,最终只整理出了150道面试题。让我欣慰的是,这150道题还是帮助到了很多人,而且在我CSDN 博客上的总访问量超过了5万次,最终还被很多网站和个人以原创的方式转载了。最近一年内,用百度搜索”Java面试”我写的这些东西基本上都排在搜索结果的前5名,这让我觉得”亚历山大”,因为我写的这些东西一旦不准确就可能误导很多人。2014年的时候我又整理了30道题,希望把之前遗漏的面试题和知识点补充上去,但是仍然感觉挂一漏万,而且Java 8问世后很多新的东西又需要去总结和整理。为此,我不止一次的修改了之前的180题,修改到自己已经感觉有些疲惫或者厌烦了。2014年至今,自己带的学生又有很多走上了Java程序员、Java工程师的工作岗位,他们的面试经验也还没来得及跟大家分享,冥冥之中似乎有一股力量在刺激我要重新写一篇《Java面试题全集》,于是这篇文章就诞生了。请不要责备我把那些出现过的内容又写了一次,因为每次写东西就算是重复的内容,我也需要对编程语言和相关技术进行重新思考,不仅字斟句酌更是力求至臻完美,所以请相

精选-java基础习题及答案

程序设计—基础篇习题 1.作图. 2. 输出101--500之间的所有奇数,奇数之和. 3. 输出100--200间不能被3整除的数. 4. 输入初值 ,输出100个不能被3整除的数. 5. 求S=1+(1+2)+(1+2+3)+...+(1+2+3+...+n)的值. 6. 设S=1*2*3*...*n,求S不大于400000时的最大n. 7. 设S=11*22*33*...*n n,求S不大于400000时的最大n. 8. 找出1~1000间的全部”同构数”.如果一个数出现在其平方数右端,则称此数为同构数,如1在12=1的右端,5在52=25的右端,25在252=625的右端等. 9. 百鸡问题。“鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?” 10.利用一维数组,统计一个班学生0-9,10-19,..90-99及100各分数段的人数.

11.插入法排序.排序方法: 设有10个数存放在数组A中,分别用A[1],A[2],..,A[10]表示. 先将A[1]与A[2]比较,若A[2]j) System.out.print(" "); else if(i<=j&&j-i<=7) System.out.print("*"); } System.out.println(); } } } (2) public class Ex1_2 { public static void main(String[] args){ for(int i=1;i<=5;i++) { for(int j=1;j<=16;j++) { if(i>j) System.out.print(" ");

Java基础面试题

1.下面能够得到文件“file.txt”的父路径的是: A.String name= File.getParentName(“file.txt”); B.String name= (new File(“file.txt”)).getParent(); C.String name = (new File(“file.txt”)).getParentName(); D.String name= (new File(“file.txt”)).getParentFile(); 2.在Java中,要创建一个新目录,要使用的类的实例是: A.File B.FileOutputStrean C.PrintWriter D.Dir 3.题目代码的功能为:在d:创建一个文件“test.txt”,并向文件写入“HelloWorld”,然后删除文件。 public static void main(String[] args) { File file = new File("d:\\", "file.txt"); try { <填入代码> } catch (Exception e) { e.printStackTrace(); } } A. BufferedWriter bw = new BufferedWriter(new FileWriter(file)); bw.write("HelloWorld"); bw.close(); if (file.exists()) { file.delete(); } B. BufferedWriter bw = new BufferedWriter(new FileWriter(file)); bw.write("HelloWorld");

java基础练习题附答案

Java基础练习题附答案 一、简单Java程序调试 1)以下哪个是Java应用程序main方法的有效定义? A. public static void main(); B. public static void main( String args ); C. public static void main( String args[] ); D. public static void main( Graphics g ); E. public static boolean main( String a[] ); 2) 编译和运行以下代码的结果为: public class MyMain{ public static void main(String argv){ "Hello cruel world"); } } A.编译错误; B.运行输出 "Hello cruel world"; C.编译无错,但运行时指示没有定义构造方法。 D.编译无错,但运行时指示没有正确定义main方法。3)下列选项中不属于Java虚拟机的执行特点的一项是:A.异常处理 B.多线程 C.动态链接 D.简单易学4)不属于Java语言特点的一项是: A.分布式 B. 安全性 C. 编译执行 D.面向对象5)以下程序的运行结果为: public class Test{ public static void main(String argv[ ]){ "x="+5); } } A. 5 B. x=5 C. "x="+5 D. "x="5 6) 以下程序的运行结果为: public class Test{ public static void main(String argv[ ]){

JAVA基础考题和答案

1、作用域public,private,protected,以及不写时的区别 答:区别如下: 作用域当前类同一package 子孙类其他package public √√√√ protected √√√× friendly √√×× private √××× 不写时默认为friendly 2、ArrayList和Vector的区别,HashMap和Hashtable的区别 答:就ArrayList与Vector主要从二方面来说. 一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半 就HashMap与HashTable主要从三方面来说。 一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 3、char型变量中能不能存贮一个中文汉字?为什么? 答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字

节,所以放一个中文是没问题的 4、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify 5、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么? 答:父类: package test; public class FatherClass { public FatherClass() { System.out.println("FatherClass Create"); } } 子类: package test; import test.FatherClass; public class ChildClass extends FatherClass { public ChildClass()

java基础面试题(答案)

1、如下哪些不是java的关键字? A)const B)NULL C)false D)this E) native 答:B 2、关于垃圾收集的哪些叙述是对的 A)程序开发者必须自己创建一个线程进行内存释放的工作 B)垃圾收集将检查并释放不在使用的内存 C)垃圾收集允许程序开发者明确指定并立即释放该内存 D)垃圾收集能够在期望的时间释放被java对象使用的内存 答:B 3、已知表达式int m [ ] = {0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量总数相等? A)m.length()B)m.length C)m.length()+1D)m.length-1 答:D 4、已知如下代码:public class Test {long a[]=new long [10];public static void main(String arg[] ){ System.out.print(a[6]); } }请问哪个语句是正确的? A)Output is null.B)Output is 0C)When compile, some error will occur.D)When running, some error will occur. 答:C 5、已知如下代码:public class Test { public static void main(String arg[] ) { int i = 5;do{System.out.print(i);}while(--i>5);System.out.print(“finished”);}}执行后的输出是什么? A)5B)4C)6D)finished

java基础测试题及答案

一、选择题(每题2分,共40分) 1、下面哪个是Java语言中正确的标识符( C ) A、3com B、import C、that D、this 2、下面哪个语句(初始化数组)是不正确的:( B) A.int x[] = {1,2,3}; B.int x[3] = {1,2,3}; C.int[] x = {1,2,3}; D.int x[] = new int[]{1,2,3}; 3、下述概念中不属于面向对象方法的是( D )。 A.对象、消息 B.继承、多态 C.类、封装 D.过程调用 4、下面的代码段中,执行之后i 和j 的值是什么? ( B ) int i = 1; int j; j = i++*2+3*--i; A.1, 2 B.1, 5 C. 2, 1 D. 2, 2 5、下面哪条语句把方法声明为抽象的公共方法?( B ) A.public abstract method(); B.public abstract void method(); C.public abstract void method(){} D.public void method() extends abstract; 6、下面关于java中类的说法哪个是不正确的?( C ) A.类体中只能有变量定义和成员方法的定义,不能有其他语句。 B.构造函数是类中的特殊方法。 C.类一定要声明为public的,才可以执行。 D.一个java文件中可以有多个class定义。 7、假设A类有如下定义,设a是A类的一个实例,下列语句调用哪个是错误的?( C ) class A { int i; static String s; void method1() { } static void method2() { } } A、System.out.println(a.i); B、a.method1(); C、A.method1(); D、A.method2() 8、容器被重新设置大小后,哪种布局管理器的容器中的组件大小不随容器大小 的变化而改变? ( B ) A、 CardLayout B、 FlowLayout C、 BorderLayout D、 GridLayout 9、下列哪个用户图形界面组件在软件安装程序中是常见的? ( C )

相关文档