微信

使用微信服务,更方便

职友集>Java面试题 > Java基础知识笔试题及答案

Java基础知识笔试题及答案

2015-08-06 06:30:02 阅读( 306 )

2318人 收藏本页

标签:Java面试题

1.Java中提供了名为()的包装类来包装原始字符串类型。

A.Integer

B.Char

C.Double

D.String 

答案:D

2.java.lang包的()方法比较两个对象是否相等,相等返回true。

A.toString()

B.equals()

C.compare()

D.以上所有选项都不正确

答案:B

3.使用()方法可以获得Calendar类的实例。

A.get()

B.equals()

C.getTime()

D.getInstance()

答案:D

4.下面的集合中,()不可以存储重复元素。

A.Set

B.Collection

C.Map

D.List

答案:C

5.关于Map和List,下面说法正确的是(  )。

A.Map继承List

B.List中可以保存Map或List

C.Map和List只能保存从数据库中取出的数据

D.Map的value可以是List或Map

答案:D

6.给定如下Java代码,编译运行的结果是()。

import java.util.*;

public class Test {

public static void main(String[] args) {

LinkedList list=new LinkedList();

list.add(“A”);

list.add(2,”B”);

String s=(String)list.get(1);

System.out.println(s);

}

}

A.编译时发生错误

B.运行时引发异常

C.正确运行,输出:A

D.正确运行,输出:B

答案:B

7.请写出下列语句的输出结果

