封裝類 int -> Integer float -> Float long -> Long double -> Double
boolean -> Boolean char -> Char byte -> Byte 封裝類是隻讀的
class Test
{
public static void main (String[] args)
{
int i = 3;
Integer in = new Integer(1);
int j = in.intValue(); //傳回Integer所表示的整形值
String str = in.toString(); //int 轉為 string
String str = "123";
System.out.println(Integer.valueOf(str)); //string轉為int
}
}
Class類,在java中每一個class都有一個對應的Class對象,用于表示這個類的類型資訊
擷取一個Class執行個體的方式:
1、利用對象調用getClass()方法
2、使用Class類的靜态方法forName(),用類的名字擷取一個Class執行個體
3、運用.class擷取Class執行個體,對于基本資料類型的封裝類,還可以通過.TYPE來擷取對應基本資料類型的Class執行個體
在運作期間,如果要産生某個類的對象,java虛拟機會檢查該類型的Class對象是否已經加載,
如果沒有加載,jvm會根據類名找到.class問價并加載。一旦某個類型的Class對象已經被加載
到記憶體,就可以用它來産生該類型的所有對象
newInstance調用類中預設的構造方法(就是不帶參數的構造方法),可以在不知類名的情況下建立一個執行個體
class ClassTest
public static void main(String[] args)
Point pt = new Point();
Class c1 = pt.getClass();
try
{
Class c2 = pt.forName(Point); //forName方法會産生異常
}
catch(Exception e)
e.printStackTrace();
Class c3 = Point.class();
Class c4 = int.class();
Class c5 = Integer.TYPE;
Class c6 = Integer.class();
System.out.println(c1.getName());
System.out.println(c2.getName());
System.out.println(c3.getName());
System.out.println(c4.getName());
System.out.println(c5.getName());
System.out.println(c6.getName());
System.out.println("before point");
new Point(); //建立執行個體,列印static裡的語句
System.out.println("after point");
Class.forName("Line"); //擷取到類的執行個體
if(args.length != 1)
return;
Class c = Class.forName(args[0]);
// Point pt = (Point)c.newInstance(); //從指令行傳參 java ClassTest Point
// pt.output();
//反射API,傳回對象的資訊,
Constructor[] cons = c.getDeclaredConstructors(); //傳回所有的構造方法,需要導入java.lang.reflect包
for(int i=0; i
System.out.println(cons[i]);
Method me = c.getDeclaredMethod(); //傳回對象所有的方法
System.out.println(me[i]); //調用預設的構造函數
Class[] params = cons[0].getParameterTypes(); //傳回構造方法的參數資訊,表示參數的類型
Object[] paramValues = new Object[params.length]; //構造Object數組,為newInstance使用
{
if(params[i].isPrimitive()) //isPrimitive判斷是否是基本的資料類型
{
paramValues[i] = new Integer(i+3); //調用基本資料類型的封裝類,給構造方法傳參
}
}
Object o = cons[0].newInstance(paramValues); //newInstance需要Object數組為參數,傳回一個沒有預設構造函數的類
Method me = c.getDeclaredMethod(); //傳回所有的方法
me[0].invoke(o, null); //調用指定的方法,隻有一個方法,是以me[0]就是output方法。output沒有參數,設定為null
class Point
(
int x,y;
static
System.out.println("segment");
void output()
System.out.println("x="x "", + "," + "y=" + y);
void Point(int x, int y)
this.x = x;
this.y = y;
)
class Line
System.out.println("line");
每一個java程式都有一個單一的Runtime類,通過getRuntime()擷取Runtime執行個體。
它提供了應用程式和環境的接口,可以反映出記憶體等資訊
class RuntimeTest
Runtime rt = Runtime.getRuntime();
System.out.println(rt.freeMemory);
System.out.println(rt.totalMemory);
rt.exec("notepad"); //exec可以執行外部子程式,打開記事本
rt.exec("javac hello.java"); //編譯一個檔案
在我們進行程式設計時,逐漸形成了一些典型問題和問題的解決方案,這就是軟體模式。
每一個模式描述了一個在我們程式設計中經常發生的問題,以及該問題的解決方案。
當我們碰到模式所描述的問題,就可以直接用相應的解決方法去解決這個問題,這就是設計模式。
單例(Singleton)模式
(1)一個類隻有一個執行個體,而且自行執行個體化并向整個系統提供這個執行個體,這個類稱為單例類。
(2)單例類的一個最重要的特點是類的構造方法是私有的,進而避免了外部利用構造方法直接建立多個執行個體。