導航:首頁 > 知識科普 > 創建字元對象的方法有哪些

創建字元對象的方法有哪些

發布時間:2022-02-13 08:06:03

❶ java用字元串動態創建對象

類似這樣動態創建對象的,都是用到JAVA的反射機制來實現的,有時間去研究一下吧。給個代碼。try {
Class c =Class.forName("java.lang.String");
String s = (String)c.newInstance();
System.out.println(s.getClass().getName());
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

❷ java里,請問這種方式創建了幾個字元串對象

2個

❸ java中string類創建對象

Java中String是一個特殊的包裝類數據有兩種創建形式:
String s = "abc";
String s = new String("abc");
第一種先在棧中創建一個對String類的對象引用變數s,然後去查找"abc"是否被保存在字元串常量池中,如果沒有則在棧中創建三個char型的值'a'、'b'、'c',然後在堆中創建一個String對象object,它的值是剛才在棧中創建的三個char型值組成的數組{'a'、'b'、'c'},接著這個String對象object被存放進字元串常量池,最後將s指向這個對象的地址,如果"abc"已經被保存在字元串常量池中,則在字元串常量池中找到值為"abc"的對象object,然後將s指向這個對象的地址。
第一種特點:JVM會自動根據棧中數據的實際情況來決定是否有必要創建新對象。
第二種可以分解成兩步1、String object = "abc"; 2、String s = new String(object); 第一步參考第一種創建方式,而第二步由於"abc"已經被創建並保存到字元串常量池中,因此jvm只會在堆中新創建一個String對象,它的值共享棧中已有的三個char型值。
第二種特點:一概在堆中創建新對象,而不管其字元串值是否相等,是否有必要創建新對象。
在講字元串比較前,必須要了解==和equals的區別:
因為java所有類都繼承於Object基類,而Object中equals用==來實現,所以equals和==是一樣的,都是比較對象地址,java api里的類大部分都重寫了equals方法,包括基本數據類型的封裝類、String類等。對於String類==用於比較兩個String對象的地址,equals則用於比較兩個String對象的內容(值)。

❹ 關於JAVA字元串對象創建的問題

String a = 「abc」;

String b = new String(「abc」);

a指向常量區的「abc」
b指向變數區「abc」
若還是 String a = 「abc」; String b = 「abc」;
a和b均指向常量區的「abc」,指向相同。

❺ String 創建幾個對象問題(詳解

1
String a = new String("b");

創建兩個對象

"b"在String pool池中,當創建對象時,堆中會拷貝String池中」b「作為一個對象b1,
然後建立一個新對象該對象的引用a指向b1;

所以創建兩個對象。

2

String c="b";

"b"在String池中,c指向該對象;

3

String a="i"+"u"+"s0";

這相當於String a="ius0".當JVM執行到這一句時,就在String pool里找,如果String pool里沒有這個字元串,就會產生一個對象(見java面試寶典174頁)

如果String pool里有這些字元串就產生2個對象 原因:每做一個連接便會產生一個對象.

4

String a="b";

a=a+"b";//有兩個對象,第一a是個對象 2 a+"b"為一個對象

這時 原來 a指向的對象就變為垃圾對象,但後面又被用到所以沒被回收 和"b'進行連接成為bb

5

String a="b";

a=a+"c";//有兩個對象,第一"c"是個對象 2 a+"c"為一個對象

此時a原來指向的對象成為垃圾對象,由jvm垃圾回收機制回收

6

String c;創建對象個數為 0;

初始化為null

❻ java中如何創建int char String類型的對象

Java 提供兩種不同的類型:引用類型和原始類型(或內置類型)。Int是java的原始數據類型,Integer是java為int提供的封裝類。Java為每個原始類型提供了封裝類。
原始類型封裝類
boolean -->Boolean
char --->Character
byte -->Byte
short -->Short
int -->Integer
long -->Long
float -->Float
double -->Double
引用類型和原始類型的行為完全不同,並且它們具有不同的語義。引用類型和原始類型具有不同的特徵和用法,它們包括:大小和速度問題,這種類型以哪種類型的數據結構存儲,當引用類型和原始類型用作某個類的實例數據時所指定的預設值。對象引用實例變數的預設值為 null,而原始類型實例變數的預設值與它們的類型有關。同時為了面向對象操作的一致性,這些基本類型都有相應的封裝類型:Integer、Short、Long、Byte、Float、Double、Character等。
因為封裝類型是對象,所以可以進行相應的很多對象能力函數操作,這樣就可以提供很多基本類型難以完成的工作的完成和實現。
你可以通過以下方式來聲明該類型。

int a,a為int類型的變數
char a,a為char類型的

String對象

1. 首先String不屬於8種基本數據類型,String是一個對象。

因為對象的默認值是null,所以String的默認值也是null;但它又是一種特殊的對象,有其它對象沒有的一些特性。

2. new String()和new String(「」)都是申明一個新的空字元串,是空串不是null;

3. String str=」punkll」;

String str=new String (「punkll」);的區別:

在這里,我們不談堆,也不談棧,只先簡單引入常量池這個簡單的概念。

常量池(constant pool)指的是在編譯期被確定,並被保存在已編譯的.class文件中的一些數據。它包括了關於類、方法、介面等中的常量,也包括字元串常量。

看例1:

String s0=」punkll」;

String s1=」punkll」;

String s2=」punk」 + 「ll」;

System.out.println( s0==s1 );

System.out.println( s0==s2 );

結果為:

true

true

首先,我們要知結果為道Java會確保一個字元串常量只有一個拷貝。

因為例子中的s0和s1中的」punkll」都是字元串常量,它們在編譯期就被確定了,所以s0==s1為true;而」punk」和」ll」也都是字元串常量,當一個字元串由多個字元串常量連接而成時,它自己肯定也是字元串常量,所以s2也同樣在編譯期就被解析為一個字元串常量,所以s2也是常量池中」punkll」的一個引用。

所以我們得出s0==s1==s2;

用new String() 創建的字元串不是常量,不能在編譯期就確定,所以new String() 創建的字元串不放入常量池中,它們有自己的地址空間。

看例2:

String s0=」punkll」;

String s1=new String(」punkll」);

String s2=」punk」 + new String(「ll」);

System.out.println( s0==s1 );

System.out.println( s0==s2 );

System.out.println( s1==s2 );

結果為:

false

false

false

例2中s0還是常量池中」punkll」的應用,s1因為無法在編譯期確定,所以是運行時創建的新對象」punkll」的引用,s2因為有後半部分new String(「ll」)所以也無法在編譯期確定,所以也是一個新創建對象」punkll」的應用;明白了這些也就知道為何得出此結果了。

❼ 如何用html字元串創建jquery對象

用html字元串創建jquery對象的方法是通過js預發構造出來的。
以下通過div的構造後,追加字元串為例來說明

1、創建一個js變數,存放構造div的表達式:
var string = '<div><input type="text" value="val" /></div>';

2、通過1創建的div,在其標簽之間追加html內容:
$('<div/>').html(string).contents();

以上1和2主要執行過程如下:

$('<div/>')是一個並不存在的dom對象是通過執行js表達式動態構建出來的
$('<div/>').html(string) 追加string內容到div之間作為子節點
.contents()把上面創建的div作為jquery對象來檢索內容,創建一個真正的div

❽ javascript 創建字元串對象

對於基礎類型的變數是不能給它添加自定義屬性的,包括字元串、數字、布爾值等等。但new String()卻是一個對象,對象是可以添加屬性的,所以str = 'Hello world'是基礎類型,添加新屬性name是不會成功的,列印結果也就是undefined。

怎麼創建單字元輸入對象

、 枚舉法
由於同事的需求只涉及到基本類型的創建,由於基本對象的個數是有限的(也就那麼幾個),所以我們這里可以用枚舉的方式動態的創建想要的對象,雖然有些繁瑣,但是還是可以實現我們的需求的。關鍵代碼如下:

/**
* 根據傳入的類名和值,動態構造該類的實例
*
* @param _sClassName
* 要構造的類名 如:java.lang.String
* @param _sRealValue
* 要創建的對象的值,比如「wuguowei」
* @return 返回String對象,即值為「wuguowei」的字元串
* @throws Exception
*/
private Object getAttributeObject(String _sClassName, String _sRealValue)
throws Exception {

//1.載入類對象
Class attrObjClass = Class.forName(_sClassName);

//2.如果是Long類
if (attrObjClass.isInstance(new Long(0))) {
return new Long(_sRealValue);
}

//3.如果是Integer類
if (attrObjClass.isInstance(new Integer(0))) {
return new Integer(_sRealValue);
}

//4.其他類型……

//5.返回當前類的實例對象
return attrObjClass;
}

上面的代碼雖然可以通過枚舉的方式實現我們的需求,但是很繁瑣,需要對每個對象進行枚舉,這里還只支持傳入一個String類型的參數,如果要傳入多個參數,那麼這個函數的邏輯將會很復雜。
二、 Constructor反射法
我們應該好好想想,這么NB的java語言應該沒這么笨,應該有更簡單的方法。經過同事的討論後,發現一種比較好的方式。就是通過Constructor類反射出對應的類對象,接著再獲取指定參數的構造函數,最後根據傳入的值實例化對象即可得到我們想要的對象。通過這個方法,我們會發現我們的代碼很簡單,而且很容易懂。另外,這個方法可以動態構造任何java對象。閑話少說,直接看代碼吧。具體代碼如下:

/**
* 根據傳入的類名和值,動態構造該類的實例
*
* @param _sClassName
* 要構造的類名 如:java.lang.String
* @param _sRealValue
* 要創建的對象的值,比如「wuguowei」
* @return 返回String對象,即值為「wuguowei」的字元串
* @throws Exception
*/
private Object getAttributeObject1(String _sClassName, String _sRealValue)
throws Exception {
// 1. 根據指定的類名,獲取到對應的類
Class clazz = Class.forName(_sClassName);

// 2. 獲取指定參數類型的構造函數,這里傳入我們想調用的構造函數所需的參數類型
Constructor constructor = clazz.getConstructor(String.class);

// 3. 根據構造函數,創建指定類型的對象,傳入的參數個數需要與上面傳入的參數類型個數一致
Object object = constructor.newInstance(_sRealValue);

// 4.返回對象
return object;
}

三、 執行代碼
調用上邊的代碼如下:

CreateClassByString aCreateClassByString = new CreateClassByString();
Object oObject = aCreateClassByString.getAttributeObject1(
"java.lang.String", "wuguowei");
System.out.println("結果::"+oObject);

執行結果如下:

結果::wuguowei

閱讀全文

與創建字元對象的方法有哪些相關的資料

熱點內容
情感滲透的方法有哪些 瀏覽:749
用牛尿洗頭的正確方法 瀏覽:893
抓羽毛球拍子正確方法 瀏覽:766
三星顯示器感應開關在哪裡設置方法 瀏覽:938
吸入硝酸怎麼處理方法 瀏覽:618
如何撩帥哥最有效的方法 瀏覽:767
小型投資者最佳方法 瀏覽:500
國內羅西尼自動手錶如何調試方法 瀏覽:786
裝修支線的連接方法 瀏覽:747
經常愛放屁有什麼方法可以治療嗎 瀏覽:780
浙江應變測量系統方法指南 瀏覽:172
簡單的折紙信封的方法 瀏覽:678
可暖使用方法 瀏覽:444
物理最基本的研究方法 瀏覽:85
雙母音最簡單的方法 瀏覽:80
素麻花的製作方法視頻 瀏覽:566
旅遊失溫的解決方法 瀏覽:345
敲木架陶瓷瓦的安裝方法 瀏覽:317
2連續乘以十個2的簡便方法 瀏覽:907
葯物分析tlc雜質檢查方法 瀏覽:205