- 工業(yè)機(jī)器人運(yùn)動仿真編程實(shí)踐:基于Android和OpenGL
- 郇極
- 2406字
- 2020-05-29 12:10:12
3.3 示例程序設(shè)計(jì)的Java語法要點(diǎn)
3.3.1 類和對象
1.類的定義
將具有相同屬性及相同行為的一組對象稱為類,它是Java程序的基本組成單元。類、屬性和方法的定義格式和作用如下。
[修飾符]class類名[extends父類名][implements接口1,接口2]{
類屬性聲明:[修飾符]屬性類型 屬性名
類方法聲明:[修飾符]返回值類型 方法名(形式參數(shù)表)[throw異常]{}
}
1)修飾符定義了類、屬性和方法的訪問特性及其他特性。修飾符包括public、private、protected、static、final、abstract等。
2)繼承是由現(xiàn)有的類創(chuàng)建新類的機(jī)制。子類(新的類)通過關(guān)鍵字extends繼承父類(被繼承的類)。Java的類只能有一個直接父類,使用接口可以實(shí)現(xiàn)多重繼承。一個類可以通過關(guān)鍵字implements實(shí)現(xiàn)一個或多個接口。
3)類屬性也稱為字段或成員變量,它的作用域是整個類。
4)類方法定義了該類的對象所能完成的某一項(xiàng)具體功能。類的構(gòu)造方法是一種特殊的方法,它的定義方式與普通方法的區(qū)別包括以下3點(diǎn):
①構(gòu)造方法的名稱和類名相同;
②構(gòu)造方法沒有返回值;
③構(gòu)造方法在創(chuàng)建對象時被自動調(diào)用。
以下是創(chuàng)建機(jī)器人仿真程序gl_robot中部件part0部分的示例代碼:
2.創(chuàng)建對象
Java程序用類創(chuàng)建對象,通過對象之間的信息傳遞完成各種功能。創(chuàng)建對象就是在內(nèi)存中開辟一段空間,存放對象的屬性和方法。創(chuàng)建對象分為聲明對象和實(shí)例化對象兩個步驟,它們的格式如下:
類名 對象名; //對象的聲明
對象名=new 類名(參數(shù)列表); //對象的實(shí)例化
也可以將兩個步驟合為一個步驟,如下:
類名 對象名=new類名(參數(shù)列表); //對象的聲明和實(shí)例化
以下是機(jī)器人仿真樣機(jī)gl_robot中部件part0~part2的聲明和實(shí)例化的示例代碼:
public class viewRenderer implements Renderer{
//加載part0
private_part0 part0=new_part0();
//加載part1
private_part1 part1=new_part1();
//加載part2
private_part2 part2=new_part2();
//
……
}
3.對象的使用
通過訪問對象的屬性和方法可以使用對象,需要使用引用運(yùn)算符“.”完成,其格式如下:
對象名.屬性名 //使用對象中的屬性
對象名.方法名 //使用對象中的方法
以下是機(jī)器人仿真程序gl_robot中使用對象_surface的屬性和方法的示例代碼:
//加載surface類
_surface surface=new_surface();
//調(diào)用surface類的rect_vertex()方法
surface.rect_vertex(p0,p1,p2,p3,normal_p0);
//引用surface類的變量
vtx_n=surface.vtx_n;
3.3.2 枚舉類型
Java 5以后的版本開始支持枚舉類型。當(dāng)需要一個有限集合,而且有限集合中的數(shù)據(jù)為特定值時,可以使用枚舉類型。枚舉類型的定義使用關(guān)鍵字enum,其語法格式如下:
以下是枚舉類型OP_MODE的示例代碼:
public enumOP_MODE{
AUTOMATIC, //自動模式
JOG, //手動模式
EDIT, //編輯模式
NULL //空閑
}
3.3.3 數(shù)組
數(shù)組是類型相同的有序數(shù)據(jù)集合,提供數(shù)據(jù)的順序操作和處理機(jī)制。
1.數(shù)組的聲明和初始化
下面以一維數(shù)組為例介紹數(shù)組的聲明和初始化過程。
一維數(shù)組的聲明和初始化方法為:
數(shù)組類型[]數(shù)組名;
數(shù)組名=new數(shù)組類型[元素?cái)?shù)目];
或
數(shù)組類型[]數(shù)組名=new數(shù)組類型[元素?cái)?shù)目];
以下是一個元素?cái)?shù)目為N的整型變量數(shù)組a的聲明和初始化示例:
int[]a=new int[N];
2.數(shù)組的引用
Java語言的數(shù)組元素引用方法與C語言相同,下面是一個一維數(shù)組的引用示例:
b=a[i];
3.多維數(shù)組
使用多維數(shù)組可以處理更復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。以下是一個二維數(shù)組的聲明和初始化示例:
int[][]a=new int[N][M];//N和M是整型變量或常數(shù)
3.3.4 String類
1.String類字符串的初始化
使用String類可以定義字符串對象。下面介紹聲明和初始化字符串的示例。
聲明字符串對象s1:
String s1;
用關(guān)鍵字new創(chuàng)建空白字符串對象s2:
String s2=new String();
用賦值方式聲明和初始化一個字符串對象s3:
String s3="OK!";
2.String類字符串與基本數(shù)據(jù)類型之間的轉(zhuǎn)換
將基本數(shù)據(jù)類型轉(zhuǎn)化成String類字符串有以下兩種方法:
1)Java提供String.valueOf()靜態(tài)方法,它的功能是返回變量的字符串形式,例如:
intnum=12345;
String str1=String.valueOf(num);//str1的內(nèi)容是“12345”
2)使用“字符串+操作數(shù)”形式時,操作數(shù)會被自動轉(zhuǎn)換為字符串類型,例如:
int axisNum=8;
String str2="最大軸數(shù)"+axisNum; //str2的內(nèi)容是“最大軸數(shù)8”
基本數(shù)據(jù)類型都有一個對應(yīng)的包裝類(Wrapper Class),例如,int類型對應(yīng)Integer類,float類型對應(yīng)Float類。調(diào)用這些包裝類的相應(yīng)方法即可實(shí)現(xiàn)String類字符串向基本數(shù)據(jù)類型的轉(zhuǎn)化,例如:
String s1="10";
int i=Integer.parseInt(s1);
String s2="3.14"
float f=Float.parseFloat(s2);
3.3.5 異常處理
異常是程序運(yùn)行過程中發(fā)生的、會打斷程序正常執(zhí)行的事件,例如被0除溢出、數(shù)組越界、文件丟失等都屬于異常情況。3.3.4小節(jié)最后一段程序中的方法parseInt()和parseFloat()在執(zhí)行String字符串轉(zhuǎn)化時,如果字符串不合法也會拋出異常。
Java語言提供了try-catch-finally語句,用于實(shí)現(xiàn)異常的捕獲和處理,其格式如下:
try{
可能拋出異常的語句塊
}catch(異常類異常對象){
發(fā)生異常時的處理語句
}finally{//finally語句塊是可以省略的且一定會運(yùn)行到的程序代碼
}
使用try-catch-finally語句后,String類字符串轉(zhuǎn)化成基本數(shù)據(jù)類型的完整代碼如下:
try{
String s1="10";
int i=Integer.parseInt(s1);
String s2="3.14"
float f=Float.parseFloat(s2);
}catch(NumberFormatException exp){
//發(fā)現(xiàn)非法字符,報(bào)警
……
}
Java語言還支持在程序中使用關(guān)鍵字throw拋出異常及自定義異常種類,請查閱相關(guān)Java語法參考書了解這些語法規(guī)則的詳細(xì)內(nèi)容。
3.3.6 包的應(yīng)用
包(Package)又稱為類庫,是Java語言的重要部分。包是類和接口的容器,用于分隔類名空間,一般將一組功能相近或者相關(guān)的類和接口放在一個包中,不同包中的類名可以相同。
創(chuàng)建包是指在當(dāng)前目錄下創(chuàng)建與包名結(jié)構(gòu)一致的目錄結(jié)構(gòu),并將指定的類文件放入該目錄。包的聲明使用關(guān)鍵字package。package語句必須是Java代碼文件的第一條可執(zhí)行語句,而且一個文件中最多只能有一條package語句。以下是機(jī)器人仿真程序gl_robot中包的聲明語句,它指明該文件定義的類屬于包c(diǎn)om.example.gl_robot:packagecom.example.gl_robot; //gl_robot程序包的定義
包的引用分為兩種方式。
第一種方式是將包名作為類名的一部分,采用“包名.類名”的格式訪問其他包中的類。例如要訪問java.util包中的Timer類,則該類可以寫成java.util.Timer。
第二種方式是使用import命令將某個包內(nèi)的類導(dǎo)入,程序代碼不用寫被引用的包名。例如在代碼的開始部分加上“import java.util.*;”,則在程序的其他地方可以直接訪問Timer類。以下是import語句的示例代碼,其中通配符“*”代表包中的所有類:
import java.net.*; //引用java.net包的全部類
import android.widget.Button; //引用Android系統(tǒng)的Button控件
JDK中包括多種實(shí)用的包,如表3.5所列。java.lang包是編譯器自動加載的,因此使用該包中的類時,可以省略“import java.lang.*”語句。
表3.5 Java的常用包及其功能
3.3.7 數(shù)學(xué)運(yùn)算
java.lang包中提供了一個Math類,Math類包含用于執(zhí)行數(shù)學(xué)運(yùn)算的方法,如初等指數(shù)、對數(shù)、平方根和三角函數(shù)等。表3.6和表3.7分別列舉出了Math類中靜態(tài)常量和常用的方法。
表3.6 Math類的靜態(tài)常量
表3.7 Math類的常用方法
- 機(jī)器學(xué)習(xí)實(shí)戰(zhàn):基于Sophon平臺的機(jī)器學(xué)習(xí)理論與實(shí)踐
- Div+CSS 3.0網(wǎng)頁布局案例精粹
- Verilog HDL數(shù)字系統(tǒng)設(shè)計(jì)入門與應(yīng)用實(shí)例
- Matplotlib 3.0 Cookbook
- 統(tǒng)計(jì)學(xué)習(xí)理論與方法:R語言版
- 中國戰(zhàn)略性新興產(chǎn)業(yè)研究與發(fā)展·工業(yè)機(jī)器人
- 工業(yè)機(jī)器人運(yùn)動仿真編程實(shí)踐:基于Android和OpenGL
- Red Hat Linux 9實(shí)務(wù)自學(xué)手冊
- 機(jī)器人制作入門(第4版)
- 穿越計(jì)算機(jī)的迷霧
- 人工智能云平臺:原理、設(shè)計(jì)與應(yīng)用
- Microsoft System Center Data Protection Manager Cookbook
- 智能控制技術(shù)及其應(yīng)用
- Arduino創(chuàng)意機(jī)器人入門:基于Mind+
- 華人動畫師的法蘭西印象