Java笔试选择题 1

1.下列哪种说法是正确的()

 A.实例方法可直接调用超类的实例方法
 B.实例方法可直接调用超类的类方法
 C.实例方法可直接调用其他类的实例方法
 D.实例方法可直接调用本类的类方法
 分析:类方法指的是用static关键字修饰的方法,而实例方法就是相对于类方法的其它方法   
当类的字节码文件被加载到内存时,类的实例方法不会被分配入口地址,当该类创建对象后,
类中的实例方法才分配入口地址,从而实例方法可以被类创建的任何对象调用执行。需要注意的是,
当我们创建第一个对象时,类中的实例方法就分配了入口地址,当再创建对象时,不再分配入口地址,
也就是说,方法的入口地址被所有的对象共享,当所有的对象都不存在时,方法的入口地址才被取消。
对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址。从而类方法不仅可以被类创建
的任何对象调用执行,也可以直接通过类名调用。类方法的入口地址直到程序退出才被取消。

对于A,不可以调用父类的private实例方法。因为private修饰的方法只有本类对象才可以调用

对于B,类方法只有本类才可以调用

对于C,跟A相同,比A更离谱

D是正确的

2.下列语句哪一个正确( )
A.Java程序经编译后会产生machine code
B.Java程序经编译后会产生byte code
C.Java程序经编译后会产生DLL
D.以上都不正确

解析:.java文件编译后是字节码,即.class文件,然后java虚拟机把.class文件翻译成字节码,让cpu来调用。这也是跨平台性的体现。所以答案是B

3.Java中将ISO8859-1字符串转成GB2312编码,语句为 ? 
 A. new String(String.getBytes("ISO8859-1"),GB2312)
 B.new String(String.getBytes("GB2312"),ISO8859-1)
 C.new String(String.getBytes("ISO8859-1"))
 D.new String(String.getBytes("GB2312"))

解析:JAVA有一个public String(byte bytes[], Charset charset)函数可以用指定字节数组和编码来构造字符串。一个public byte[] getBytes(Charset charset)函数把字符串按指定编码来得到字节数组。可以用这两个函数来实现编码转

换。选A

4.下面函数将返回?    
public static int func (){
    try{
        return 1;
    }catch (Exception e){
        return 2;
    }finally{
        return 3;
    }
}

A.1  B.2  C.3 D.编译错误

解析:finally一般和try{}catch{}配套使用,try和catch执行之后总会执行finally.并且finally会覆盖前者的return。(当try和catch中有System.exit()语句时,则不会执行finally)

5.下列关于容器集合类的说法正确的是?
A.LinkedList继承自List
B.AbstractSet继承自Set
C.HashSet继承自AbstractSet
D.WeakMap继承自HashMap

解析:List、set、Map都是借口,list和set集成了Collection类。A和B应该说实现了接口而不是继承。C是正确的

6.

下面哪项技术可以用在WEB开发中实现会话跟踪实现?
A.session
B.Cookie
C.地址重写
D.隐藏域

解析:实现会话跟踪的机制

Cookies,URL重写,隐藏式表单域,Session机制

Cookies

      Cookies是使用最广泛的会话跟踪机制,Cookies是有服务器创建,并把Cookies信息保存在用户机器上的硬盘上,下次用户再次访问该站点服务器的时候,保存在用户机器上硬盘的Cookies信息就被送回给服务器。一般Cookies一般不多于4KB,且用户的敏感信息如信用卡账号密码不应该保存在Cookies中。

URL重写

       URL重用户在每个URL结尾附加标识回话的数据,与标识符关联的服务器保存有关与会话的数据,如我们访问某个新闻的时候,在地址栏我们一般会看到这样的信息:http://www.XXX.com/news?id=??,通常的话id后面的问号表示该条新闻在后台数据库中的新闻表的id。URL重写能够在客户端停用cookies或者不支持cookies的时候仍然能够发挥作用。

隐藏表单域

      通常,在表单中我们使用隐藏表单域的时候会有这么一句代码:。通过给type属性赋值为hidden值来实现隐藏,这样用户在浏览的时候看不到这行代码的数据,但是当用户通过查看源代码还是可以看到的。

