错题知识解析

1.ArrayLisrt/LinkList

①ArrayList和LinkList都是实现了List接口   ,② ArrayList底层是数组,所以查询快,增删慢。LinkList底层是链表,查询慢,增删快。

2.hashtable类是不允许null作键和值的。

3.

3.返回flase的语句是

String s = "hello";
String t ="hello";
char c[] ={'h','e','l','l','o'};

A.s.equals(t);  B t.equals(c)   c s==t;  d  t.equals(new String(“hello"));
B返回的值是flase

==是比较地址值是否相等,.equals()方法是比较值是否相等。  

String s  ='' hello''   首先在字符缓冲区,找到有没有hello,结果没有找到,就会创建了一个hello,然后引用是s。

String t = ''hello'' //会在字符串缓存区找hello,结果找到了,就赶回了引用,也就是s,所以这句话等同于 t = s ;所以两个因可用一样;所以t==s是true

Char c[ ]={'h','e','l','l','o'}这就是一个数组,而且数组是在堆上。

equlse 函数可以堪称源码,比较芝相等之前会比较类型是否相同?如果类型一样才会比较值;如果类型不一致,则会直接返回return flase;

//以下代码输出什么?
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 synachronized void Sogou(){
   System.out.print("Sougou");
   }
 }     
A HelloSougou   B SougouHello C Hello    D.结果不确定
//答案  B
//如果将run换成static则结果为HelloSogou

凡是使用synachronized标记的方法,则同时只有个一个线程可以运行这个方法、,例如一个线程正在运行t()方法,如果有其他线程需要运行t()方法。则会被卡住,必须当第一个线程运行完成后,其他线程才会有一个幸运儿获得资格,对于没有争取到的线程则需要继续等待。

第一点是run和start方法区别,调用run时只是单纯执行方法,故按代码顺序执行下来结果是SougouHello。

如果时把run换成start,结果则变成了HelloSougou,原因入下: 

    首先调用start是开始了一个线程,那么现在程序中有了两个线程,主线程main,和线程T,这就涉及到第二个知识点了,函数使用的锁为this(及对象本身),若函数被static修饰,则锁为 类名 .class。

   那么题目中两个函数都是用了同一个都即HelloSogou.class,当执行t.start时,t线程准备调用Sougou方法,但是锁对象已经被主线程占用,故要等待主线程执行完。所以时Hellosogou.

System.out.print(''Hello'')后释放锁才可以执行自己的Sougou方法,故此结果时HelloSogou.

6.方法没有继承一说,只有重载和重写 (在Java中,子类构造器会默认调用super()【无论构造器中是否有super()】,用于初始化父类成员,同时当父类中存在参数构造器时,必须提供无参构造器,子类构造器中并不会继承有参构造器,仍然默认调用super(),使用无参构造器,为此一个类想要被继承必须停工无参构造器。

ps:方法没有继承一说,只有重载和重写。

7 ,下面属于Java引用类型的有?

A String      B byte     C char      D Array                                                                                                                                                     

答案AD

java中的类型分为两种,基本类型和引用类型。

基本类型:byte  short int long float   double char  boolean   

引用类型:除了基本类型都是引用类型

8,

public interface IService {
  String NAME=''default'';
  }

与上面等价表示的是哪一项(D)?

A   public String NAME =’‘default’‘;

B public static  String NAME =''default'';

C private String NAME =''default'';

D public static final String NAME =''default'';

接口中 的变量会被隐士声明为 public static final  

接口中的方法会被隐士声明为:public abstract,并且也只能是 public   abstract。

接口是对一类事物的属性和行为更高层次的抽象------对修改关闭,对扩展开放。

①为什么要用public 因为接口必然是要被实现的,如果不是public,那这个属性就没有意义了?

②为什么是static,如果不是static,则每个接口都可以多继承。

?为什么是final,这是为了体现Java的开闭原则,因为接口是一种模板,既然是模板,那就对修改开闭,对扩展开放。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值