一、java中的包
Java利用包來組織代碼,一來使大型項目的代碼結(jié)構(gòu)清晰,二來包是一個命名空間的劃分,即不同包中可以有相同名字的類,只需在在類名前加上包名即可區(qū)分它們。
Package xxx 必須位于java文件除了注釋以外的第一行,用來指明當(dāng)前文件中的類屬于哪一個包,如果沒有package語句,則該文件中的類都屬于默認(rèn)包。
Import xxx用來在當(dāng)前java文件中導(dǎo)入不屬于當(dāng)前包中的類,從而可以在當(dāng)前文件中使用它們。
二、java中的環(huán)境變量
1.path
環(huán)境變量其實就是一組變量(廢話),它的作用是給系統(tǒng)和應(yīng)用程序提供參數(shù)。例如:path,它告訴系統(tǒng)和應(yīng)用程序一些系統(tǒng)必備的程序的存儲位置,比如你要運(yùn)行ipconfig命令,系統(tǒng)去哪里找它呢,就是通過path變量,把它所存儲的位置挨個找一遍,直到找到為止。
在java中,當(dāng)我們要運(yùn)行java程序,在控制臺輸入java xxx時,java這個應(yīng)用程序(exe文件)到哪里找呢?系統(tǒng)就得通過path,這樣就得把包含java這個應(yīng)用程序的目錄拷貝到path環(huán)境變量中,這樣以后,再運(yùn)行java xxx 就不會出現(xiàn)“‘java'不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件。”了。
2.classpath
說完path,再來說說classpath,解決了java這個命令的問題,還有javac這個命令的問題,這里就牽扯到j(luò)ava中的包機(jī)制了。
Java程序是由一個一個類構(gòu)成的,類之間可以相互調(diào)用,還有一些java語言已經(jīng)定義好的類,那么當(dāng)程序要用到這些類的時候,去哪里找他們呢,這就需要classpath這個環(huán)境變量來指點迷津了。
總結(jié):classpath指明了類查找路徑,如果類沒有被打包,那就需要將其所在目錄添加到classpath中,如果類被打包為JAR文件,則需要將JAR文件的實際名稱寫清楚。
Classpath一般設(shè)置為“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”
其中.代表當(dāng)前目錄,%JAVA_HOME%代表java jdk的路徑。Dt.jar中主要是swing包中的各種控件類。Tools.jar中是各種工具類。
當(dāng)編譯器碰到import語句時,就開始在CLASSPATH所包含的目錄中查找。
?。▍⒖迹?a href="http://www.jfrwli.cn/Linux/2012-01/52713.htm">http://www.jfrwli.cn/Linux/2012-01/52713.htm)
3.JAVA_HOME
指明jdk的路徑
三、訪問權(quán)限控制
1.類成員的訪問控制
訪問控制符:public/protected/包訪問權(quán)限(無關(guān)鍵字即默認(rèn))/private
|
類本身 |
同包中的子類 |
不同包中的子類 |
同包中的非子類 |
不同包中的非子類 |
總之 |
public |
可以 |
可以 |
可以 |
可以 |
可以 |
都可以 |
private |
可以 |
不可以 |
不可以 |
不可以 |
不可以 |
僅自身可見 |
default |
可以 |
可以 |
不可以 |
可以 |
不可以 |
僅同包可見 |
protected |
可以 |
可以 |
可以 |
可以 |
不可以 |
子類或者同包可見 |
2.類的訪問控制權(quán)限
類只有兩種訪問控制權(quán)限:默認(rèn)(即包訪問控制權(quán)限)和public
下面還有點時間,接著給大家介紹maven profile實現(xiàn)多環(huán)境打包
項目開發(fā)需要有多個環(huán)境,一般為開發(fā),測試,預(yù)發(fā),正式4個環(huán)境,通過maven可以實現(xiàn)按不同環(huán)境進(jìn)行打包部署,命令為:
mvn package -P dev
其中“dev“為環(huán)境的變量id, 可以自己定義, 我定義的名稱為:dev,qa,pre,prod , 具體在pom.xml中的配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
<?xml version= "1.0" encoding= "UTF-8" ?> <project xmlns= "http://maven.apache.org/POM/4.0.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" > ...... <profiles> <profile> <id>dev</id> <properties> <env>dev</env> </properties> <activation> <activeByDefault> true </activeByDefault> </activation> </profile> <profile> <id>qa</id> <properties> <env>qa</env> </properties> </profile> <profile> <id>pre</id> <properties> <env>pre</env> </properties> </profile> <profile> <id>prod</id> <properties> <env>prod</env> </properties> </profile> </profiles> ...... <build> <filters> <filter>config/${env}.properties</filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <filtering> true </filtering> </resource> </resources> ...... </build> </project> |
1.profiles定義了各個環(huán)境的變量id
2.filters中定義了變量配置文件的地址,其中地址中的環(huán)境變量就是上面profile中定義的值
3.resources中是定義哪些目錄下的文件會被配置文件中定義的變量替換,一般我們會把項目的配置文件放在src/main/resources下,像db,bean等,里面用到的變量在打包時就會根據(jù)filter中的變量配置替換成固定值