您的位置:首页 > 编程语言 > Java开发

java笔试基础题目总结

2014-10-25 10:10 281 查看
1、String str=new String("abc");一共产生了几个对象?

首先new String()在堆中产生了一个对象 ,然后“abc"在字符串常量池中产生了一个对象,最后String str 在栈中产生了一个引用对象。所以一共产生了三个对象。

2、下列变量定义正确的是:

A String String="abc" B String int="abc" C String 1string="abc" D String $_str="abc"

一般变量命名可以使用字母,符号开头,但是不可以使用java里面的关键字,java 的关键字一般为小写,也不能以数字开头,所以A D 是正确的。

3、使用反射来调用一个类Person的sayHi方法,

<span style="font-size:14px;">public class Person{
 
  public void sayHi(String userName){
    System.out.println("Hi "+userName);
   } 
}</span>
a, 首先获得运行时类 ,这里方法有三种:Class clazz=Person.class(); 或Class clazz=Class.forName("com..Person"); 或 Class clazz=new Person().getClass();

b,获取运行时类的方法:Method m=clazz.getMethod("sayHi",String.class); //其中String.class表示传入参数的类型

c,调用方法:m.invoke(clazz.newInstance(),"admin");这里的返回值为sayHi的返回值。

4、short s1=1; s1=s1+1;代码运行的结果为:

A 2 B 1 C 没有结果

考察数据类型转换的知识 short int long 可以自动转型 ,反过来需要强制转型 ,s1=s1+1;需要做强制转换,所以运行不能通过编译的,故没有结果C ,这里注意

s1+=1是可以运行的,结果为2.

5、forward(转发)与redirect(重定向)的区别

a.从地址栏显示来说

forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.

redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.

b.从数据共享来说

forward:转发页面和转发到的页面可以共享request里面的数据.

redirect:不能共享数据.

c.从运用地方来说

forward:一般用于用户登陆的时候,根据角色转发到相应的模块.

redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.

d.从效率来说

forward:高.

redirect:低.

一句话,转发是服务器行为,重定向是客户端行为。重定向,其实是两次request, 第一次,客户端request A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。

6、下列那些是线程安全的:

A Integer B String C StringBuilder D StringBuffered E int

StringBuffered为线程安全 故 D

7、参数传递中的 传值和传引用的区别:

传值: 对于原始数据类型 short int long double float char boolean byte 参数传递是传值的,开发者在方法中修改了参数值,方法调用线束后不会改变原来那个变量的值;

传引用:传递的是对象的引用,那么就会传递引用值,这意味着,在方法调用期间实参和形参都是该引用值所代表对象的别名。所以在参数传递之前,必须由实参表达式算出一个对象的引用

<span style="font-size:14px;">public class KnowledgeTest {
		  public static void main(String [] args){
	       int val;
	       StringBuffer sb;
	       String str="ads";
	       val=10;
		   sb=new StringBuffer("pears");
		   System.out.println("val is "+val);
		   System.out.println("sb is "+sb);
		   System.out.println("str is "+str);
           System.out.println("  ");
		   System.out.println("callint modify");
		   modify(val,sb,str);
		   System.out.println("val is "+val);
		   System.out.println("sb is "+sb);
		   System.out.println("str is "+str);
		}
		private static void modify(int val, StringBuffer sb, String str) {
			val=0;
			str="ddd";
			sb.append("good");
			sb=new StringBuffer("test");
			
		}
}</span>
输出结果 :
<span style="font-size:14px;">val is 10
sb is pears
str is ads
  
callint modify
val is 10
sb is pearsgood
str is ads</span>

8、java 异常处理:

异常的基础类为:Throwable派生出Exception类和error类,error 类表示程序本身无法恢复的严重错误,用于指示应用程序的严重问题,不可以捕获而且程序也法处理的;exception,应用程序可以捕获的,并且可以处理的异常。异常主要分为运行进异常:

RuntimeException 和检查性异常。主要的运行时异常有:

ClassCastException(类转换异常)

IndexOutOfBoundsException(数组越界)

NullPointerException(空指针)

ArrayStoreException(数据存储异常,操作数组时类型不一致)

还有IO操作的BufferOverflowException异常

主要的检查性异常有:IOException ,SQLException 这类异常一般在编译期就可以被发现,常常编译器会提醒我们去处理这类异常。

9、Java中Collection与Collections的区别

java.util.Collection是一个集合接口,它提供了对集合对象进行基本操作的通用接口方法,Colllection接口在java类库中有很多种具体的实现。

java.util.Collections是一个包装类,它包含有各种有关集合操作的静态多态方法。此不能不实例化。就像是一个工具类,服务于Java的Collection框架。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: