A. 裝了java8需要把java7卸了嗎
個人覺得沒有必要卸載;之前是用java7,現在安裝了java8,機器當前的JAVA相關環境變數設成8了;刪除JAVA7,某些應用程序的配置可能繼續指向java7的安裝路徑的時候,將報錯。
B. java8和java7可以同時存在嗎
可以的。只要你運行的時候指定java的路徑,默認是你path下的那一個。
C. 下載的明明是Java8可顯示的是Java7怎麼辦
有一種可能性,就是本身你的電腦中有jdk7存在。這時候,你需要卸載電腦中已有的jdk1.7,然後再裝jdk1.8.
D. java7,8的幾個特性(自己的理解,大神們多指
JDK 1.7部分新特性
1)switch支持String類型 本質上是對int類型的匹配,
實現原理為:通過case後面的str對象調用hashcode()方法,得到一個int類型的hash值,然後用這個hash值來唯一標識這個case.當匹配時,首先調用這個字元串的hashcode()方法,獲得一個hash值,用這個hash值與case匹配,若沒有則不存在,若有則接著調用equals()方法進行匹配。String變數不能為null ,case後的字元串也不能為null ,否則會出現NullPointerException.
2)可以在catch中捕獲多個異常
3)對數值字面量進行了改進
增加了二進制字面量的表示 0B001 0b001
在數字中可以添加分隔符 123_456 下劃線只能用在數字中間 編譯時被去掉
4)使用泛型的時候增加了類型推斷機制
java7之前
Map<String,String> map = new HashMap<String,String>();
java7引進類型推斷後
Map<String,String> map = new HashMap<>();
5)增加了 try-with-resources語句 (聲明一個或多個資源的try語句)
資源指在使用完成後,必須關閉釋放的對象,try-with-resources語句確保在該語句執行之後關閉每個資源
try(InputStreamfis=newFileInputStrean("input.txt");){while(fis.read()!=1){
System.out.println(fis.read());
}
}catch(Exceptione){
e.printStackTrace();
}
DK 1.8 部分新特性
1)增加了Lambda表達式的支持 Lambda表達式是一個匿名函數 允許把函數作為一個方法的參數
示例
Arrays.AsList(2,8,1).forEach(i->System.out.println(i));//1
Arrays.AsList(2,8,1).forEach((Integeri)->System.out.println(i));//2
在java8以前 對於列表的排序 如果有自定義的類 則需要制定自定義的排序方法
Person[]people={newPerson("Iack",22),newPerson("Tony",35)};
Arrays.sort(people,newComparator<Person>(){//自定義排序方法new一個Conparator重寫compare方法
@Overridepublicintcompare(Persona,Personb){returna.getAge()-b.getAge();
}
});for(Personp:people){
System.out.println(p);
}
Lambda表達式
Arrays.sort(people,(Persona,Personb)->a.getAge()-b.getAge());
Arrays.sort(people,(a,b)->a.getAge()-b.getAge());
Lambda表達式是通過函數式介面實現的 (只有一個方法的普通介面)。函數式介面可以隱式的轉換為Lambda表達式,為了與普通的介面區分開,增加了註解@FunctionalInterface
@FunctionalInterfaceinterface
fun{
voidf();
}
2)介面增加了方法的默認實現和靜態方法 JDK1.8通過使用關鍵字 default可以給介面中的方法添加默認實現,此外,介面中還可以定義靜態方法。
interfaceIn8{
voidf();
defaultvoidg(){
System.out.println("default");
}
staticvoidh(){
System.out.println("static");
}
}
引入介面默認方法實現 是為了實現介面升級 在原有的設計中,如果想要升級介面,例如給介面中添加一個新的方法,會導致所有實現這個介面的類都需要被修改。
3)方法引用 方法引用指的是可以直接使用java類或對象的方法
Arrays.sort(people,Comparator.comparing(Person::getAge));
方法引用共有下面四種方式
引用構造方法 ClassName::new
引用類靜態方法 ClassName::methodName
引用特定類的任意對象方法 ClassName::methodName
引用某個對象的方法 instanceName::methodName
4)註解
JDK 1.5中引入了註解機制 但有限制 相同註解在同一位置只能聲明一次 JDK 1.8中引入了重復註解機制後,相同的註解在同一個地方可以聲明多次
擴展註解使用范圍 可以給局部變數 泛型 和方法異常等提供註解
5)加強了類型推測機制
6)參數名字 在編譯時增加 -parameters選項 以及增加反射API 與 Parameter.getName()方法實現了獲取方法參數名的功能
7)新增optional類 處理空指針
8)新增Stream類 和函數式編程統一
9)日期新特性
10)增加了調用javaScript的引擎
11)Base64 字元編碼格式 用來作為電子郵件 或webService附件的傳輸編碼
12)並行數組
更多的特性,請J對比JAVA下7以及8的JDK的相關內容
E. Java7與Java8是同一軟體嗎
JAVA7和JAVA8是JAVA的不同版本,主要是JAVA的API不同,對用戶的區別可能是有些類庫的變化,不如新增加了一些類庫,改變了一些類庫的設計,也有可能廢棄一些類庫。
F. java7和java8什麼區別
8增加了一些新特性,但之前做的項目用的是7,一般不會因為8出了新特性而更換JDK。一段時間內,8不會大規模取代7。
有些項目還停留在jdk1.4或者1.5,我接觸的jdk1.6比較多,7也並不是使用優勢多大
另外,我不知道題主這問題到底想做什麼0.0
G. java7和java8有什麼區別
8增加了一些新特性,但之前做的項目用的是7,一般不會因為8出了新特性而更換JDK。一段時間內,8不會大規模取代7。
有些項目還停留在jdk1.4或者1.5,我接觸的jdk1.6比較多,7也並不是使用優勢多大
另外,我不知道題主這問題到底想做什麼0.0
H. 現在主流是使用java8還是java7
目前來說,7比8多,因為8出來比較晚,雖然8增加了一些新特性,但之前做的項目用的是7,一般不會因為8出了新特性而更換JDK。一段時間內,8不會大規模取代7。
有些項目還停留在jdk1.4或者1.5,我接觸的jdk1.6比較多,7也並不是使用優勢多大
另外,我不知道題主這問題到底想做什麼0.0
I. 為什麼不同的Java 7和Java 8之間isAnnotation present工作
相對於java7,Java8的新特性如下:
一、介面的默認方法;
Java 8允許給介面添加一個非抽象的方法實現,只需要使用 default關鍵字即可,這個特徵又叫做擴展方法。
二、Lambda 表達式;
三、函數式介面;
四、方法與構造函數引用;
五、Lambda 作用域
在lambda表達式中訪問外層作用域和老版本的對象中的方式很相似。你可以直接訪問標記了final的外層局部變數,或者實例的欄位以及靜態變數
六、訪問局部變數
可以直接在lambda表達式中訪問外層的局部變數。
J. java 8 的項目怎麼內嵌 java7
只能參考jdk1.6或者1.7改成代碼了。。。java8很多新特性在之前的版本是不兼容的。。