當前位置:首頁 » 編程語言 » java8種

java8種

發布時間: 2022-03-08 23:51:18

java 8種基礎類型的使用

事實上8種類型,我們只有4種經常用,另外4中在工作中基本不用,常用的4中是int、long、double、boolean,int多用於循環體,如:for(int i;i<100;i++)等,long用於金額,如:銀行業的核定貸款金額、額度等,double就是用於利率等待小數點的,float工作中基本都不用,boolean通常在初始我們會定義為false,boolean flag=flase;

❷ 簡述java的8種基本數據類型

java基本數據類型就8種,記住就好了。除了這些都是引用型的了。
java四類八種基本數據類型
第一類:整型 byte short int long
第二類:浮點型 float double
第三類:邏輯型 boolean(它只有兩個值可取true false)
第四類:字元型 char
在棧中可以直接分配內存的數據是基本數據類型。
引用數據類型:是數據的引用在棧中,但是他的對象在堆中。
要想學好Java必須知道各種數據的在內存中存儲位置。 對內存有了很好的了解,可以有助你分析程序。
位元組:
boolean 布爾型 1/8
byte 位元組類型 1
char 字元型 2 一個字元能存儲一個中文漢字
short 短整型 2
int 整數類型 4
float 浮點類型(單精度) 4
long 長整形 8
double 雙精度類型(雙精度) 8
java中默認的整數類型是int類型,如果要定義為float型,則要在數值後加上l或L;
默認的浮點型也是雙精度浮點,如果要定義為float型,則要在數值後加上f或F。

一個位元組等於8位,一個位元組等於256個數,就是-128到127一共256。
kB就是kBytes Bytes就是「位元組」的意思!
K就是千的意思,因為計算機是通過二進制來計算,10個1正好是1024
1111111111(二進制)=1024(十進制)
1Bytes(位元組)=8bit(比特)
一個英文字母或一個阿拉伯數字就是一個字元,佔用一個位元組
一個漢字就是兩個字元,佔用兩個位元組。
一般講大小是用Bytes,大寫的「B」,講網路速率是用bit,注意是小寫的「b」。
例:一個文件有8MBytes
例:我下載文件的速率是256KB/s,即2Mbit,這通常就是我們寬頻上網的速率。

基本數據類型自動轉換
byte->short,char -> int -> long
float -> double
int -> float
long -> double
記住:小可轉大,大轉小會失去精度!!!

❸ java只有8種數據類型對嗎

摘要 你好親~java有8種基本數據類型

❹ Java9都快發布了,Java8的十大新特性你了解多少呢

一、Lambda表達式

Lambda表達式可以說是Java 8最大的賣點,她將函數式編程引入了Java。Lambda允許把函數作為一個方法的參數,或者把代碼看成數據。

一個Lambda表達式可以由用逗號分隔的參數列表、–>符號與函數體三部分表示。例如:

Arrays.asList( "p", "k", "u","f", "o", "r","k").forEach( e -> System.out.println( e ) );

1 Arrays.asList( "p", "k", "u","f", "o", "r","k").forEach( e -> System.out.println( e ) );

為了使現有函數更好的支持Lambda表達式,Java
8引入了函數式介面的概念。函數式介面就是只有一個方法的普通介面。java.lang.Runnable與java.util.concurrent.Callable是函數式介面最典型的例子。為此,Java
8增加了一種特殊的註解@FunctionalInterface:

1 @FunctionalInterface
2 public interface Functional {
3 void method();
4 }

二、介面的默認方法與靜態方法

我們可以在介面中定義默認方法,使用default關鍵字,並提供默認的實現。所有實現這個介面的類都會接受默認方法的實現,除非子類提供的自己的實現。例如:

1 public interface DefaultFunctionInterface {
2 default String defaultFunction() {
3 return "default function";
4 }
5 }

我們還可以在介面中定義靜態方法,使用static關鍵字,也可以提供實現。例如:

1 public interface StaticFunctionInterface {
2 static String staticFunction() {
3 return "static function";
4 }
5 }

介面的默認方法和靜態方法的引入,其實可以認為引入了C++中抽象類的理念,以後我們再也不用在每個實現類中都寫重復的代碼了。

三、方法引用

通常與Lambda表達式聯合使用,可以直接引用已有Java類或對象的方法。一般有四種不同的方法引用:

構造器引用。語法是Class::new,或者更一般的Class< T >::new,要求構造器方法是沒有參數;

靜態方法引用。語法是Class::static_method,要求接受一個Class類型的參數;

特定類的任意對象方法引用。它的語法是Class::method。要求方法是沒有參數的;

特定對象的方法引用,它的語法是instance::method。要求方法接受一個參數,與3不同的地方在於,3是在列表元素上分別調用方法,而4是在某個對象上調用方法,將列表元素作為參數傳入;

四、重復註解

在Java 5中使用註解有一個限制,即相同的註解在同一位置只能聲明一次。Java
8引入重復註解,這樣相同的註解在同一地方也可以聲明多次。重復註解機制本身需要用@Repeatable註解。Java
8在編譯器層做了優化,相同註解會以集合的方式保存,因此底層的原理並沒有變化。