Session机制

       这个机制要慎用,特别是对于访问量很大的站点,因为这种机制是吧Session信息保存在服务器端。如果访问量特别大的话,对于服务器的承受力的要求有多高是可想而知的。

7.以下代码将打印出(C)

 public static void main (String[] args) { 
    String classFile = "com. jd. ". replaceA11(".", "/") + "MyClass.class";
    System.out.println(classFile);
  • A.com. jd
  • B.com/jd/MyClass.class
  • C./MyClass.class
  • D.com.jd.MyClass
 解析:replace和replaceAll是JAVA中常用的替换字符的方法,它们的区别是:

  1)replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换(CharSequence即字符串序列的意思,说白了也就是字符串);

  2)replaceAll的参数是regex,即基于规则表达式的替换,比如,可以通过replaceAll("\\d", "*")把一个字符串所有的数字字符都换成星号;

题目中“.”,在正则表达式中表示任何符号,所以答案是C,五个字母,2个点号,两个空格被代替。

8.

检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果(D)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package algorithms.com.guan.javajicu; 
public class Example { 
   String str = new String( "good" ); 
   char[] ch = { 'a' , 'b' , 'c' }; 
   public static void main(String[] args) { 
      Example ex = new Example(); 
      ex.change(ex.str, ex.ch); 
      System.out.print(ex.str + "and" ); 
      System.out.print(ex.ch);  
  
    
   public void change(String str, char ch[]){ 
      str= "test ok"
      ch[0]= 'g'
  
}

A.test okandabc
B.test okandgbc
C.goodandabc
D.goodandgbc

解析:String类是final类型的,不能继承和修改这个类。str=“teskok”,其实是隐含的让Java生成一个新的String对象,那么就与原来的“Hello”没有任何关系,当函数结束,str作用结束.ch[]是值传递,所以可以改变。

9.下列程序的运行结果(A)

1
2
3
4
5
6
7
8
9
10
11
public void getCustomerInfo() {
         try {
             // do something that may cause an Exception
         } catch (java.io.FileNotFoundException ex) {
             System.out.print( "FileNotFoundException!" );
         } catch (java.io.IOException ex) {
             System.out.print( "IOException!" );
         } catch (java.lang.Exception ex) {
             System.out.print( "Exception!" );
         }
     }
  • A.IOException!
  • B.IOException!Exception!
  • C.FileNotFoundException!IOException!
  • D.FileNotFoundException!IOException!Exception!

解析:

try-catch-finally 规则(异常处理语句的语法规则

1)  必须在 try 之后添加 catch 或 finally 块。try 块后可同时接 catch 和 finally 块,但至少有一个块。

2) 必须遵循块顺序:若代码同时使用 catch 和 finally 块,则必须将 catch 块放在 try 块之后。
3) catch 块与相应的异常类的类型相关。
4) 一个 try 块可能有多个 catch 块。若如此,则执行第一个匹配块。即Java虚拟机会把实际抛出的异常对象依次和各个catch代码块声明的异常类型匹配,如果异常对象为某个异常类型或其子类的实例,就执行这个catch代码块,不会再执行其他的 catch代码块
5) 可嵌套 try-catch-finally 结构。
6) 在 try-catch-finally 结构中,可重新抛出异常。

7) 除了下列情况,总将执行 finally 做为结束:JVM 过早终止(调用 System.exit(int));在 finally 块中抛出一个未处理的异常;计算机断电、失火、或遭遇病毒攻击

由此可以看出,catch只会匹配一个,因为只要匹配了一个,虚拟机就会使整个语句退出

9.下面属于java包装类的是?
 A.String
 B.Long
 C.Character
 D.Short

解析:Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,即包装类。对应的基本类型和包装类如下表:

基本数据类型

包装类

byte

Byte

boolean

Boolean

short

Short

char

Character

int

Integer

long

Long

float

Float

double

Double

你可能感兴趣的:(JAVA笔试分析)