代碼:
創(chuàng)新互聯(lián)建站服務項目包括色尼網站建設、色尼網站制作、色尼網頁制作以及色尼網絡營銷策劃等。多年來,我們專注于互聯(lián)網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網行業(yè)的解決方案,色尼網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到色尼省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
package com.ufotable.test;
public class Test30 {
private static int l,r,u,d;//定義上下左右邊界
private static int[][] a=new int[0][0];//數(shù)組
private static int y=0,x=0;//初始化坐標
private static int step,temp;//步長,上一個數(shù)組的值
private static void add(int y,int x){
temp+=step;a[y][x]=temp;
}
private static void left(){
while(xl)add(y, --x);//未遇到左邊界
if(yu){//遇到左邊界且未遇到上邊界
l++;up();
}
}
private static void right(){
while(xr)add(y, ++x);//未遇到右邊界
if(yd){//遇到右邊界且未遇到下邊界
r--;
down();
}
}
private static void up(){
while(yu)add(--y, x);//未遇到上邊界
if(xr){//遇到上邊界且未遇到右邊界
u++;
right();
}
}
private static void down(){
while(yd)add(++y, x);//未遇到下邊界
if(xl){//遇到下邊界且未遇到左邊界
d--;
left();
}
}
private static void fun(int start,int step,int length){//產生數(shù)組(起始值,步長,矩陣邊長)
Test30.step=step;
l=u=0;r=d=length-1;
a=new int[length][length];
a[0][0]=temp=start;
up();
}
public static void print(){//輸出矩陣
for(int i=0;ia.length;i++){
for(int j=0;ja.length;j++){
System.out.print(a[i][j]+"\t");
}System.out.println();}
}
public static void main(String[] args) {
fun(0,1,10);//測試
print();
}
}
Java基礎——Java開發(fā)前奏
Java的特點
Java最主要的特點是:一次編譯,到處運行(Write?Once,?Run?Anywhere.)。
原理:Java源程序經編譯后生成.class字節(jié)碼文件,.class文件由Java虛擬機(JVM)解釋執(zhí)行。不同的操作系統(tǒng)下,只要有相應的Java字節(jié)碼解釋程序,.class文件就能夠運行,這是Java跨平臺性的根本。c和java編程與執(zhí)行的過程如下圖所示:
Java的內涵
1、是一種編程語言
2、是一套開發(fā)工具
3、是一個運行環(huán)境
Java應用平臺
1、J2EE(Java?2?Platform?Enterprise?Edition)——用于企業(yè)級應用程序的開發(fā)
2、J2SE(Java?2?Platform?Standard?Edition)——用于普通標準應用程序的開發(fā)
3、J2ME(Java?2?Platform?Micro?Edition)——用于小型消費類電子產品或嵌入式系統(tǒng)的開發(fā)
J2SE包括4部分——JVM、JRE、JDK與Java語言。
環(huán)境變量的設置
環(huán)境變量——在操作系統(tǒng)中定義的變量,可供操作系統(tǒng)上所有的應用程序使用。
1、查看環(huán)境變量
a.命令提示行:環(huán)境變量的命令——set?(環(huán)境變量名)
b.窗口方式:我的電腦-屬性-高級-環(huán)境變量
2、設置path環(huán)境變量
path環(huán)境變量的作用:設置操作系統(tǒng)尋找和執(zhí)行應用程序的路徑。
JAVA_HOME:C:\Program?Files\Java\jdk1.6.0_14
path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
3、設置classpath環(huán)境變量
classpath環(huán)境變量的作用:讓Java執(zhí)行環(huán)境找到指定的java程序(.class文件)。
classpath:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
注意:a.%JAVA_HOME%前面有“.;”,“.”表示當前目錄,兩個路徑之間用“;”隔開。
b.設置classpath的路徑中不能有空格,也不能有中文字符。
JVM的運行過程
Java反編譯工具——JAD、FrontEnd
Java開發(fā)工具
1、記事本
注意保存時文件名應為*.java。
2、UltraEdit、EditPlus
使用EditPlus編輯和編譯Java程序,需要進行相應配置。選擇“工具”-“參數(shù)選擇”-“工具”-“用戶工具”-“添加工具”-“應用程序”。首先設置“javac”的參數(shù),具體如下圖,其中“命令”為javac.exe文件的地址。
然后設置“java”的參數(shù),如下圖所示,其中“命令”為java.exe文件的路徑。
設置好后默認“javac”工具的快捷鍵為Ctrl+1,“java”工具的快捷鍵為Ctrl+2。當編輯好Java源程序后,使用Ctrl+1即可對其進行編譯,然后按Ctrl+2運行程序。如下圖所示:
3、集成開發(fā)環(huán)境——Eclipse、MyEclipse、JBuilder等。
關于Eclipse和MyEclipse,剛用的時候感覺二者差不多,查了資料才知道Eclipse?是基礎,如同操作系統(tǒng);而MyEclipse是在Eclipse上面運行的程序,不過進行了增強并提供了新功能。
以前用過Microsoft的Visual?Studio?2005,個人感覺VS2005是一個功能非常強大的集成開發(fā)環(huán)境,不過.NET和Java畢竟不是一家人,學Java還是要用Eclipse的。
JDK中的常用包
1、java.lang——包含一些Java語言的核心類,如String、Math、Thread、System、Integer類等。
2、java.awt——包含構成抽象窗口工具集的多個類,用來構建和管理應用程序的圖形用戶界面(GUI)。
3、java.applet——包含applet運行所需的一些類。
4、java.net——包含執(zhí)行與網絡相關操作的類。
5、java.io——包含能提供多種輸入/輸出功能的類。
6、java.util——包含一些實用工具類。
Java的命名習慣
1、包名中的字母一律小寫。如:xxxyyyzzz。
2、類名、接口名應使用名詞,每個單詞的首字母大寫。如:XxxYyyZzz。
3、方法名,第一個單詞小寫,后面每個單詞的首字母大寫。如:xxxYyyZzz。
4、變量名,第一個單詞小寫,后面每個單詞的首字母大寫。
5、常量名中的每個字母一律大寫。如:XXXYYYZZZ。
Java基礎——Java語法基礎(1)
Java代碼基本格式
Java中所有程序代碼都必須存在于一個類中,用class關鍵字定義類,在class之前可以有一些修飾符。格式如下:
修飾符?class?類名
{
程序代碼
}
注:
1、Java是嚴格區(qū)分大小寫的。
2、Java程序中一句連續(xù)的字符串不能分開在兩行中寫。
Java程序的注釋
Java里的注釋有三種類型:
1、單行注釋
在注釋內容前面加“//”,格式為:
代碼;??//注釋內容
2、多行注釋
以斜杠加星號開頭,以星號加斜杠結尾。
3、文檔注釋
以斜杠加兩個星號開頭,以一個星號加斜杠結束。
用這種方法注釋的內容會被解釋成程序的正式文檔,并能包含進諸如javadoc之類的工具程序生成的文檔里,用以說明該程序的層次結構及其方法。
補充:
1、多行注釋中可以嵌套“//”注釋,但不能嵌套多行注釋符號。
2、程序注釋一般占程序代碼總量的20%-50%,“可讀性第一,效率第二”。
Java中的標識符
Java中的包、類、方法、參數(shù)、變量的名字,可以由任意順序的大小寫字母、數(shù)字、下劃線(_)、美元符號($)組成,但不能以數(shù)字開頭,不能是Java中的保留關鍵字。
Java的關鍵字
1、用于類和接口的聲明:class,?extends,?implements,?interface
2、包引入和包聲明:import,?package
3、數(shù)據類型:byte,?boolean,?char,?double,?int,?long,?float,?short
4、某些數(shù)據類型的可選值:flase,?ture,?null
5、流程控制:break,?case,?continue,?default,?do,?else,?for,?if,?return,?switch,?while
6、異常處理:catch,?finally,?throw,?throws,?try
7、修飾符:abstract,?final,?native,?private,?protected,?public,?static,?synchronilzed,?transient,?volatitle
8、操作符:instanceof
9、創(chuàng)建對象:?new
10、引用:this,?supper
11、方法返回類型:void
12、保留字:const,?goto
Java中的常量
1、整形常量
十進制
十六進制——以0x或0X開頭
八進制——以0開頭
長整形——以L(l)結尾
2、浮點數(shù)常量
單精度浮點數(shù)——后面加f(F)
雙精度浮點數(shù)——后面加d(D)
注:
a.小數(shù)常量的默認類型是double型,所以float類型常量后一定要加f(F)。
b.浮點數(shù)常量可以用指數(shù)形式表示,如5.022e+23f
3、布爾常量
true或false
4、字符常量
由英文字母、數(shù)字、轉義序列、特殊字符等的字符所表示,如'a'、'\t'等。
Java中的字符占兩個字節(jié),是用Unicode碼表示的,也可以使用'\u'加Unicode碼值來表示對應字符,如'\u0027'。
常用的轉義字符有:
\t——表示接受鍵盤輸入,相當于按了一下回車鍵
\n——表示換行
\t——表示制表符,相當于Tab鍵
\b——表示退格鍵,相當于Back?Space鍵
\'——表示單引號
\”——表示雙引號
\\——表示反斜杠“\”
5、字符串常量
字符串常量用雙引號括起來。
6、null常量
null常量表示對象的引用為空。
Java的變量類型
基本數(shù)據類型之間的轉換
1、自動類型轉換(隱式類型轉換)
條件:
a.兩種類型彼此兼容
b.目標類型的取值范圍要大于源類型
2、強制類型轉換(顯示類型轉換)
格式:目標類型?常量?=?(目標類型)值
注:字符串可以使用加號“+”同其他的數(shù)據類型相連而形成一個新的字符串。
變量的作用域
代碼塊決定了變量的作用域,作用域決定了變量的可見性和存在時間。
局部變量
在一個函數(shù)或函數(shù)里面的代碼塊中定義的變量稱為局部變量。
局部變量在進行取值操作前必須被初始化或進行過賦值操作。
函數(shù)
1、定義函數(shù)的格式
返回值類型?函數(shù)名(參數(shù)類型?形式參數(shù)1,參數(shù)類型形式參數(shù)2,...)
{
程序代碼
return?返回值;
}
2、函數(shù)的重載
函數(shù)的重載就是在一個類中可以同時存在一個以上的同名函數(shù),只要它們的參數(shù)個數(shù)或類型不同即可。
Java基礎——Java語法基礎(2)——運算符
Java中的運算符
1、算術運算符
a.字符串?+?其他類型?=?字符串
b.如果對負數(shù)求余,可以把除數(shù)負號忽略不計,如5?%?-1?=?1。但如果被除數(shù)是負數(shù)就另當別論了。
2、賦值運算符
a.在Java中,可以把賦值語句連在一起,如:x?=?y?=?z?=?5;
b.x?+=?y相當于x?=?x?+?y
3、比較運算符
a.要注意比較運算符“==”和賦值運算符“=”的區(qū)別,特別是布爾型變量進行比較時。
b.可以將比較運算的表達式寫為“false?==?變量”的形式,以防止誤寫為賦值運算。
4、邏輯運算符
a.邏輯運算符用于對boolean型結果的表達式進行運算,運算的結果都是boolean型?。
b.“”和“”的區(qū)別在于,如果使用前者連接,那么無論任何情況,“”兩邊的表達式都會參與計算。如果使用后者連接,當“”的左邊為false,則將不會計算其右邊的表達式。“|”和“||”的區(qū)別與“”和“”的區(qū)別一樣。
5、位運算符
位運算——對數(shù)據按二進制位進行移位操作。
適用類型:byte,?short,?char,?int,?long
位運算包括:
位與
|?位或
^?位異或
左移,左移n位相當于乘以2的n次方
右移,右移n位相當于除以2的n次方
無符號右移
注:
a.位運算符也可以與“=”賦值運算符組合產生新的賦值運算符,如:=,?=等。
b.移位不會改變變量本身的值,如a1在一行語句中單獨存在毫無意義。
c.對低于int型的操作數(shù)將先自動轉換為int型再移位;對int型整數(shù)移位ab,系統(tǒng)先將b對32取模,得到的結果才是真正移位的位數(shù);對于long型整數(shù)移位時則是先將移位位數(shù)對64取模。
運算符的優(yōu)先級
編程技巧:
1、不要在一行中編寫太復雜的表達式,可以將其分解為幾條語句。
2、多用括號。
Java基礎——Java語法基礎(3)
程序控制流程
1、順序結構
按順序執(zhí)行
2、if條件語句
a.if...
b.if...else...
可簡寫為:變量?=?布爾表達式??語句1:語句2;
c.if...else?if...else...
3、switch選擇語句
switch(表達式)
{
case?取值1:
語句塊1;
break;
...
case?取值n:
語句塊n;
break;
default:
語句塊n+1;
break;
}
4、while循環(huán)語句
while(條件表達式)
{
執(zhí)行語句
}
5、do?while循環(huán)語句
do
{
執(zhí)行語句
}while(條件表達式)
6、for循環(huán)語句
for(初始化表達式;循環(huán)條件表達式;循環(huán)后操作表達式)
{
執(zhí)行語句
}
7、增強for循環(huán)
for?(循環(huán)變量類型?循環(huán)變量名稱:?要被遍歷的對象)
{
執(zhí)行語句
}
8、break與continue語句
a.一個無標號的break語句會把控制傳回當前最內層循環(huán)(while,do,for,switch)的下一條語句。
b.無標號的continue語句的作用是跳過當前循環(huán)的剩余語句塊,接著執(zhí)行下一次循環(huán)。
數(shù)組
1、數(shù)組的定義
如:int[]?x?=?new?int[100];
或int?x[]?=?new?int[100];
2、數(shù)組的靜態(tài)初始化
如:int[]?aa?=?new?int[]?{3,4,5};
3、多維數(shù)據
如:
int[][]?xx?=?new?int[3][];
xx[0]?=?new?int[3];
xx[1]?=?new?int[2];
4、一些與數(shù)組相關的函數(shù)
a.?System.arraycopy(Object?src,int?srcPos,Object?dest,int?destPos,int?length)復制數(shù)組,將源數(shù)組srcPos開始的length個元素從目標數(shù)組的destPos位置開始存儲。
b.?Array.sort()數(shù)組升序排序
一、標識符
java對各種變量、方法和類等要素命名時使用的字符序列成為標識符;通俗點,凡是自己可以起名字的地方都叫標識符,都遵守標識符的規(guī)則
1.標識符命名規(guī)則:
1)標識符由字符、下劃線、美元符或數(shù)字組成。
2)標識符應以字符、下劃線、美元符開頭
3)java標識符大小寫敏感,長度無限制
4)約定俗成,java標識符選取應該注意“見名知意”且不能與java語言的關鍵字(eclipes中帶顏色的基本都是關鍵字)重名
二、關鍵字
java中一些賦以特定含義,用作專門用途的關鍵的字符串成為關鍵字(keyword);且大多數(shù)編輯器都會將關鍵字用特殊方式標出 所有java關鍵字都是小寫英文
一些常用關鍵字:
三、java的基本數(shù)據類型
1.java常量
java的常量值用字符串表示,區(qū)分為不同的數(shù)據類型。如:整型常量:1234實型常量:3.14字符常量:’a’邏輯常量:true、false字符串常量:”HelloWorld”
注意:
1)區(qū)分字符常量和字符串常量
字符常量是單引號引起來的單個,字符串常量是雙引號引起來的不限長度
由于java采用Unicode編碼,每個字符占兩個字節(jié),因而可用天十六進制編碼形式表示,當然也可以用一個中文表示(單個中文占用兩個字節(jié))
2)”常量”這個名次還會用在另外其他語境中表示值不可變的變量
2.java變量
java變量是程序中最基本的存儲單元,其要素包括變量名,變量類型和作用域。java程序中每一個變量都屬于特定的數(shù)據類型,在使用前必需對其進行聲明,聲明格式為:type varName [=value]例如:int i =100;foloat f=12.3f;double d1,d2,d3=0.123;(聲明了三個變量,其中d1,d2是默認值,d3=0.123)String s=”hello”
從本質上講,變量其實是內存中的一小塊區(qū)域,使用變量名來訪問這塊區(qū)域,因此,每一個變量使用前必需先聲明,然后必需進行賦值,才能使用。
1)java變量分類
按被聲明的位置劃分:
局部變量:方法或語句塊內部定義的變量,只能在被定義的方法或語句塊內使用
成員變量:方法外部、類的內部定義的變量,可以在整個類中使用,包括類里的方法或語句塊內也可以使用
注意:類外面是不能有變量的聲明的
按所屬的數(shù)據類型劃分:
基本數(shù)據類型變量
引用數(shù)據類型變量
四、運算符
java語言支持如下運算符:
算術運算符:+ - * / % ++ --
關系運算符: = = == !=
邏輯運算符:! | ^ ||
位運算符: | ^ ~
賦值運算符:=
拓展賦值運算符:+ = -= *= /=
字符串鏈接運算符:+
三目條件運算符 ? :
1.算數(shù)運算符
注意:
1)
位運算符中的!、、|、^跟羅技運算符相同,只是位運算符是對變量的二進制進行操作,我個人是用不到的,所以不在這里多做介紹
2)
++(—)
在前時先運算再取值
在后時先取值再運算
2.邏輯運算符
例如:
3.擴展賦值運算符
4.字符串連接符
“ + ”運算符兩側的操作數(shù)中只要有一個是字符串類型,系統(tǒng)會自動將另一個操作數(shù)轉換為字符串然后進行連接,例如:
4 + 5 = 94 + “ab” = “4ab”
5.三目條件運算符
語法格式: x ? y : z 其中x為boolean類型表達式,先計算x的值,若為true,則整個三目運算的結果為表達式y(tǒng)的值,否則整個運算結果為表達式z的值。
五、表達式和語句
1.表達式
表達式是符合一定語法規(guī)則的運算符和操作數(shù)的序列,例如:a5.0 + a(a – b) * c – 4i 30 i %10 !=0
1)表達式的類型和值
表達式中的操作數(shù)進行運算得到的結果稱為表達式的值
表達式值的數(shù)據類型即為表達式的類型
2)表達式的運算順序
應按照運算符的優(yōu)先級從高到低的順序進行
優(yōu)先級相同的運算符按照實現(xiàn)約定的結合方式進行
我個人覺得運算順序這塊是可以忽略的,首先我的邏輯思維能力不是特別強,另外我的記性也不是特別好,所以如果我需要在表達式中區(qū)分優(yōu)先級的話我會選擇加括號。但是我覺得對于一些比較復雜且關鍵的邏輯運算,如果個人邏輯運算能力加記憶都比較好可以保證不出錯的話,善用羅技運算符優(yōu)先級未嘗不是一種不讓別人看懂你代碼copy的手段。算是一種小小的防護吧,反正我這種人是不會去嘗試分析這種代碼的,太累
2.分支(條件)語句
ifif ?… elseif ?… else if … else ifif ?… else if … else ?if …else
switch () {case xx:
……………case xx:
……………default:
……………}
1.java中switch語句只能探測int類型的值(char類型的值也可以,因為他可以轉換城int類型)
2.小心case穿透,所以最好與break連用
3.多個case可以連用,如下的示例代碼也可以這樣寫(當i=1,2,18都會輸出18):
3.循環(huán)語句
for(…;…;…){……}while(…){……}先判斷再執(zhí)行大括號里面的內容,然后再判斷是否要繼續(xù)執(zhí)行do{……} whille(…); 先執(zhí)行大括號里面的內容再判斷是否要繼續(xù)執(zhí)行
4.break continue語句
break語句用于終止某個語句塊的執(zhí)行。用在循環(huán)體語句中么可以強行退出循環(huán)continue語句用在循環(huán)體語句中,用于終止某次循環(huán)過程,跳過循環(huán)中continue語句下面未執(zhí)行的循環(huán),開始下一次循環(huán)過程
八、方法
java的方法類似于其他語言的函數(shù),是一段用來完成特定功能的代碼片段,聲明格式:[修飾符1 ?修飾符2 ?…] 返回值類型 ?方法名 ?(形式參數(shù)列表) ?{
java語句}
形式參數(shù):在方法被調用時用于接受外界輸入的數(shù)據
實參:調用方法時實際純給方法的數(shù)據
返回值:方法在執(zhí)行完畢后返回給調用他的環(huán)境的數(shù)據
返回值類型:實現(xiàn)約定的返回值的數(shù)據類型,如無返回值,必需給出返回值類型void
java語言中調用方法:對象名.方法名(實參列表)
實參的數(shù)目、數(shù)據類型和次序必需和所調用方法聲明的形參列表匹配
return語句終止方法的運行并指定要返回的數(shù)據
java中進行函數(shù)調用傳遞參數(shù)時,遵循值傳遞的原則:
基本類型傳遞的是該數(shù)據值本身,引用累心美國傳遞的是對對象的引用,而不是對象本身
例子中的方法1,前面定義的數(shù)據類型為void, 所以方法中不能有return返回值,方法4中因為有return返回值,所以前面必需定義為返回值的類型,也就是m4前面那個int
九、遞歸調用
遞歸調用是指在方法執(zhí)行過程中出現(xiàn)該方法本身的調用
先看一個例子,這是一個簡單的遞歸調用:
簡單分析下:
1.首先main主方法中輸出字符串,內容是test方法當參數(shù)等于5的時候的返回值2.然后將參數(shù)5傳入test方法,返回值是:5 * test(4)3.再次將參數(shù)4傳入test方法中,返回值是:4 * test(3)4.再將參數(shù)3傳入test方法中,返回值是:3 * test(2)5.再講參數(shù)2傳入test方法中:返回值是:2 * test(1)6.再將參數(shù)1傳入到方法中:返回值是:1然后程序開始往回走,返回值傳入test(1)中得到2*1再往回走,將剛剛得到的2*1傳入到test(2)中得到3*2*1還要往回走,將剛剛得到的3*2*1傳入到test(3)中得到4*3*2*1還要往回走,將剛剛得到的4*3*2*1傳入到test(4)中也就是test(5)的返回值,得到5*4*3*2*1最后將test5的返回值傳入到我們的主方法輸出于語句中5*4*3*2*1=120,那么我們的輸出語句輸出的應該為120
這就是簡單的遞歸調用的例子了
再來看一個例子:
非遞歸的寫法:
請自行領悟
最后奉上java基礎語法完整學習路線圖,除此之外還有精心整理的其他java學習路線圖,學習書籍電子書,阿里巴巴手冊,視頻教程等即可點此領?。?/p>
下面是一個存儲班級三十名學生基本信息的 Java 代碼示例:
import java.util.ArrayList;
public class Student {
private String name;
private int age;
private String gender;
public Student(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public String getGender() {
return gender;
}
}
public class Classroom {
private ArrayListStudent students;
public Classroom() {
this.students = new ArrayListStudent();
}
public void addStudent(Student student) {
students.add(student);
}
public ArrayListStudent getStudents() {
return students;
}
}
public class Main {
public static void main(String[] args) {
Classroom classroom = new Classroom();
// 添加 30 名學生的基本信息
classroom.addStudent(new Student("Tom", 18, "Male"));
classroom.addStudent(new Student("Alice", 19, "Female"));
// ...
// 此處省略 28 名學生的信息
// 獲取所有學生的信息
ArrayListStudent students = classroom.getStudents();
for (Student student : students) {
System.out.println("Name: " + student.getName());
System.out.println("Age: " + student.getAge());
System.out.println("Gender: " + student.getGender());
}
}
}
該代碼定義了兩個類:Student 類表示一個學生,包含了學生的姓名、年齡和性別等信息;Classroom 類表示一個班級,包含了一個學生的列表,并提供了添加學生和獲取學生列表的方法。
在 Main 類的 main 方法中,我們首先實例化一個 Classroom 對象,然后依次添加 30 名學生的信息。最后,我們調用 getStudents 方法獲取所
Java程序包括2種
1) Java 應用程序,必須具有一個main方法入口
public class Test{
public static void main(String args[]){
}
}
2) Java 小應用程序
Applet類中的四種基本方法用來控制其運行狀態(tài):init()、start()、stop()、destroy() ,至少具有init start方法。。