導航:首頁 > 編程語言 > java創建多個對象

java創建多個對象

發布時間:2022-08-03 15:29:46

『壹』 java 怎樣處理對一個類創建多個對象

student stu = new student();
student stu1 = new student();
student stu2 = new student();
student stu3 = new student();
student stu4 = new student();
List list = new ArrayList(); //這個是從資料庫中取得要導出的數據

stu1.setID(10);
stu1.setName("小丁");
stu1.setGender("1");
stu1.setDate("2012.12.12");
list.add(stu1);
明白了嗎

『貳』 Java 一個類能創建多個對象嗎

一個類通過使用new運算符可以創建多個不同的對象。這些對象將分配不同的內存空間,因此改變其中一個對象的狀態不會影響其他對象的狀態。

『叄』 java如何創建對象

JAVA創建對象的四種方式:
有4種顯式地創建對象的方式:
1.用new語句創建對象,這是最常用的創建對象的方式。最常用 比如
Scanner scanner = new Scanner(System.in)
2.運用反射手段,Java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。
3.調用對象的clone()方法。
4.運用反序列化手段

『肆』 JAVA怎麼一次定義多個對象

String s1,s2,s3不就是定義了多個對象性。

『伍』 java中我要創建多了類對象應該如何實現

請參考 多例模式
主要思想是在一個多例類中用一個靜態的集合對象(通常可使用哈西表HashMap)存儲所創建的多個Car對象,然後在此類中用一個靜態工廠方法來負責創建Car類的實例,每創建一個就加到那個靜態的集合對象中,每需要刪除一個Car對象就通過Car對象的名字到集合中去索引到此對象,然後從集合中刪除。
下面是一個多例類的示例
public class Car {
// 靜態集合
private static HashMap cars = new HashMap();
// 靜態工廠方法
public static Car createCar(String name, float speed, int price) {
Car car = new Car(name, speed, price);
cars.put(name, car);
}

public static Car deleteCar(String name) {
return cars.remove(name);
}

public static Car findCar(String name) {
return cars.get(name);
}

private String name;
private int price;
private float speed;
// 保護的Car類構造函數,不能被直接創建
protected Car(String name, float speed, int price) {
this.name = name;
this.speed = speed;
this.price = price'
........
........
}

........
........
}

『陸』 JAVA中創建了多個對象,為啥只重復出現一個對象

1、一般來說,最好能重用對象而不是在每次需要的時候就創建一個相同功能的新對象。重用方式既快速,又流行。如果對象是不可變的,它就始終可以被重用。
2、除了重用不可變的對象之外,也可以重用那些已知不會修改的可變對象。
首先我們在new
一個對象的時候,對象的id是唯一確定的;將對象add入list中時,放入list中的其實是對象的引用
;而每次循環只是簡單的set
對象的屬性,set新的屬性值,而add進list中的對象還是同一個對象id,也就是同一個對象;
所以每次add之後,list發現對象引用和之前元素一樣,就覆蓋掉了之前add的對象。所以循環之後list中的對象是重復的對象。
想要避免這個問題只要每次add時保證對象引用都是不同的即可,即每循環一次重新new一個對象。
另外如果List集合在循環內new對象,只會添加最後一個元素。
new的對象應該放在for循環內,每循環一次重新new一個新對象

『柒』 JAVA創建對象有哪幾種方式

JAVA創建對象的四種方式:

有4種顯式地創建對象的方式:

1.用new語句創建對象,這是最常用的創建對象的方式。

2.運用反射手段,調用Java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實例方法。

3.調用對象的clone()方法。

4.運用反序列化手段,調用java.io.ObjectInputStream對象的readObject()方法.

下面演示了用前面3種方式創建對象的過程。



4.當Java虛擬機載入一個類時,會隱含地創建描述這個類的Class實例.

『捌』 java 如何批量新建對象

首先確定你要的元素的數量,如果固定,可以使用數組,不固定可以使用容器,然後在for循環或者do循環中創建元素後存入數組,用的時候直接引用數組元素就行了

『玖』 關於在JAVA創建多個同類型的對象

可以使用 Object類中的clone()方法來克隆對象
Object類中的clone()方法可以實現將對象復制一份並返回給調用者。一般而言,clone()方法滿足:
對任何的對象obj,都有obj.clone() != obj,即克隆對象與原對象不是同一個對象。
對任何的對象obj,都有obj.clone().getClass() == obj.getClass(),即克隆對象與原對象的類型一樣。
如果對象obj的equals()方法定義恰當,那麼obj.clone().equals(obj)應該成立。

『拾』 Java循環創建多個對象後導致內存溢出!

