通過DOS命令運行編譯java檔案:
1>運行,輸入cmd;
2>進入DOS介面,輸入cd: 檔案名稱路徑,斷行符號
3>輸入所在盤,斷行符號
4>輸入javac java檔案名稱.java
5>輸入java java檔案名稱
如:
一、封裝:將客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者對象操作,對不可信的對象將屬性和實現的細節進行隱藏。
封裝的作用:
1>安全、方便
2>將可變性進行隔離
3>提高代碼的重用性
屬性的封裝。見下面的代碼:
class Student{String name;int age;public void show(){System.out.println(name+",今年"+age+"歲");}}public class lesson {public static void main(String args[]){Student s=new Student();s.name="許增強";s.setAge(-20);s.show();}}
如果不將age的修飾符設為private,那麼在類外就可以隨意更改它的值,如上,將age=-20,就會出現錯誤,因為年齡不可能為負數。
所以要隱藏age的屬性,使其值在類外不能被隨意修改。就需要加上private修飾符。
對私人成員屬性進行訪問的方法的命名規範:
1>public void setXxx(參數) 為參數的賦值提供介面
2>public 類型 getXxx() 擷取參數值
代碼修改如下:
class Student{String name;private int age;public void setAge(int age){ if(age>=0 && age<=150) {this.age=age;show(); }else System.out.println("有這樣的年齡呀~");}public void show(){System.out.println(name+",今年"+age+"歲");}public int getAge(){return age;}}public class lesson {public static void main(String args[]){Student s=new Student();s.name="許增強";//s.age=-20; age為私人成員變數,不能被類外直接存取s.setAge(-20);}}
二、包:類似於作業系統中的檔案夾。
1>用於對多個java檔案進行分門別類的管理。
2>解決命名衝突的問題(名字相同,內容不同),作業系統對檔案夾的名字不區分大小寫,但是包名區分大小寫。
Java程式中包的定義:
package 包名;
注意:一定要放在java程式中的第一句。
對帶包的java檔案進行編譯:javac -d . java檔案
運行時必須帶上包的完整類名:java 包名.類名
包名的命名規範:
1>如果定義的包有多級:a.b.c.d(即a包中包含子包b,b包中包含子包c....),包名區分大小寫。
2>包名的命名不能以純數字命名。
3>公司做軟體開發,一般會將URL地址反轉作為包名。
如:藍狐培訓URL地址為:www.bluefox.com.cn。
這個時候包的命名為:cn.com.bluefox.項目名。
帶包的java程式編寫,以eclipse為例:
建立一個lesson工程,單擊src,點擊New,選中package,建立一個包com
,然後在com包中建立一個子包bluefox,方法同上,在名字中輸入com.bluefox:
在bluefox中建立student類,單擊com.bluefox選擇New\Class,在Name中輸入類名student即可:
在student類中輸入:
package com.bluefox;public class student {String name;int age;public void show(){System.out.println("我叫"+name+",今年"+age+"歲");}}
同樣在com包中建立一個TestStudent類,單擊com選擇New\Class,在name中輸入TestStudent類.
在TestStudent類中輸入:
package com;public class TestStudent {public static void main(String args[]){student s=new student();s.name="許增強";s.age=20;s.show();}}
編譯TestStudent,會出現編譯問題:
Student是一個不能解決的類,即student類沒有被匯入進來。
由於TestStudent是在com包中,而student類在com包中的子包bluefox包中,不在同一階,所以需要將student類匯入到TestStudent類中才能運行。
包的匯入:
1>import 包名.子包....類名;
2>import 包名.*; //將包中的所有類都匯入進來
將student類匯入到TestStudent類可以利用Eclipse工具導包捷徑:alt+/和ctrl+shift+o。
package com;import com.bluefox.student;public class TestStudent {public static void main(String args[]){student s=new student();s.name="許增強";s.age=20;s.show();}}
編譯後依然有編譯問題。
TestStudent對name,age沒有存取權限。
因為在student類中並沒有對name,age設定存取權限,所以name,age只有在同一個包中才能訪問,或者將name,age設定為public就可以被其他包中的類訪問。
Student修改後如下:
package com.bluefox;public class student {public String name;public int age;public void show(){System.out.println("我叫"+name+",今年"+age+"歲");}}
運行就可以了。
由於eclipse中預設包視圖為並列的,要想層次清楚,可以單擊window--- Navigation---Show View menu---Package presentation---Hierarchical,
變成如下圖所示:
可以清楚的看清內含項目關聯性。
eclipse中的表徵圖: :source folder(存放java源檔案的檔案夾).
:package,包.
對於bulid path,如果單擊src,點擊Bulid Path後選擇remove to bulid path,可以看到src、com等包都作為檔案夾而存在,而不是包。
這個時候再編譯就會出現:
編譯器不包含main類型,因為要編譯java檔案是編譯java的源檔案。所以碰到這個錯誤的時候,記得將src作為一個source folder才能編譯,點擊src---
Bulid Path---use as source folder,這個時候編譯就可以通過了。
Java中常用的包:
1>java.lang.*; 包含java編程的基本類,程式編程中自動匯入
2>java.sql.*; 定義了一系列於java對資料庫訪問支援
3>java.util.*; 工具類,集合架構,資料結構等。
4>java.net.*; 包含實現網路編程的類
5>java.io.*; 提供有關資料流、對象序列和檔案系統的系統輸入/輸出類
6>java.awt.*; 包含建立UI和繪圖以及影像處理的類,使用者圖形介面GUI
7>java.swing.*; 同上。