题库 java_java题库
1.public class T {
int squares=81;
public static void main(String[] args) {
new T().go();
}
void go(){
incr(++squares);
System.out.println(squares);
}
void incr(int squares){
squares+=10;
}
返回值為82,沒(méi)有改變squares的值,不是引用傳遞不是c++
2.建個(gè)test類(lèi) 在cmd中運(yùn)行時(shí)輸入java test a b c,并且在你的main函數(shù)里面加這段話:System.out.println("arg is"+args[0]+" "+args[1]+" "+args[2]),然后看看輸出是什么?
是不是:
This is a simple Java program
arg is a b c
3.最后總結(jié)一下平常遇到的比較常見(jiàn)的將對(duì)象判定為可回收對(duì)象的情況:
1)顯示地將某個(gè)引用賦值為null或者將已經(jīng)指向某個(gè)對(duì)象的引用指向新的對(duì)象,比如下面的代碼:
Object obj = new Object();
obj = null;
Object obj1 = new Object();
Object obj2 = new Object();
obj1 = obj2;
2)局部引用所指向的對(duì)象,比如下面這段代碼:
void fun() {
.....
for(int i=0;i<10;i++) {
Object obj = new Object();
System.out.println(obj.getClass());
}
}
循環(huán)每執(zhí)行完一次,生成的Object對(duì)象都會(huì)成為可回收的對(duì)象。
3)只有弱引用與其關(guān)聯(lián)的對(duì)象,比如:
WeakReference wr = new WeakReference(new String("world"));
4.ArrayList x2=new ArrayList();編譯失敗
5. ? sacnaner scanner=new Scanner("one ,5,true,3,true,6,7,false");
scanner.useDelimiter(",");
while(scanner.hasNext()){
if(scanner.hasNextBoolean()){
system.out.print(scanner.next()+" ");
}else{
scanner.nextBoolean();}
6.java的this和super只能用在非靜態(tài)的方法
7.子類(lèi)和父類(lèi)有相同的成員變量時(shí),存在兩個(gè),用類(lèi)名引用
8.成員變量可以被繼承,如果沒(méi)有同名的成員變量,子類(lèi).成員變量名 可以訪問(wèn)父類(lèi)的成員變量
9.實(shí)現(xiàn)接口也可以認(rèn)為 cat ?implements jumper{} ?cat is-a jumper
10.
1. HashSet是通過(guò)HashMap實(shí)現(xiàn)的,TreeSet是通過(guò)TreeMap實(shí)現(xiàn)的,只不過(guò)Set用的只是Map的key
2. ?Map的key和Set都有一個(gè)共同的特性就是集合的唯一性.TreeMap更是多了一個(gè)排序的功能.
3. ?hashCode和equal()是HashMap用的, 因?yàn)闊o(wú)需排序所以只需要關(guān)注定位和唯一性即可.
a. hashCode是用來(lái)計(jì)算hash值的,hash值是用來(lái)確定hash表索引的.
b. hash表中的一個(gè)索引處存放的是一張鏈表, 所以還要通過(guò)equal方法循環(huán)比較鏈上的每一個(gè)對(duì)象 才可以真正定位到鍵值對(duì)應(yīng)的Entry.
c. put時(shí),如果hash表中沒(méi)定位到,就在鏈表前加一個(gè)Entry,如果定位到了,則更換Entry中的value,并返回舊value
4. 由于TreeMap需要排序,所以需要一個(gè)Comparator為鍵值進(jìn)行大小比較.當(dāng)然也是用Comparator定位的.
a. Comparator可以在創(chuàng)建TreeMap時(shí)指定
b. 如果創(chuàng)建時(shí)沒(méi)有確定,那么就會(huì)使用key.compareTo()方法,這就要求key必須實(shí)現(xiàn)Comparable接口.
TreeMap是使用Tree數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的,所以使用compare接口就可以完成定位了.
11.
WrappedString 的hashCode()是繼承自O(shè)bject類(lèi),而String的hashCode()時(shí)重寫(xiě)過(guò)的僅與字符串的內(nèi)容有關(guān)。ws1 和ws2存儲(chǔ)地址不同,所以hashCode()的返回值不同,而s1和s2字符串的內(nèi)容相同,哈希值相同。
12.
在實(shí)際開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)遇到需要使用對(duì)象,而不是內(nèi)置數(shù)據(jù)類(lèi)型的情形。為了解決這個(gè)問(wèn)題,Java語(yǔ)言為每一個(gè)內(nèi)置數(shù)據(jù)類(lèi)型提供了對(duì)應(yīng)的包裝類(lèi)。
所有的包裝類(lèi)(Integer、Long、Byte、Double、Float、Short)都是抽象類(lèi)Number的子類(lèi)。
Integer也有doublevalue的值
13.List extends String> list ;list.add("foo")錯(cuò)誤。
14.priorityqueue pq。pq.poll()獲取隊(duì)頭元素并移除。peek()獲取隊(duì)頭元素但是不移除。
15.enum中 ?ONE==ONE 和ONE.equals(ONE)都保證是true
16.
HashSet和HashMap的區(qū)別
HashMap**HashSet*
HashMap實(shí)現(xiàn)了Map接口HashSet實(shí)現(xiàn)了Set接口
HashMap儲(chǔ)存鍵值對(duì)HashSet僅僅存儲(chǔ)對(duì)象
使用put()方法將元素放入map中使用add()方法將元素放入set中
HashMap中使用鍵對(duì)象來(lái)計(jì)算hashcode值HashSet使用成員對(duì)象來(lái)計(jì)算hashcode值,對(duì)于兩個(gè)對(duì)象來(lái)說(shuō)hashcode可能相同,所以equals()方法用來(lái)判斷對(duì)象的相等性,如果兩個(gè)對(duì)象不同的話,那么返回false
HashMap比較快,因?yàn)槭鞘褂梦ㄒ坏逆I來(lái)獲取對(duì)象HashSet較HashMap來(lái)說(shuō)比較慢
17.
TreeSet是依靠TreeMap來(lái)實(shí)現(xiàn)的,TreeMap是有平衡二叉樹(shù)來(lái)實(shí)現(xiàn)的
18
subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive)
返回此 set 的部分視圖,其元素范圍從 fromElement 到 toElement。
TreeSet s=new TreeSet();
TreeSet subs=new TreeSet();
for(int i=606;i<613;i++)
{
if(i%2==0)
s.add(i);
}
subs=(TreeSet)s.subSet(608, true,611,true);
s.add(609);
System.out.println(s+" "+subs);
[606, 608, 609, 610, 612] [608, 609, 610]
19.
Arrays.binarySearch()如果沒(méi)有查找到,返回最大長(zhǎng)度
20.
sortedSet只是個(gè)接口,只有treeset可用
21.
總結(jié)
以上是生活随笔為你收集整理的题库 java_java题库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Less Css 教程
- 下一篇: 计算机专业必备基础知识500题,计算机基