在解決java內存溢出問題之前,需要對jvm(java虛擬機)的內存管理有一定的認識。jvm管理的內存大致包括三種不同類型的內存區域:Permanent Generation space(永久保存區域)、Heap space(堆區域)、Java Stacks(Java棧)。其中永久保存區域主要存放Class(類)和Meta的信息,Class第一次被Load的時候被放入PermGen space區域,Class需要存儲的內容主要包括方法和靜態屬性。堆區域用來存放Class的實例(即對象),對象需要存儲的內容主要是非靜態屬性。每次用new創建一個對象實例後,對象實例存儲在堆區域中,這部分空間也被jvm的垃圾回收機制管理。而Java棧跟大多數編程語言包括匯編語言的棧功能相似,主要基本類型變數以及方法的輸入輸出參數。Java程序的每個線程中都有一個獨立的堆棧。容易發生內存溢出問題的內存空間包括:Permanent Generation space和Heap space。
第一種OutOfMemoryError: PermGen space
發生這種問題的原意是程序中使用了大量的jar或class,使java虛擬機裝載類的空間不夠,與Permanent Generation space有關。解決這類問題有以下兩種辦法:
增加java虛擬機中的XX:PermSize和XX:MaxPermSize參數的大小,其中XX:PermSize是初始永久保存區域大小,XX:MaxPermSize是最大永久保存區域大小。如針對tomcat6.0,在catalina.sh 或catalina.bat文件中一系列環境變數名說明結束處(大約在70行左右) 增加一行: JAVA_OPTS=" -XX:PermSize=64M -XX:MaxPermSize=128m" 如果是windows伺服器還可以在系統環境變數中設置。感覺用tomcat發布sprint+struts+hibernate架構的程序時很容易發生這種內存溢出錯誤。使用上述方法,我成功解決了部署ssh項目的tomcat伺服器經常宕機的問題。
清理應用程序中web-inf/lib下的jar,如果tomcat部署了多個應用,很多應用都使用了相同的jar,可以將共同的jar移到tomcat共同的lib下,減少類的重復載入。這種方法是網上部分人推薦的,我沒試過,但感覺減少不了太大的空間,最靠譜的還是第一種方法。
第二種OutOfMemoryError: Java heap space
發生這種問題的原因是java虛擬機創建的對象太多,在進行垃圾回收之間,虛擬機分配的到堆內存空間已經用滿了,與Heap space有關。解決這類問題有兩種思路:
檢查程序,看是否有死循環或不必要地重復創建大量對象。找到原因後,修改程序和演算法。 我以前寫一個使用K-Means文本聚類演算法對幾萬條文本記錄(每條記錄的特徵向量大約10來個)進行文本聚類時,由於程序細節上有問題,就導致了Java heap space的內存溢出問題,後來通過修改程序得到了解決。
增加Java虛擬機中Xms(初始堆大小)和Xmx(最大堆大小)參數的大小。如:set JAVA_OPTS= -Xms256m -Xmx1024m
第三種OutOfMemoryError:unable to create new native thread
在java應用中,有時候會出現這樣的錯誤:OutOfMemoryError: unable to create new native thread.這種怪事是因為JVM已經被系統分配了大量的內存(比如1.5G),並且它至少要佔用可用內存的一半。有人發現,在線程個數很多的情況下,你分配給JVM的內存越多,那麼,上述錯誤發生的可能性就越大。
那麼是什麼原因造成這種問題呢?
每一個32位的進程最多可以使用2G的可用內存,因為另外2G被操作系統保留。這里假設使用1.5G給JVM,那麼還餘下500M可用內存。這500M內存中的一部分必須用於系統dll的載入,那麼真正剩下的也許只有400M,現在關鍵的地方出現了:當你使用Java創建一個線程,在JVM的內存里也會創建一個Thread對象,但是同時也會在操作系統里創建一個真正的物理線程(參考JVM規范),操作系統會在餘下的400兆內存里創建這個物理線程,而不是在JVM的1500M的內存堆里創建。在jdk1.4里頭,默認的棧大小是256KB,但是在jdk1.5里頭,默認的棧大小為1M每線程,因此,在餘下400M的可用內存里邊我們最多也只能創建400個可用線程。
這樣結論就出來了,要想創建更多的線程,你必須減少分配給JVM的最大內存。還有一種做法是讓JVM宿主在你的JNI代碼里邊。
給出一個有關能夠創建線程的最大個數的估算公式:
(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

對於jdk1.5而言,假設操作系統保留120M內存:
1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads
1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads

對於棧大小為256KB的jdk1.4而言,
1.5GB allocated to JVM: ~1520 threads
1.0GB allocated to JVM: ~3520 threads

對於這個異常我們首先需要判斷下,發生內存溢出時進程中到底都有什麼樣的線程,這些線程是否是應該存在的,是否可以通過優化來降低線程數; 另外一方面默認情況下java為每個線程分配的棧內存大小是1M,通常情況下,這1M的棧內存空間是足足夠用了,因為在通常在棧上存放的只是基礎類型的數據或者對象的引用,這些東西都不會占據太大的內存, 我們可以通過調整jvm參數,降低為每個線程分配的棧內存大小來解決問題,例如在jvm參數中添加-Xss128k將線程棧內存大小設置為128k。

閱讀全文

與java創建多個對象相關的資料

熱點內容
java迭代器遍歷 瀏覽:299
閩政通無法請求伺服器是什麼 瀏覽:48
怎麼做積木解壓神器 瀏覽:203
王者榮耀解壓玩具抽獎 瀏覽:49
12位是由啥加密的 瀏覽:868
程序員編迷你世界代碼 瀏覽:895
php取現在時間 瀏覽:246
單片機高吸收 瀏覽:427
怎麼區分五代頭是不是加密噴頭 瀏覽:244
hunt測試伺服器是什麼意思 瀏覽:510
2013程序員考試 瀏覽:641
畢業論文是pdf 瀏覽:736
伺服器跑網心雲劃算嗎 瀏覽:471
單片機定時器計數初值的計算公式 瀏覽:801
win7控制台命令 瀏覽:567
貓咪成年app怎麼升級 瀏覽:692
360有沒有加密軟體 瀏覽:315
清除cisco交換機配置命令 瀏覽:751
華為刪除交換機配置命令 瀏覽:473
shell打包命令 瀏覽:827