char[] data={‘a’,'b’,'c’,'d’};

System.out.println(String.valueOf(10D));

System.out.println(String.valueOf(3>2));

System.out.println(String.valueOf(data,1,3));

参考答案:

10.0

true

bcd

8.写出下面代码运行后的输出结果是。

public class Arrtest {

public static void main(String kyckling[]){

int i[ ] = new int[5];

System.out.println(i[4]);

amethod();

Object obj[ ] = new Object[5];

System.out.println(obj[2]);

}

public static void amethod(){

int K[ ] = new int[4];

System.out.println(K[3]);

}

}

参考答案:

0

0

null

9.什么是封装?Java语言中的封装类有哪些?

参考答案:

封装是表示把数据项和方法隐藏在对象的内部,把方法的实现内容隐藏起来。Java中的封装类有Double、Integer、Float、Byte、Long、Character、Short和Boolean等类。

10.什么是泛型?使用泛型有什么优点?泛型List和普通List有什么区别?

参考答案:

泛型是对Java语言的数据类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看做是使用参数化类型时指定的类型的一个占位符。

优点:提高Java程序的类型安全;消除强制类型转换;提高代码的重用率。

泛型List可以实例化为只能存储某种特定类型的数据,普通List可以实例化为存储各种类型的数据。通过使用泛型List对象,可以规范集合对象中存储的数据类型,在获取集合元素时不用进行任何强制类型转换。

11.编写一个程序,实现下列功能:

? 测试两个字符串String str1=”It is”和String str2=”It is”;是否相等

? 将” a book.”与其中的str1字符串连接

? 用m替换新字符串中的i

参考代码:

public class Ex11 {

public static void main(String[] args) {

String str1=”It is”;

String str2=”It is”;

//比较字符串

System.out.println(“str1==str2的结果:“+(str1==str2));

System.out.println(“str1.equals(str2)的结果:“+str1.equals(str2));

//连接字符串

String str3=str1.concat(“a book”);

System.out.println(“连接后的字符串为:“+str3);

//替换字符

String str4=str3.replace(‘i’,'m’);

System.out.println(“替换后的字符串为:“+str4);

}

}

12.编程计算距当前时间10天后的日期和时间,并用“xxxx年xx月xx日”的格式输出新的日期和时间。

参考代码:

import java.util.Calendar;

public class Ex12 {

public static void main(String[] args) {

Calendar cal=Calendar.getInstance();

cal.add(Calendar.DAY_OF_YEAR,10);

String strDate=cal.get(Calendar.YEAR)+”年“

+(cal.get(Calendar.MONTH)+1)+”月“

+cal.get(Calendar.DATE)+”日“;

System.out.println(“10天后的日期为:“+strDate);

}

}

13.创建一个类Stack,代表堆栈(其特点为:后进先出),添加方法add(Object obj)、方法get()和delete( ),并编写main方法进行验证。

参考代码:

import java.util.LinkedList;

import java.util.List;

class Stack{

LinkedList list;

public Stack() {

list = new LinkedList();

}

public void add(Object obj){

list.addFirst(obj);

}

public Object get(){

return list.getFirst();

}

public void delete(){

list.removeFirst();

}

}

public class Ex13 {

public static void main(String[] args) {

Stack stack=new Stack();

stack.add(“1″);

stack.add(“2″);

stack.add(“3″);

System.out.println(stack.get());

stack.delete();

System.out.println(stack.get());

}

}

14.编写程序,计算任意两个日期之间间隔的天数。

参考代码:

import java.util.Calendar;

public class Ex14 {

public static void main(String[] args) {

Calendar c1 = Calendar.getInstance();

c1.set(2010, 7, 1);

Calendar c2 = Calendar.getInstance();

long ca1 = c1.getTimeInMillis();

long ca2 = c2.getTimeInMillis();

// 计算天数    

long days = (ca2 - ca1) / (24 * 60 * 60 * 1000);

System.out.println(days);

}

}

15.创建一个HashMap对象,添加一些学生的姓名和成绩:张三:90分,李四,83分。接着从HashMap中获取并他们的姓名和成绩,然后把李四的成绩改为100分,再次输出他们的信息。

参考代码:

import java.util.HashMap;

public class Ex15 {

public static void main(String[] args) {

HashMap map=new HashMap();

map.put(“张三“,90);

map.put(“李四“,83);

System.out.println(“修改前的成绩:“);

System.out.println(map);

map.put(“李四“,100);

System.out.println(“修改后的成绩:“);

System.out.println(map);

}

}

16.编写一个程序,用parseInt方法将字符串200由十六进制转换为十进制的int型数据,用valueOf方法将字符串123456转换为float型数据。

参考代码:

public class Ex16 {

public static void main(String[] args) {

String str1=”200″;

System.out.println(Integer.parseInt(str1,16));

String str2=”123456″;

System.out.println(Float.parseFloat(str2));

}

}

17.编写程序,将long型数据987654转换为字符串,将十进制数365转换为十六进制数表示的字符串。

参考代码:

public class Ex17 {

public static void main(String[] args) {

long num=987654L;

int i=365;

System.out.println(“Long类型转换为String:“+String.valueOf(num));

String HexI=DtoX(i);

System.out.println(HexI);

}

//转换函数

public static String DtoX(int d)

{

String x=”";

if(d<16){

x=change(d);

}

else{

int c;

int s=0;

int n=d;

while(n>=16){

s++;

n=n/16;

}

String [] m=new String[s];

int i=0;

do{

c=d/16;

//判断是否大于10,如果大于10,则转换为A-F的格式

m[i++]=change(d%16);

d=c;

}while(c>=16);

x=change(d);

for(int j=m.length-1;j>=0;j–){

x+=m[j];

}

}

return x;

}

//判断是否为10-15之间的数,如果是则进行转换

public static String change(int d){

String x=”";

switch(d){

case 10:

x=”A”;

break;

case 11:

x=”B”;

break;

case 12:

x=”C”;

break;

case 13:

x=”D”;

break;

case 14:

x=”E”;

break;

case 15:

x=”F”;

break;

default:

x=String.valueOf(d);

}

return x;

}

}

18.编写一个程序,接收以克为单位的一包茶叶的单位重量、卖出的包数和每克的价格,计算并显示出销售的总额。其中三个数据一行输入,数据间用“-”分隔。比如:输入“3-100-2.1”,表示每包的重量为3克,共卖出100包,每克的价格为2.1元。此时的销售总额为630元。

参考代码:

import java.util.Scanner;

public class Ex18 {

public static void main(String[] args) {

Scanner scan=new Scanner(System.in);

System.out.println(“请依次输入重量、包数、价格,并以-分隔:“);

String strIn=scan.nextLine();

Scanner sc=new Scanner(strIn);

sc.useDelimiter(“-”); //设置分隔符

int num=sc.nextInt();

int bag=sc.nextInt();

float price=sc.nextFloat();

double total=price*num*bag;

System.out.println(“销售总额为:“+total);

}

}

19.编写一个泛型方法,能够返回一个int类型数组的最大值和最小值、String类型数组的最大值和最小值(按字典排序)。

参考代码:

class Pair{

private T min;

private T max;

public Pair() {  min = null; max = null;  }

public Pair(T min, T max) {  this.min = min;  this.max = max;  }

public T getMin() {  return min;  }

public T getMax() {  return max;  }

public void setMin(T newValue) {  min = newValue;  }

public void setMax(T newValue) {  max = newValue;  }

}

class ArrayAlg {

public static  Pair minmax(T[ ] a) {

if (a == null || a.length == 0) {

return null;

}

T min = a[0];T max = a[0];

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

if (min.compareTo(a[i]) > 0) {min = a[i];}

if (max.compareTo(a[i]) < 0) { max = a[i];}

}

return new Pair(min, max);

}

}

public class Ex19 {

public static void main(String[] args) {

//测试整型数组

Integer[] arrI={1,2,3,4,5,6};

Pair p1=ArrayAlg.minmax(arrI);

System.out.println(“整型数组的最小值:“+p1.getMin().intValue());

System.out.println(“整型数组的最大值:“+p1.getMax().intValue());

//测试字符串数组

String[ ] words ={“able”,”word”,”excel”,”course”,”java”,”c#”};

Pair p2=ArrayAlg.minmax(words);

System.out.println(“字符串数组的最小值:“+p2.getMin());

System.out.println(“字符串数组的最大值:“+p2.getMax());

}

}

20.编写一个泛型方法,接受对象数组和集合作为参数,将数组中的对象加入集合中。并编写代码测试该方法。

参考代码:

import java.util.*;

public class Ex20 {

static  void fromArrayToCollection(T[]a, Collection c){

for (T o : a){

c.add(o);

}

}

public static void main(String[] args) {

Integer[] ia = new Integer[100];

Collection cn = new ArrayList();

fromArrayToCollection(ia, cn);// T是Number类型

System.out.println(cn);

}

}

21.试编写一个List类型的对象只能存储通讯录(存储同学的姓名和联系方式),并输出通讯录的列表到控制台。

参考代码:

import java.util.*;

class Student{

private String name;

private String phone;

public Student(String name, String phone) {

this.name = name;

this.phone = phone;

}

public String toString() {

return name+”:”+phone;

}

}

public class Ex21 {

public static void main(String[] args) {

Student st1=new Student(“John”,”23214″);

Student st2=new Student(“Alice”,”4563″);

List list=new ArrayList();

list.add(st1);list.add(st2);

for(int i=0;i<list.size();i++)

System.out.println(list.get(i));

}

}

22.设计一个程序,基于泛型Map实现10个英文单词的汉语翻译,即通过单词得到它的中文含义。

参考代码:

import java.util.*;

public class Ex22 {

public static void main(String[] args) {

String[] eng={“Apple”,”Orange”,”Green”};

String[] chs={“苹果“,”桔子“,”绿色“};

Map map=new HashMap();

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

map.put(eng[i],chs[i]);

String test=”Orange”;

System.out.println(test+”翻译:“+map.get(test));

}

}

 

1.什么是异常?什么是Java的异常处理机制?

参考答案:

异常是指程序运行过程中产生的错误,它出现在程序运行过程中。

异常处理机制是为程序提供错误处理的能力。根据这个机制,对程序运行时可能遇到的异常情况,预先提供一些处理的方法。在程序执行代码的时候,一旦发生异常,程序会根据预定的处理方法对异常进行处理,处理完成后,程序进行运行。

2.Java中的异常分为哪几类?

参考答案:

Java中的异常分为两种类型:

? 内部错误:又称为致命错误。比如:硬盘损坏、软驱中没有软盘

? 运行时异常:比如除数为0、数组下标越界

3.所有异常的父类是()。

A.Error B.Throwable C.RuntimeException D.Exception 

答案:B

4.下列()操作不会抛出异常。

A.除数为零 B.用负数索引访问数组

C.打开不存在的文件 D.以上都会抛出异常

答案:D

5.能单独和finally语句一起使用的块是()。

A.try B.throws

C.throw D.catch

答案:A

6.在多重catch块中同时使用下列类时,()异常类应该最后列出。

A.Exception

B.ArrayIndexOutOfBoundsException

C.NumberFormatException

D.ArithmeticException

答案:A

7.执行下面的代码会引发()异常。

String str=null;

String strTest=new String(str);

A.InvalidArgumentException

B.IllegalArgumentException

C.NullPointerException

D.ArithmeticException

答案:C

8.这段代码的输出结果是()。

try{

System.out.print(“try,“);

return;

} catch(Exception e){

System.out.print(“catch,“);

} finally {

System.out.print(“finally”);

}

A.try,

B.try,catch,

C.try,finally

D.try, catch,finally

答案:C

9.这个方法的返回值是()。

public int count() {

try{

return 5/0;

} catch(Exception e){

return 2*3;

} finally {

return 3;

}

}

A.0

B.6

C.3

D.程序错误

答案:C

10.编写一个程序,产生ArrayIndexOutOfBoundsException异常,并捕获该异常,在控制台输出异常信息。

参考代码:

public class Ex10 {

public static void main(String[] args) {

int[] arr=new int[2];

try {

System.out.println(arr[2]);

} catch (ArrayIndexOutOfBoundsException e) {

e.printStackTrace();

}

}

}

11.设计一个Java程序,自定义异常类,从键盘输入一个字符串,如果该字符串值为“abc”,则抛出异常信息,如果从键盘输入的是其他字符串,则不抛出异常。

参考代码:

import java.util.Scanner;

class MyException extends Exception{

private String errorMsg;

//getter和setter方法

public MyException(String errorMsg){

this.errorMsg=errorMsg;

}

@Override

public String toString() {

return errorMsg;

}

}

public class Ex11 {

public static void main(String[] args) {

String strIn;

Scanner scan=new Scanner(System.in);

strIn=scan.nextLine();

try {

if(strIn.equals(“abc”))

throw new MyException(“输入的字符串不正确!“);

} catch (MyException e) {

System.out.println(e);

}

}

}

12.设计一个Java程序,从键盘输入两个数,进行减法运算。当输入串中含有非数字时,通过异常处理机制使程序正常运行。

参考代码:

import java.util.*;

public class Ex12 {

public static void main(String[] args) {

int num1,num2;

Scanner in=new Scanner(System.in);

try {

num1=in.nextInt();

} catch (InputMismatchException e) {

System.out.println(“第一个数格式不对“);

num1=0;

}

try {

num2=in.nextInt();

} catch (InputMismatchException e) {

System.out.println(“第二个数格式不对“);

num2=0;

}

System.out.println(“num1-num2=”+(num1-num2));

}

}

13.自定义异常类,在进行减法运算时,当第一个数大于第二个数时,抛出“被减数不能小于减数”,并编写程序进行测试。

参考代码:

import java.util.Scanner;

//MyException类的定义(同第11题)

public class Ex13 {

public static void main(String[] args) {

int num1,num2;

Scanner scan=new Scanner(System.in);

num1=scan.nextInt();

num2=scan.nextInt();

try {

if(num1<num2)

throw new MyException(“被减数不能小于减数“);

} catch (MyException e) {

System.out.println(e);

}

}

}

 

来自IT公司面试手册

下一篇:写一个小程序,模拟缓冲技术

上一篇:初级Java软件工程师笔试题及附带答案

亲~ 如果您有更好的答案 可在评论区发表您独到的见解。

您想查看更多的信息: 面试题