❶ 要個java api1.8文檔

在線:http://docs.oracle.com/javase/8/docs/api/ 下載:

❷ 安裝了java 8,怎麼找到自帶的API文檔

可以給你一個 你下載就行了, 附件裡面是中文版本的java的api, 對初學者或者英文基礎不好的很有幫助。api裡麵包括了所有java的類、介面、類裡面的方法說明和使用的介紹。 非常詳細, 是java學習不可缺少的資料。

❸ 如何使用Java 8的流介面解析文件

讀取器會按照這樣的協議來讀取:文件頭是一個字元串列表,而記錄集是一個字元串列表的列表。讀取器接受一個java.io.Reader對象用為讀取來源。 先從讀取文件頭開始。讀取文件頭的演算法如下: - 打開資源准備讀取。 - 讀取第一行然後解析 - 將行按分隔符分割。 - 將該行轉化成一個字元串列表後返回 下面是它的實現。
class CsvReader {

private static final String SEPARATOR = ";";

private final Reader source;

CsvReader(Reader source) {
this(source);
}
List<String> readHeader() {
try (BufferedReader reader = new BufferedReader(source)) {
return reader.lines()
.findFirst()
.map(line -> Arrays.asList(line.split(SEPARATOR)))
.get();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}

相當簡單,自我解釋型的。類似的,創建了一個方法來讀取所有的記錄。讀取記錄的演算法如下:
打開資源文件進行讀取
跳過首行
用分隔符分割行。
對每行應用一個map操作,將行映射到一個字元串列表
下面是它的實現:
class CsvReader {

List<List<String>> readRecords() {
try (BufferedReader reader = new BufferedReader(source)) {
return reader.lines()
.substream(1)
.map(line -> Arrays.asList(line.split(separator)))
.collect(Collectors.toList());
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}

會注意到兩個方法中的map是幾乎一樣的。事實上,它可以提取到一個變數裡面:
Function<String, List<String>> mapper
= line -> Arrays.asList(line.split(separator));

我寫了個測試來完成整個過程。
public class CsvReaderTest {

@Test
public void readsHeader() {
CsvReader csvReader = createCsvReader();
List<String> header = csvReader.readHeader();
assertThat(header)
.contains("username")
.contains("visited")
.hasSize(2);
}

@Test
public void readsRecords() {
CsvReader csvReader = createCsvReader();
List<List<String>> records = csvReader.readRecords();
assertThat(records)
.contains(Arrays.asList("jdoe", "10"))
.contains(Arrays.asList("kolorobot", "4"))
.hasSize(2);
}

private CsvReader createCsvReader() {
try {
Path path = Paths.get("src/test/resources", "sample.csv");
Reader reader = Files.newBufferedReader(
path, Charset.forName("UTF-8"));
return new CsvReader(reader);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
}

❹ JAVA的JDK和API有什麼關系

第一、JDK是開發包,是應用程序的開發環境;API應用程序編程介面,是一些預先定義的類,我們寫程序的時候可以直接使用這些已經被打包的類來做具體的應用。我們在搭建jdk的時候就包含了API

第二、你這個問題問的有點問題,java分為javase、javaee、javame用的jdk是同一個,開發javaEE,javame的時候還需要導入其他外來包

第三、我用的是myEclipse2013,jdk是用的1.7做個示範,window—>preference —> java —> 點擊Installed JREs—>右邊點擊Add —>雙擊Standard VM—>點擊Directory—>找到你JDK安裝目錄—>finish 選擇你導入的JDK就行了

個人的理解,希望能幫到你

❺ 用Java 8 增加的 Stream API 能實現哪些優雅的演算法

Java 8引入了全新的Stream API。這里的Stream和I/O流不同,它更像具有Iterable的集合類,但行為和集合類又有所不同。

Stream API引入的目的在於彌補Java函數式編程的缺陷。對於很多支持函數式編程的語言,map()、rece()基本上都內置到語言的標准庫中了,不過,Java 8的Stream API總體來講仍然是非常完善和強大,足以用很少的代碼完成許多復雜的功能。

創建一個Stream有很多方法,最簡單的方法是把一個Collection變成Stream。我們來看最基本的幾個操作:
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Stream<Integer> stream = numbers.stream();
stream.filter((x) -> {
return x % 2 == 0;
}).map((x) -> {
return x * x;
}).forEach(System.out::println);
}

集合類新增的stream()方法用於把一個集合變成Stream,然後,通過filter()、map()等實現Stream的變換。Stream還有一個forEach()來完成每個元素的迭代。

為什麼不在集合類實現這些操作,而是定義了全新的Stream API?Oracle官方給出了幾個重要原因:

一是集合類持有的所有元素都是存儲在內存中的,非常巨大的集合類會佔用大量的內存,而Stream的元素卻是在訪問的時候才被計算出來,這種「延遲計算」的特性有點類似Clojure的lazy-seq,佔用內存很少。

二是集合類的迭代邏輯是調用者負責,通常是for循環,而Stream的迭代是隱含在對Stream的各種操作中,例如map()。

要理解「延遲計算」,不妨創建一個無窮大小的Stream。

如果要表示自然數集合,顯然用集合類是不可能實現的,因為自然數有無窮多個。但是Stream可以做到。

自然數集合的規則非常簡單,每個元素都是前一個元素的值+1,因此,自然數發生器用代碼實現如下:
class NaturalSupplier implements Supplier<Long> {

long value = 0;

public Long get() {
this.value = this.value + 1;
return this.value;
}
}

反復調用get(),將得到一個無窮數列,利用這個Supplier,可以創建一個無窮的Stream:
public static void main(String[] args) {
Stream<Long> natural = Stream.generate(new NaturalSupplier());
natural.map((x) -> {
return x * x;
}).limit(10).forEach(System.out::println);
}

對這個Stream做任何map()、filter()等操作都是完全可以的,這說明Stream API對Stream進行轉換並生成一個新的Stream並非實時計算,而是做了延遲計算。

當然,對這個無窮的Stream不能直接調用forEach(),這樣會無限列印下去。但是我們可以利用limit()變換,把這個無窮Stream變換為有限的Stream。

利用Stream API,可以設計更加簡單的數據介面。例如,生成斐波那契數列,完全可以用一個無窮流表示(受限Java的long型大小,可以改為BigInteger):
class FibonacciSupplier implements Supplier<Long> {

long a = 0;
long b = 1;

@Override
public Long get() {
long x = a + b;
a = b;
b = x;
return a;
}
}

public class FibonacciStream {

public static void main(String[] args) {
Stream<Long> fibonacci = Stream.generate(new FibonacciSupplier());
fibonacci.limit(10).forEach(System.out::println);
}
}

如果想取得數列的前10項,用limit(10),如果想取得數列的第20~30項,用:
List<Long> list = fibonacci.skip(20).limit(10).collect(Collectors.toList());

最後通過collect()方法把Stream變為List。該List存儲的所有元素就已經是計算出的確定的元素了。

用Stream表示Fibonacci數列,其介面比任何其他介面定義都要來得簡單靈活並且高效。

❻ Java8的特性有哪些

1、函數式介面
Java 8 引入的一個核心概念是函數式介面(Functional Interfaces)。通過在介面裡面添加一個抽象方法,這些方法可以直接從介面中運行。如果一個介面定義個唯一一個抽象方法,那麼這個介面就成為函數式介面。同時,引入了一個新的註解:@FunctionalInterface。可以把他它放在一個介面前,表示這個介面是一個函數式介面。這個註解是非必須的,只要介面只包含一個方法的介面,虛擬機會自動判斷,不過最好在介面上使用註解 @FunctionalInterface 進行聲明。在介面中添加了 @FunctionalInterface 的介面,只允許有一個抽象方法,否則編譯器也會報錯。
java.lang.Runnable 就是一個函數式介面。
@FunctionalInterface
public interface Runnable {
public abstract void run();
}

2、Lambda 表達式
函數式介面的重要屬性是:我們能夠使用 Lambda 實例化它們,Lambda 表達式讓你能夠將函數作為方法參數,或者將代碼作為數據對待。Lambda 表達式的引入給開發者帶來了不少優點:在 Java 8 之前,匿名內部類,監聽器和事件處理器的使用都顯得很冗長,代碼可讀性很差,Lambda 表達式的應用則使代碼變得更加緊湊,可讀性增強;Lambda 表達式使並行操作大集合變得很方便,可以充分發揮多核 CPU 的優勢,更易於為多核處理器編寫代碼;
Lambda 表達式由三個部分組成:第一部分為一個括弧內用逗號分隔的形式參數,參數是函數式介面裡面方法的參數;第二部分為一個箭頭符號:->;第三部分為方法體,可以是表達式和代碼塊。語法如下:
1. 方法體為表達式,該表達式的值作為返回值返回。
(parameters) -> expression

2. 方法體為代碼塊,必須用 {} 來包裹起來,且需要一個 return 返回值,但若函數式介面裡面方法返回值是 void,則無需返回值。
(parameters) -> { statements; }
例如,下面是使用匿名內部類和 Lambda 表達式的代碼比較。

下面是用匿名內部類的代碼:
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.print("Helllo Lambda in actionPerformed");
}
});
下面是使用 Lambda 表達式後:
button.addActionListener(
\\actionPerformed 有一個參數 e 傳入,所以用 (ActionEvent e)
(ActionEvent e)->
System.out.print("Helllo Lambda in actionPerformed")
);

上面是方法體包含了參數傳入 (ActionEvent e),如果沒有參數則只需 ( ),例如 Thread 中的 run 方法就沒有參數傳入,當它使用 Lambda 表達式後:
Thread t = new Thread(
\\run 沒有參數傳入,所以用 (), 後面用 {} 包起方法體
() -> {
System.out.println("Hello from a thread in run");
}
);
通過上面兩個代碼的比較可以發現使用 Lambda 表達式可以簡化代碼,並提高代碼的可讀性。
為了進一步簡化 Lambda 表達式,可以使用方法引用。例如,下面三種分別是使用內部類,使用 Lambda 表示式和使用方法引用方式的比較:
//1. 使用內部類
Function<Integer, String> f = new Function<Integer,String>(){
@Override
public String apply(Integer t) {
return null;
}
};
//2. 使用 Lambda 表達式
Function<Integer, String> f2 = (t)->String.valueOf(t);
//3. 使用方法引用的方式
Function<Integer, String> f1 = String::valueOf;

要使用 Lambda 表達式,需要定義一個函數式介面,這樣往往會讓程序充斥著過量的僅為 Lambda 表達式服務的函數式介面。為了減少這樣過量的函數式介面,Java 8 在 java.util.function 中增加了不少新的函數式通用介面。例如:
Function<T, R>:將 T 作為輸入,返回 R 作為輸出,他還包含了和其他函數組合的默認方法。
Predicate<T> :將 T 作為輸入,返回一個布爾值作為輸出,該介麵包含多種默認方法來將 Predicate 組合成其他復雜的邏輯(與、或、非)。
Consumer<T> :將 T 作為輸入,不返回任何內容,表示在單個參數上的操作。
例如,People 類中有一個方法 getMaleList 需要獲取男性的列表,這里需要定義一個函數式介面 PersonInterface:
interface PersonInterface {
public boolean test(Person person);
}
public class People {
private List<Person> persons= new ArrayList<Person>();
public List<Person> getMaleList(PersonInterface filter) {
List<Person> res = new ArrayList<Person>();
persons.forEach(
(Person person) ->
{
if (filter.test(person)) {//調用 PersonInterface 的方法
res.add(person);
}
}
);
return res;
}
}
為了去除 PersonInterface 這個函數式介面,可以用通用函數式介面 Predicate 替代如下:
class People{
private List<Person> persons= new ArrayList<Person>();
public List<Person> getMaleList(Predicate<Person> predicate) {
List<Person> res = new ArrayList<Person>();
persons.forEach(
person -> {
if (predicate.test(person)) {//調用 Predicate 的抽象方法 test
res.add(person);
}
});
return res;
}
}

3、介面的增強
Java 8 對介面做了進一步的增強。在介面中可以添加使用 default 關鍵字修飾的非抽象方法。還可以在介面中定義靜態方法。如今,介面看上去與抽象類的功能越來越類似了。
默認方法
Java 8 還允許我們給介面添加一個非抽象的方法實現,只需要使用 default 關鍵字即可,這個特徵又叫做擴展方法。在實現該介面時,該默認擴展方法在子類上可以直接使用,它的使用方式類似於抽象類中非抽象成員方法。但擴展方法不能夠重載 Object 中的方法。例如:toString、equals、 hashCode 不能在介面中被重載。
例如,下面介面中定義了一個默認方法 count(),該方法可以在子類中直接使用。
public interface DefaultFunInterface {
//定義默認方法 countdefault int count(){
return 1;
}
}
public class SubDefaultFunClass implements DefaultFunInterface {
public static void main(String[] args){
//實例化一個子類對象,改子類對象可以直接調用父介面中的默認方法 count
SubDefaultFunClass sub = new SubDefaultFunClass();
sub.count();
}
}

靜態方法
在介面中,還允許定義靜態的方法。介面中的靜態方法可以直接用介面來調用。
例如,下面介面中定義了一個靜態方法 find,該方法可以直接用 StaticFunInterface .find() 來調用。
public interface StaticFunInterface {public static int find(){
return 1;
}
}
public class TestStaticFun {
public static void main(String[] args){
//介面中定義了靜態方法 find 直接被調用
StaticFunInterface.fine();
}
}

❼ 怎麼找到JDK8的API文檔

打開Oracle網站,拖動到網站最後,點擊「Download Java for Developers」。
怎麼在官網上下載JDK1.8 API Documentation?

這時我們就來到了「Oracle Technology Network / Java / Java SE / Downloads」界面,界面上方可以看到下載JDK的按鈕。
怎麼在官網上下載JDK1.8 API Documentation?

拖動到該界面下方,可以看到Java10和java8 API documentation下載按鈕,點擊它。
怎麼在官網上下載JDK1.8 API Documentation?

點擊「Accept License Agreement」。
怎麼在官網上下載JDK1.8 API Documentation?

點擊圖示中的zip包,開始下載啦。
怎麼在官網上下載JDK1.8 API Documentation?

下載完,解壓這個壓縮包,打開它,就會看到如下的文件和文件夾。
怎麼在官網上下載JDK1.8 API Documentation?

雙擊「index.html」或將它拖動到瀏覽器上,就可以查看離線API文檔啦。
怎麼在官網上下載JDK1.8 API Documentation?

❽ 求java API 1.8的中文幫助文檔

記得我回答過類似的問題,第一個鏈接裡面有Java 1.8的,但是是英文版的,1.6有中文版的

http://javadoc.allimant.org/

JDK1.6API中文版(全)
————————-
* HTML 格式(在線英文) http://java.sun.com/javase/6/docs/
* HTML 格式(在線中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html
* zip 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_zh_CN.zip
* CHM 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/chm/JDK_API_1_6_zh_CN.CHM
JDK1.5API中文版(全)
————————-
* HTML 格式(在線英文) http://java.sun.com/javase/5/docs/
* HTML 格式(在線中文) http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/index.html
* zip 格式(中文) http://gceclub.sun.com.cn/Java_Docs/html_zh_CN.zip
* CHM 格式(中文) http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/builds/JDK_API_1_5_zh_CN.CHM
目前在 http://developers.sun.com.cn 已正式宣布發布Java SE 6 API 中文版。
大家也可以從以下網址下載:
* HTML 格式 ( http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html/zh_CN/api/index.html )
* zip 格式 ( http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/html_zh_CN.zip )
* CHM 格式 ( http://download.java.net/jdk/jdk-api-localizations/jdk-api-zh-cn/publish/1.6.0/chm/JDK_API_1_6_zh_CN.CHM )

❾ JAVA:應用介面做8的n次冪和倍數運算程序

/**
* 定義介面
*
*/
public interface QiuMi {
//定義抽象方法
public long qiumi(int num);
public long beishu(int num);

}

/**
* 介面實現類
*
*/
public class QiuMiImpl implements QiuMi {
/*
* 實現介面中的方法
*/
public long qiumi(int num) {
long result = 1;
for (int i = 0; i <num; i++) {
result = result * 8;
}
return result;
}
public long beishu(int num){
return num*8;
}

/**
* 測試方法
*/
public static void main(String[] args) {
QiuMi mi = new QiuMiImpl();
long result = mi.qiumi(3);
System.out.println(result);
result = mi.beishu(2);
System.out.println(result);
}
}
夠詳細?