new這個命令就是要求JAVA在堆內存里分配空間給我用,通常是實體化一個類。所以在你想使用堆內存的時候就使用new吧。
『貳』 在java中new的用途是什麼
java中new關鍵字的作用就是在你聲明了一個對象後,給對象分配相應內存。強類型,較高效。能調用任何public構造。
創建對象,實例化對象;
實例化對象,賦予對象空間,即堆內存地址;
調用構造函數;
比如當我們創建一個對象:Studentstu= new Student();在這里的new具體作用為:
首先要明確stu是父類的一個引用,沒有實際在堆中分配空間。
其次new Student()的作用了:new是在堆中為對象stu申請了一塊空間。其中new也實際上是在調用了父類的構造方法。
『叄』 JAVA中加new和不加new的區別
在java中,new用來開辟堆內存,又叫初始化,一般情況下,對象創建好後,都需要用new進行實例化;不用new通常在單例模式中可見,對象在類裡面創建,構造函數用private修飾,外面不能創建對象,只能調用內部方法靜態方法,即對象的初始化在創建對象時已經完成
一般來說,不使用new的情況都屬於一些特定的情況,比如:
1.
1
2
Class clas = Class.forName(「NewClass」);
NewClass obj = (NewClass) clas.newInstance();
- Class.forName()這個方法會載入這個類並創建一個實例
2.
1
2
Demo deo = new Demo();
Demo1 deo1 = deo.clone();
『肆』 java里的new到底是什麼意思
在Java中,new關鍵字被使用來創建一個新的對象,可以理解為創建的意思。
使用關鍵字new來創建一個對象也叫類的實例化,使用new創建對象時,會調用構造方法初始化對象。例如:
Object referenceVariable = new Constructor();/* 實例化對象 */
可以通過已創建的對象來訪問成員變數和成員方法:
referenceVariable.variableName;/* 訪問類中的變數 */
referenceVariable.methodName();/* 訪問類中的方法*/
(4)javanew的用法擴展閱讀
new關鍵字創建對象的過程介紹
1、將類載入到方法區
JVM首先會檢查這個new指令的參數能否在常量池中定位到一個類的符號引用;如果找不到就將該類載入到方法區並經過解析和初始化等步驟,計算實例化對象所需要的內存;為類的靜態變數賦予正確的初始值。
2、在堆中開辟一塊內存用於存儲新創建的對象
將類實例化出一個新的對象,根據類載入時計算所需的內存大小;在堆中開辟一塊內存,用於存儲新對象的成員屬性和方法區地址的引用。成員方法引用指向方法區中該對象對應的方法。
3、在棧中創建指向對象的引用
在棧中創建一個棧針,用於指向堆中創建的對象。
『伍』 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)javanew的用法擴展閱讀:
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。