Ⅰ java里的new到底是什麼意思
在Java中,new關鍵字被使用來創建一個新的對象,可以理解為創建的意思。
使用關鍵字new來創建一個對象也叫類的實例化,使用new創建對象時,會調用構造方法初始化對象。例如:
Object referenceVariable = new Constructor();/* 實例化對象 */
可以通過已創建的對象來訪問成員變數和成員方法:
referenceVariable.variableName;/* 訪問類中的變數 */
referenceVariable.methodName();/* 訪問類中的方法*/
(1)java構造new擴展閱讀
new關鍵字創建對象的過程介紹
1、將類載入到方法區
JVM首先會檢查這個new指令的參數能否在常量池中定位到一個類的符號引用;如果找不到就將該類載入到方法區並經過解析和初始化等步驟,計算實例化對象所需要的內存;為類的靜態變數賦予正確的初始值。
2、在堆中開辟一塊內存用於存儲新創建的對象
將類實例化出一個新的對象,根據類載入時計算所需的內存大小;在堆中開辟一塊內存,用於存儲新對象的成員屬性和方法區地址的引用。成員方法引用指向方法區中該對象對應的方法。
3、在棧中創建指向對象的引用
在棧中創建一個棧針,用於指向堆中創建的對象。
Ⅱ java 直接new 構造方法()什麼意思
這是創建一個類對象啊
類的構造方法不寫,JVM也會幫你自動創建一個的
要使用一個類對象,需要對這個類使用new關鍵字來創建一個新的對象
MyException e = new MyException();
定義一個MyException的對象 e 變數,之後就是使用new關鍵字來創建一個MyException對象,並把對象賦予變數 e, 之後 變數e就是有實際對象的變數了,就可以使用e來調用對象中的各種方法和屬性了。
直接new 就是匿名創建對象,也就是所謂的匿名對象,既沒有名稱的對象。
Ⅲ Java new 一個構造方法時
構造方法是類中定義的,當你類中沒有定義構造方法的時候,類中會有一個默認的無參數的構造方法,你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的值就是一個內存地址,或者叫引用地址。
通過這個地址,就可以准確的找到剛才創建出來的對象,以後我們要使用這個對象做一些事情,調用此對象的方法什麼的,都用過這個引用。
(4)java構造new擴展閱讀:
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。