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的开闭原则,因为接口是一种模板,既然是模板,那就对修改开闭,对扩展开放。