五、擴展註解的支持

Java 8擴展了註解的上下文,幾乎可以為任何東西添加註解,包括局部變數、泛型類、父類與介面的實現,連方法的異常也能添加註解。

六、Optional

Java 8引入Optional類來防止空指針異常,Optional類最先是由Google的Guava項目引入的。Optional類實際上是個容器:它可以保存類型T的值,或者保存null。使用Optional類我們就不用顯式進行空指針檢查了。

七、Stream

Stream
API是把真正的函數式編程風格引入到Java中。其實簡單來說可以把Stream理解為MapRece,當然Google的MapRece的靈感也是來自函數式編程。她其實是一連串支持連續、並行聚集操作的元素。從語法上看,也很像linux的管道、或者鏈式編程,代碼寫起來簡潔明了,非常酷帥!

八、Date/Time API (JSR 310)

Java 8新的Date-Time API (JSR 310)受Joda-Time的影響,提供了新的java.time包,可以用來替代
java.util.Date和java.util.Calendar。一般會用到Clock、LocaleDate、LocalTime、LocaleDateTime、ZonedDateTime、Duration這些類,對於時間日期的改進還是非常不錯的。

九、JavaScript引擎Nashorn

Nashorn允許在JVM上開發運行JavaScript應用,允許Java與JavaScript相互調用。

十、Base64

在Java 8中,Base64編碼成為了Java類庫的標准。Base64類同時還提供了對URL、MIME友好的編碼器與解碼器。

除了這十大新特性之外,還有另外的一些新特性:

更好的類型推測機制:Java 8在類型推測方面有了很大的提高,這就使代碼更整潔,不需要太多的強制類型轉換了。

編譯器優化:Java 8將方法的參數名加入了位元組碼中,這樣在運行時通過反射就能獲取到參數名,只需要在編譯時使用-parameters參數。

並行(parallel)數組:支持對數組進行並行處理,主要是parallelSort()方法,它可以在多核機器上極大提高數組排序的速度。

並發(Concurrency):在新增Stream機制與Lambda的基礎之上,加入了一些新方法來支持聚集操作。

Nashorn引擎jjs:基於Nashorn引擎的命令行工具。它接受一些JavaScript源代碼為參數,並且執行這些源代碼。

類依賴分析器jdeps:可以顯示Java類的包級別或類級別的依賴。

JVM的PermGen空間被移除:取代它的是Metaspace(JEP 122)。

❺ Java8有哪些新特性

一、lambda表達式
二、函數介面
三、介面的默認方法和靜態方法
四、註解
五、參數名稱
六、容器:Optional(可選的)
七、日期
八、Stream

❻ java中4類8種都是什麼

指的是數據類型,4類:整型,浮點,邏輯,字元。8種:是指具體的

❼ 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();
}
}

❽ java中的八種基本類型是哪些

數值型:

  • 整數型:byte、short、int、long

  • 浮點型:float、double

布爾型:

boolean

字元型:

char

❾ java是八種基本數據類型還是九種

你好,是八種。
int float double short long boolean char byte。
有人說9種,估計是把String算進去了,String是類 其對象屬於引用類型。

❿ 64位的java 8是什麼

一、ava8是java的全新升級包,java8包含新功能、增強功能和 bug 修復,可以提高開發和運行 Java 程序的效率。新版的發布,給我們帶來的新的驚喜,其對於程序的支持讓用戶設計開發更加效率。

二、 java8新特性介紹:Lambda 表達式和虛擬擴展方法,Java SE 8 的突出顯示功能是適用於 Java 編程語言和平台的 Lambda 表達式和支持功能的實現。

三、日期和時間 API;此新的 API 將允許開發人員以一種更自然、更清晰、更易於理解的方式處理日期和時間。

四、Nashhorn JavaScript 引擎;JavaScript 引擎的一種新的高性能小型實現,它集成到 JDK 並且通過現有 API 提供給 Java 應用程序。

五、提高安全性;將現有的調用方敏感方法的人工維護列表替換為一種機制,以便准確標識此類方法並允許可靠地搜索其調用方。

軟體截圖

熱點內容
python3字元串格式 發布:2025-01-14 00:43:29 瀏覽:581
openwrt編譯模塊 發布:2025-01-14 00:40:25 瀏覽:384
長江存儲中芯國際 發布:2025-01-14 00:33:11 瀏覽:150
安卓手機怎麼樣測通路 發布:2025-01-14 00:30:50 瀏覽:464
uImage編譯 發布:2025-01-14 00:23:37 瀏覽:39
php繁體簡體 發布:2025-01-14 00:22:45 瀏覽:376
雷克薩斯es200哪個配置值得買 發布:2025-01-14 00:14:34 瀏覽:784
python可以開發游戲嗎 發布:2025-01-14 00:14:28 瀏覽:484
我的世界電腦版決戰斗羅伺服器怎麼玩 發布:2025-01-14 00:14:26 瀏覽:321
python時序圖 發布:2025-01-14 00:10:46 瀏覽:961