『壹』 java中創建對象的的兩種方式具體解釋,一個是new一個是調用Class類的newinstance方法
1、new
使用java的關鍵字new來創建對象實例。構造函數鏈中的所有構造函數都會被自動調用。
Java代碼:
CreateInstanceinstance=newCreateInstance();
2、clone
構造函數不被自動調用。
Java代碼:
{
(){
return(CreateInstance)this.clone();
}
}
如果需要復制上面的那個obj指向的對象實例時,調用new CreateInstance().getInstance()方法就ok了。
JDK中Object# clone()方法的原型是:protected native Object clone() throws CloneNotSupportedException; 方法修飾符是protected,而不是public。
這種訪問的不可見性使得對Object#clone()方法不可見。所以,必需重寫Object的clone方法後才能使用。
Java代碼:
{
publicCreateInstanceclone{
return(CreateInstance)super.clone();
}
}
值得注意的是:如果需要使用clone方法,必需實現java.lang.Cloneable介面,否則會拋出java.lang.CloneNotSupportedException。
另外clone方法所做的的操作是直接復制欄位的內容,換句話說,這個操作並不管該欄位對應的對象實例內容。
像這樣欄位對欄位的拷貝(field to field )就成為"淺拷貝",clone方法所做的正是"淺拷貝"。
3、newInstance
利用java.lang.Class類的newInstance方法,則可根據Class對象的實例,建立該Class所表示的類的對象實例。
創建CreateInstace類的對象實例可以使用下面的語句(這樣需要一個已經存在的對象實例)。
CreateInstanceinstance=CreateInstance.class.newInstance();
或者使用下面的語句(只需要存在相應的.class文件即可)
CreateInstanceinstance=(CreateInstance)Class.forname("com.create.instance.CreateInstance").newInstance();
如果包下不存在相應.class文件,則會拋出ClassNotFoundException。
注意:newInstance創建對象實例的時候會調用無參的構造函數,所以必需確保類中有無參數的構造函數,否則將會拋出java.lang.InstantiationException異常。
無法進行實例化。
『貳』 Java和c語言的區別
java和c語言兩者的區別如下:
1、C語言是面向過程的語言,執行效率高;Java是面向對象的語言,執行效率比C語言低;
2、C語言的安全性不如Java,C語言沒有Java的垃圾回收機制,申請的空間要手動釋放。Java的通用性好,可以跨平台直接移植,只要有安裝Java虛擬機(JVM)就可以了。
3、在速度上,C語言編寫的程序要優於Java
4、C語言注重的是演算法,但是Java卻不一樣,想用的時候導包就可以了。C語言的演算法很重要,但是Java中的演算法沒有C語言那麼復雜。
5、Java採用Unicode字元集,C語言通常採用的是ASCII字元集,A—65,a—97。
6、C語言的變數可以不進行初始化,但Java的變數要進行初始化。
『叄』 JAVA中方法前加new是什麼意思
new的作用是實例化。
比如有一種類叫狗類,你要創造一隻阿黃,你就得這么創造:
狗類 阿黃=new 狗類();
這句話的意思是聲明,阿黃是屬於狗類這種類的,同時他的名字叫阿黃。
在JAVA語言中,new是實例化,你也可以理解為創造,從一種類中創造出一個真實的個體。
『肆』 java編程中代碼中提到new是什麼意思 ,
new 其實就是實例化一個對象或參數,不用的話,對象的方法就無法被引用了。
『伍』 java里的new到底是什麼意思
java里的new的英文意思就是"新的"的意思。在JAVA里就是創建一個新的實例,或者說一個新的對象,
一個普通類在沒有實例化之前,就是new之前,它的屬性,方法等等在內存中都是不存在的。只有使用new了以後,這個類的一些東西在內存中才會真的存在,也就是說只有new了之後,這個類才能用。
舉例說明:
Java中使用 new關鍵字 加上 構造方法,來創建一個對象,下面是一個名為Cat的類,public class Cat { public Cat() { System.out.println("這是構造方法"); }}使用new + 構造方法 來創建一個對象。
那麼也就是Cat c = new Cat();前半部分,Cat c 的意思是,在內存中分配一個變數,名字叫c,這個變數是Cat類型的;後半部分,new Cat(); 這就是new關鍵字和構造方法來創建一個對象,Cat()是構造方法的名字。
想造出一個對象來,需要運用;new Cat(); 說明 new這個Cat類的一個對象,程序運行的時候,會調用構造方法Cat(),等這個構造方法執行完了,這個Cat類型的對象也就造出來了,真正的出現在內存當中了。
使用new關鍵字造出來的對象,被分配在內存的堆區(heap),而且等這個對象真正出來之後,還會做一件重要的事情:new關鍵字創建出一個對象之後,會把這個對象在內存中的地址返回,通過這個地址就可以找到這個對象。
那麼上面的寫法,Cat c = new Cat();意思就是說,把這個對象在內存中的地址 賦值 給變數c,這就是Java中引用概念,c就叫做引用,或者叫引用變數,或者直接叫變數,沒問題,都是它;c的值就是一個內存地址,或者叫引用地址。
通過這個地址,就可以准確的找到剛才創建出來的對象,以後我們要使用這個對象做一些事情,調用此對象的方法什麼的,都用過這個引用。
(5)Cjavanew擴展閱讀:
JAVA其他關鍵字:
①abstract:
abstract關鍵字可以修飾類或方法。abstract類可以擴展(增加子類),但不能直接實例化。abstract方法不在聲明它的類中實現,但必須在某個子類中重寫。
示例:
public abstract class MyClass{}
public abstract String myMethod();
注釋:
採用abstract方法的類本來就是抽象類,並且必須聲明為abstract。abstract類不能實例化。僅當abstract類的子類實現其超類的所有abstract方法時,才能實例化abstract類的子類。這種類稱為具體類,以區別於abstract類。
如果abstract類的子類沒有實現其超類的所有abstract方法,該子類也是abstract類。abstract關鍵字不能應用於static、private或final方法,因為這些方法不能被重寫,因此,不能在子類中實現。final類的方法都不能是abstract,因為final類不能有子類。
②boolean
boolean變數的值可以是true或false。
示例:
boolean valid=true;
if(valid){
<statement>}
注釋:
boolean變數只能以true或false作為值。boolean不能與數字類型相互轉換。包含boolean操作數的表達式只能包含boolean操作數。Boolean類是boolean原始類型的包裝對象類。
③break
用於提前退出for、while或do循環,或者在switch語句中用來結束case塊。
示例:
for(i=0;i<max;i++){
if(<loopfinishedearly>){
break;}}
inttype=<somevalue>;
switch(type){
case1:<statement>
break;
case2:<statement>
break;
default:
<statement>}
注釋:
break總是退出最深層的while、for、do或switch語句。
byte是Java原始類型。byte可存儲在[-128,127]范圍以內的整數值。
示例:
byteb=124;
注釋:Byte類是byte原始類型的包裝對象類。它定義代表此類型的值的范圍的MIN_VALUE和MAX_VALUE常量。Java中的所有整數值都是32位的int值,除非值後面有l或L(如235L),這表示該值應解釋為long。