每次更新版本的原因主要是跟進Java語言自身的更新,比如第4版的泛型,在第一版的時候由於Java都沒有這個特性,所以是不寫的。
無所謂了,改動不大的。
貌似第一版都是關於Java1.0的,建議還是至少看第三版第四版。
❷ Java編程思想里的泛型實現一個堆棧類 分享
覺得作者寫得太好了,不得不收藏一下。
對這個例子的理解:
//類型參數不能用基本類型,T和U其實是同一類型。
//每次放新數據都成為新的top,把原來的top往下壓一級,通過指針建立鏈接。
//末端哨兵既是默認構造器創建出的符合end()返回true的節點。
復制代碼
代碼如下:
//:
generics/LinkedStack.java
//
A
stack
implemented
with
an
internal
linked
structure.
package
generics;
public
class
LinkedStack<T>
{
private
static
class
Node<U>
{
U
item;
Node<U>
next;
Node()
{
item
=
null;
next
=
null;
}
Node(U
item,
Node<U>
next)
{
this.item
=
item;
this.next
=
next;
}
boolean
end()
{
return
item
==
null
&&
next
==
null;
}
}
private
Node<T>
top
=
new
Node<T>();
//
End
sentinel
public
void
push(T
item)
{
top
=
new
Node<T>(item,
top);
}
public
T
pop()
{
T
result
=
top.item;
if(!top.end())
top
=
top.next;
return
result;
}
public
static
void
main(String[]
args)
{
LinkedStack<String>
lss
=
new
LinkedStack<String>();
for(String
s
:
"Phasers
on
stun!".split("
"))
lss.push(s);
String
ss;
while((ss
=
lss.pop())
!=
null)
System.out.println(ss);
//-----
if
put
integer
into
the
LinkedList
LinkedStack<Integer>
lii
=
new
LinkedStack<Integer>();
for(Integer
i
=
0;
i
<
10;
i++){
lii.push(i);
}
Integer
end;
while((end
=
lii.pop())
!=
null)
System.out.println(end);
//-----
integer
test
end!
}
}
/*
Output:
stun!
on
Phasers
*/
❸ JAVA編程思想一共有幾章
22章
1:對象導論;
2:一切都是對象
3:操作符
4:控制執行流程
5:初始化與清理
6:訪問許可權控制
7:復用類
8:多態
9:介面
10:內部類
11:持有對象
12:異常處理.
13:字元串
14:類型信息
15:泛型
16:數組
17:容器深入研究
18:java I/O系統
19:枚舉類型
20:註解
21:並發
22:圖形化用戶界面(基本用不上)
❹ 什麼是泛型編程思想
不是相同的東西
無法對比
泛型
賦予了類型參數式多態的能力
泛型的第一個好處是編譯時的嚴格類型檢查。這是集合框架最重要的特點。此外,泛型消除了絕大多數的類型轉換。如果沒有泛型,當你使用集合框架時,你不得不進行類型轉換。
❺ java泛型介面是怎麼一回事,干什麼用的
這個啊 泛型好處多了。
有了泛型 你可以再hashtable中存任何類型的value 包括自定義的類
例如。有一個類是 class client{}
Hashtable<String ,client> ht = new Hashtable<String ,client>();
很方便的東西。讓你代碼更完美的。
=============================接話獻佛========================
應該是我很久沒有好好學技術了,有時候想用的時候卻發現不會寫,比如今天遇到了泛型介面,所以要記錄一下,這樣才能更明白...
在這里我並不想說泛型介面怎麼寫,這個很簡單,後面會寫的,只是想說我為什麼要用.
泛型介面的意圖是什麼?請看如下的問題:
Java代碼
abstract class BaseBean{
//略
}
Interface IA{
public BaseBean doSomething();
}
下面我們繼承這個BaseBean
Java代碼
class ChildBean extends BaseBean{
}
接下來實現介面
Java代碼
class IAImpl implements IA{
public BaseBean doSomething(){
return new ChildBean();
}
}
好了這是慣常的寫法,但是同學們有沒有發現一個問題當你返回得到BaseBean的時候其實你需要的是他的實例而不是這個真實的Bean,而當你強轉時又需要注意兩點: NullPoint 和 類型是否對,這個很麻煩,因為調用者完全不知道調用什麼.那麼我們來描述我們需要什麼:
我們需要IA的doSomething返回的是一個對象這個對象extends於BaseBean
那麼接下來我們就用泛型介面吧:
Java代碼
Interface IA<T extends BaseBean>{
public T doSomething();
}
class IAImpl implements IA<ChildBean>{
public ChildBean doSomething(){
return new ChildBean();
}
}
這樣當你調用這個實現的時候就能明確地得到返回的對象類型,清楚明了,這就是泛型介面的使用.其實我們平時一直在用的 Iterable就是這玩意大家可以去看下. 回家准備讀下java編程思想中的相關段落.
總結今天收獲很大,這里要感謝下靈芝同學給我的幫助,是她告訴了我,我所想要的東西叫泛型介面,感謝...
下次等我把泛型都再重新回爐下,再來把泛型的其他東西講來聽聽...
❻ 「java」語言與其他的語言相比有什麼優點
具體如下:
1、跨平台性,雖然是很好的優勢,可以讓JAVA在任何的系統中運行,但是前提是該系統要安裝JAVA虛擬機,這樣導致一些JAVA編寫的桌面程序無法在一般的用戶(沒有安裝JAVA虛擬機的用戶)上使用
2、JAVA的身後是SUN公司,提供及時的API更新,但是過多的版本導致JAVA的向下兼容性很差。而SUN公司在J2EE上的標準定義的並不是完美,導致在J2EE的開發中多數使用開源框架,開源框架是好東西,但是更新速度並不快。
3、都說面向對象的語言先進與面向過程,JAVA是OOP語言,但是它適合的是BS系統,在WEB項目中JAVA的實力毋庸置疑,但是轉到了底層的程序卻無法同C++抗衡。
4、個人認為JAVA的最大優點是開源,但是這往往也成了最大的缺陷了,無法定義一個好的標准使得開發時使用了框架,在新的程序員來到公司時必須先了解框架,延緩了開發的時間。
❼ java編程思想第五版
《java編程思想》是埃克爾著的一本教科類書籍。該書的作者擁有多年教學經驗,對C、C++以及Java語言都有獨到、深入的見解,以通俗易懂及小而直接的示例解釋了一個個晦澀抽象的概念。該書共22章,包括操作符、控制執行流程、訪問許可權控制、復用類、多態、介面、通過異常處理錯誤、字元串、泛型、數組、容器深入研究、JavaI/O系統、枚舉類型、並發以及圖形化用戶界面等內容。
❽ java編程思想第四版里的泛型那一章代碼打在電腦里 為什麼會報錯 我用的
class ProcessRunner<T, E extends Exception> extends ArrayList<Processor<T, E>> {
List<T> resultCollector = new ArrayList<T>();
for (Processor<T, E> processor : this) {
processor.process(resultCollector);
}
return resultCollector;
}
這里語法發生了錯誤,for循環寫在類中,本來應該寫在方法中。