1.8 package和import關鍵字
1.8.1 package
包其實就是目錄,特別是項目比較大,java 文件特別多的情況下,我們應該分目錄管理,在java 中稱為分包管理,包名稱通常采用小寫。
軟件包機制:
①為了解決類的命名沖突問題,在類名前加命名空間(包機制)。
②在java中使用package語句定義包.(單包,復包)。
③package語句只能出現在.java源文件的第一行。
④package定義的格式,通常采用公司域名倒敘方式。
例如:com.bjpowernode.oa.system;
以上包含義:bjpowernode公司開發oa項目,system是oa項目中其中一個模塊!
package定義的全格式:公司域名倒敘.項目名.模塊名;
⑤完整的類名是帶有包名的。
⑥帶有package語句的java源文件必須這樣編譯:javac -d 生成路徑 java源文件路徑。
⑦運行: java com.bjpowernode.javase.day05.User
package com.bjpowernode.javase.day05; public class User{ public static void main(String[] args){ System.out.println("User's main method execute!"); } } |
package com.bjpowernode.javase.day05;
public class Test01{
public static void main(String[] args){ User u = new User();
System.out.println(u); //com.bjpowernode.javase.day05.User@c17164 } } |
1.8.2 import
package com;
//import語句可以引入其他類. //import語句只能出現在package語句之下,class定義的語句之上。 //import com.bjpowernode.javase.day05.User; import com.bjpowernode.javase.day05.*; //java.lang;軟件包下所有類不需要手動導入。系統自動導入. import java.util.Date;
public class Test02{ //入口 public static void main(String[] args){
//User.class找不到. //User u = new User();
com.bjpowernode.javase.day05.User u = new com.bjpowernode.javase.day05.User(); System.out.println(u); //com.bjpowernode.javase.day05.User@c17164
User u1 = new User(); System.out.println(u1);
Object o = new Object(); System.out.println(o); //java.lang.Object@61de33
//SUN提供的日期 Date t = new Date();
System.out.println(t); //Fri Jul 27 15:00:37 CST 2012 } } |
JDK中主要的包介紹
1.java.lang----包含一些Java語言的核心類,如String、Math、Integer、 System和Thread,提供常用功能。
2. java.net----包含執行與網絡相關的操作的類和接口。
3. java.io ----包含能提供多種輸入/輸出功能的類。
4. java.util----包含一些實用工具類,如定義系統特性、接口的集合框架類、使用與日期日歷相關的函數。
5. java.text----包含了一些java格式化相關的類
6. java.sql----包含了java進行JDBC數據庫編程的相關類/接口
7. java.awt----包含了構成抽象窗口工具集(abstract window toolkits)的
多個類,這些類被用來構建和管理應用程序的圖形用戶界
面(GUI)。
8. java.applet----包含applet運行所需的一些類。
總結
1.面向對象思想的落地法則一:
①設計類,並設計類的成員(成員變量&成員方法)
②通過類,來創建類的對象(也稱作類的實例化)
③通過“對象.屬性” 或“對象.方法”來調用,完成相應的功能
2.創建的多個對象,彼此各自擁有一套類的屬性。
當對其中一個對象的屬性進行修改時,不會影響到其他對象的屬性值。
public class Zoo{ public static void main(String args[]){ Animal xb=new Animal(); Animal xh=new Animal(); xb.legs=4; xh.legs=0; System.out.println(xb.legs); //4 System.out.println(xh.legs); //0 xb.legs=2; System.out.println(xb.legs); //2 System.out.println(xh.legs); //0 } } |
3.類的屬性(成員變量)
成員變量vs局部變量
相同點:
①遵循變量聲明的格式: 數據類型 變量名 = 初始化值
②都有作用域
不同點:
①聲明的位置的不同 :
成員變量:聲明在類里,方法外;局部變量:聲明在方法內,方法的形參部分,代碼塊內
②關於修飾符:
成員變量的修飾符有四個:public private protected 缺省;
局部變量沒有修飾符,與所在的方法修飾符相同。
③初始化值:一定會有初始化值。
成員變量:如果在聲明的時候,不顯式的賦值,那么不同數據類型會有不同的默認初始化值。
byte short int long ==>0
float double ==>0.0
char ==>空格
boolean ==>false
引用類型變量==>null
局部變量:一定要顯式的賦值(局部變量沒有默認初始化值)。
④二者在內存中存放的位置不同:
成員變量:存在於堆空間中;局部變量:棧空間中 。
4.關於變量的分類:
①按照數據類型的不同:基本數據類型(8種)& 引用數據類型
②按照聲明的位置的不同:成員變量 & 局部變量
5.類的方法:提供某種功能的實現
①實例
public void eat(){//方法體} public String getName(){} public void setName(String n){} |
格式:權限修飾符 返回值類型(void:無返回值/具體的返回值) 方法名(形參){}
②關於返回值類型
void:表明此方法不需要返回值
有返回值的方法:在方法的最后一定有return + 返回值類型對應的變量
記憶:void 與return不可以同時出現一個方法內。像一對“冤家”。
③方法內可以調用本類的其他方法或屬性,但是不能在方法內再定義方法!
6.類的初始化的內存解析
內存划分的結構:理解的基礎上,學會基本的創建的類的對象在內存中的運行。
①棧(stack):局部變量 、對象的引用名、數組的引用名
②堆(heap):new 出來的“東西”(如:對象的實體,數組的實體),含成員變量
③方法區:含字符串常量
④靜態域:聲明為static的變量
7.面向對象思想的落地法則二:(封裝性的思想)
①將類的屬性私有化
②提供公共的方法(setter & getter)來實現調用