美文网首页
051错误整理改正

051错误整理改正

作者: 牛倩贱 | 来源:发表于2019-01-21 19:38 被阅读0次

    1.下列叙述中,错误的是(B)

    a.File类能够存储文件属性

    b.File类能够读写文件

    c.File类能够建立文件

    d.File类能够获取文件目录信息

    注释:能够读写文件的是数据流(OutputStream和InputStream)

    File类的一些常用的方法和说明:

    1.访问文件的相关方法:

    2.文件检测相关方法:

    3.获取常规文件信息:

    4.文件操作相关的方法:

    5.目录操作相关方法:

    #####2.以下java程序的运行结果是()

    public class HelloSogou {

    public static synchronized void main(String[] a){

    Thread t = new Thread(){

    public void run(){Sogou();}

    };

    t.run();

    System.out.print("hello");

    }

    static synchronized void Sogou(){

    System.out.print("Sogou");

    }

    }

    3.关于以下程序代码的说明正确的是(X=102)

    public class HasStatic {

    private static int x = 100;

    public static void main(String[] args) {

    HasStatic hs1 = new HasStatic();

    hs1.x++;

    HasStatic hs2 = new HasStatic();

    hs2.x++;

    hs1=new HasStatic();

    hs1.x++;

    HasStatic.x--;

    System.out.println("x="+x);

    }

    }

    注释:这道题的重点是在于x是一个静态变量,静态变量的特点就是能实现数据共享,拥有两种访问方式,一种是通过类名.变量名来访问,另一种就是创建该类的对象来访问

    4.有以下代码片段:

    String str1 = "hello";

    String str2 = "he"+new String("llo");

    System.out.println(str1==str2);

    输出结果是(false)

    注释:String str1="hello"这样创建的字符串是存在于常量池中的;new String("llo")对象是存在于堆中;==是验证两个对象是否一个地址。

    5.在java中,对于不在使用的内存资源,如调用完成的方法,“垃圾回收器”会自动将其释放(B)

    a.正确      b.错误

    注释:因为在方法调用的时候,会创建栈帧在栈中,而垃圾回收器(gc)主要针对堆区。

    引用:JVM内存可简单分为三个区:

        a.堆区(heap):用于存放所有对象,是线程共享的,数组也属于对象

        b.方法区(method):用于存放类信息,常量,静态变量,编译后的字节码等,是线程共享的

        c.栈区(stack):用于存放基本数据类型的数据和对象的引用,是线程私有的

    java的垃圾回收器只针对堆区。

    6.经过强制类型转换后,变量a,b的值分别是多少?

    short a = 128;

    byte b = (byte) a;

    short是16位的所以他转换成二进制就是0000  0000  1000 0000,强制类型转换后只截取后八位即就是10000000,正数用源码表示,负数用补码表示,第一位是符号;因此a截取后8位的二进制是10000000,第一位是1,表示是一个负数,所以结果是-128。a=128,b=-128。

    7.java哈希值

            (1)关于HashMap的一些说法:

    a.HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。HshMap的底层结构是一个数组,数组中的每一项是一条链表。

    b.HashMap的实例有两个参数影响其性能:“初始容量”和“装填因子”。

    c.HashMap实现不同步,线程不安全。而HashTable线程安全。

    d.HashMap中的Key-value都是存储在Entry中的。

    e.HashMap可以存null键和null值,不保证元素的顺序恒久不变,他的底层使用的是数组和链表,通过HashCode()方法和equals()方法来保证键的唯一性。

    f.解决冲突主要有三种方法:“定址法”,“拉链法”,“再散列法”。HashMap是采用拉链法来解决哈希冲突的。

            (2)HashMap和HashTable的区别

    a.继承不同

    HashTable:

    public  class  HashTable  extends  Dictionary implements  Map

    HashMap:

    public  class HashMap  extends  AbstractMap  implements  Map

    b.HsahTable中的方法是同步的。在多线程并发的环境下,可以直接使用HashTable,但是要使用HsahMap的话就要自己增加同步处理。

    c.HsahTable中Key和value都不允许出现null值。但在HashMap中,null可以作为键,这样的键只有一个;但可以有一个或多个键对应的值是null。所以当get()方法返回null时,既可以表示HashMap中么有该键,也可以表示该键所对应的值为null,因此在HashMap中不能有get()方法来判断HashMap中是否存在某个键,而应该用containsKey()方法来判断。

    d.两个遍历方式的内部实现上不同。

    e.哈希值的使用不同

    HsahTable直接使用对象的hashcode,而HashMap重新计算Hash值。

    f.HsahTable和HsahMap他们两个内部实现方法的数组的初始化大小和扩容方式。HsahTable中Hash数组默认大小是11,增加的方式是old*2+1;HashMap中Hash数组的默认大小是16,而且一定是2的指数。

    8.假设A类有如下定义,设a类是A类的一个实例,下列语句调用哪个是错误的?(c)

    public  class  A

    {

        piblic int i ;

        static String s ;

        void method1 ( ) { }

        static void method2 ( ) { }

    }

    A.System.out.println(a.i);              B.a.method1( );

    C.A.method 1 ( ) ;                          D.A.method2( );

    解释:静态成员和静态方法,可以直接通过类名进行调用;其他的成员和方法,只能通过进行实例化对象后,通过对象来调用,method1方法不是静态方法所以不能直接用类名来调用。而static修饰的成员变量和方法,既可以通过类名来调用,还可以通过实例对象调用。

    9.有关线程的叙述正确的是(c)

    A.可以获得对任何对象的互斥锁定

    B.通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定

    C.线程通过使用synchronized关键字可获得对象的互斥锁定、

    D.线程的创建只能通过继承Thread类来实现

    10.程序继承时顺序是:静态块》构造快》构造方法》main()。

    11.int i  = 5;

    int s  =  (i++)+(++i)+(i--)+(--i);

    s=( )

    首先i++时i依然是5,在运算++i时,i变为了6,所以第二个括号值变为7,第三个括号时值依然是7,但在运算第四个括号时变为6进行运算即变成了5,所以上式就可以写成(5+7+7+5)=24。

    12.instanceof可用来判断某个实例变量是否属于某种类的类型,还可以判断某个类是否属于某个类的子类的类型。

    13.下面那些接口直接继承自collection接口(AC)。

    A.list          B.Map        C.Set        D.Interator

    collection接口包括:1.List接口:内容允许重复,2.Set接口:内容不允许重复,3.Queue接口:队列接口,4.sortedset接口:单值排序接口。

    Map接口包括:1.HashMap接口:无序存放,key不重复。2.HashTable接口:无序存放。key不重复。3.TreeMap接口:按key排序,key不重复。4.IdentityHashMap接口:key可重复。5.weakHashMap接口:弱引用Map集合。

    14.下列说法错误的有(ACD)。

    A.在类方法中可以用this来调用本类的类方法。

    B.在类方法调用本类的类方法时可以直接调用。

    C.在类方法中,只能调用本类的类方法。

    D.在类方法中绝对不能调用实例方法。

    解释:首先我们要知道类方法是什么?类方法就是使用static修饰的方法。所以对于A选项来说,static修饰的方法中是没有this指针的,所以错误。对于B来说,静态成员函数可以直接引用该类的静态成员变量和函数,但不能直接引用非静态成员变量(若要引用,则需通过传递参数的方式得到对象名)故B对。选项C,可以通过继承来调用父类的类方法。选项D,在类方法中不能直接调用实例方法,但可以在类方法中new一个对象然后通过this来调用实例方法。

    15.针对以下代码,那些选项执行后是true的(BC)

    class  CompareReference{

        public static void main(String  [] args){

            float f = 42.0f;

            float f1[ ] = new float[ 2 ] ;

            float f2 [ ] = new float[ 2 ] ;

            float [ ] f3 = f1;

            long x= 42;

            f1 [ 0 ] = 42.0f;

        }

    }

    A.f1==f2        B.x=f1[0]        C.f1==f3        D.f2==f1[1]

    B:long和float比较,相当于两个float比较,x将会转为float所以相等。

    C:f1==f3,f3没有new创建,而是由f1直接赋值,所以f3地址值是指向f1的,f1值改变,相当于f3值,所以相等。

    byte---short---int---long---float---double

    相关文章

      网友评论

          本文标题:051错误整理改正

          本文链接:https://www.haomeiwen.com/subject/frjqlqtx.html