(一)基本資料型別包裝類
回顧:基本資料型別並沒有繼承object類。所以提供了基本資料型別包裝類
其中構造方法中可以以字串的形式傳入。
1.基本資料型別包裝類物件和基本資料型別之間的轉換:
例如:
float f = new float("3.14f");
boolean b = new boolean("true");
float ff = f.floatvalue();
boolean bb = b.booleanfloat();
2.字串和基本資料型別之間的轉換:
字串轉化資料型別:
eg:基本資料型別引用 基本資料型別 =包裝類.pra***xx("");
float f = float.parsefloat("");
基本資料型別轉成字串:
string s = string.valueof(基本資料型別);
//通過上述方法實現裝箱和拆箱。
3.jdk1.5後提供自動裝箱拆箱
float f = 3.14;
float ff = f
注意:integer資料型別在-127-127之間的值是儲存在常量池中的。 超過值才會分配棧記憶體。
(二)string字串的快取機制
判斷相等有兩種方式
1(==):
用於判斷兩個基本資料型別是否相等,如果判斷物件的話則是判斷物件引用的位址是否相同,即是否是同乙個物件
2(equse):
object類中的方法。可以進行重寫。
用於判斷兩個物件是否相同,兩個字串則是判斷兩個字串內字串的字元排列順序是否相同。
這裡要注意:當字串的值是編譯時確定的時候,字串的值是快取在常量池中的,而字串物件是儲存在堆記憶體中的.
eg:
string s1="我是字串"//快取在常量池中
string s2=new string(我是字串);//儲存在堆記憶體中
所以以上兩個引用指向的是不同的物件,因此==的結果是false
常量池中只會存在乙個原本,不會存在多個常量副本。因此當編譯時相同的常量值,指向的是同乙個位址。
string s1="我是字串";
string s2= "我是"+"字串";
上面這兩個s1==s2 輸出的是true
因為在常量池中
他們指向的是乙個物件
而:
string s3 = "我是";
string s4 = "字串";
string s5 = s3+s4;
s1 == s5輸出的則是false 因為s5是編譯時不確定的量無法指向常量池.
(三)final關鍵字的用法
final修飾類:
無法被繼承,final修飾方法不能被重寫,但是可以被過載,
final修飾變數分為兩種:
final修飾的變數只能被賦值一次;由於賦值方式機制的不同因此分為兩種情況:
成員變數:由於分配記憶體後系統自動賦初值,這樣使得此變數失去意義,因此在定義成員變數時需要賦值,或者在**塊,構造器中對其賦值
區域性變數:沒有賦值,系統並不為它分配,棧記憶體,所以可以定義時可以賦值也可以不賦值,但是,形參作為區域性變數,系統當將形參傳遞時已經賦值了所以,形參不能再次改變.
巨集變數:乙個變數被final修飾且是編譯時確定的。那麼這個變數可稱為巨集變數。巨集變數可以將 引用指向常量池。
注意:final修飾的引用型變數,
只是引用的物件位址是不可變的
,即一直
引用的是乙個物件
,但物件是可變的
eg:
final list marraylist=new arraylist();
marraylist.add(""); //物件是可以改變的
//marraylist=null //物件位址不能變,這樣的操作是非法的!
PHP 資料型別及常量
沒想到又回到了php,不說了,先熟悉熟悉以前的知識 created on 2013 7 18 php資料型別以及資料型別之間的轉換 php資料型別的轉換有兩種 1 自動轉換 在大多數情況下,php會根據實際的變數型別自動完成轉換 2 強制型別轉換 用的不多,但是也可以強制型別轉換 settype 變...
php常量及資料型別
1 php中的字串可以使用的三種定義方法及其區別 定義方式 單引號,雙引號,heredoc和newdoc 區別 1 單引號不能解析變數 2 單引號不能解析轉義字元,只能解析單引號和反斜線本身 3 單引號效率更高 4 變數和變數,變數和字串,字串和字串之間可以用.連線 5 雙引號可以使用特殊字元和 包...
資料型別String常量池的特性
package com.test.thread.stringandsyn synchronized string 同步塊與string聯合使用 author admin 2017年4月20日 public class service public static void main string ar...