内部類和異常類
相關知識點
Java支援
在一個類中聲明另一個類
,這樣的類稱為内部類,而包含内部類的類稱為内都類的外嵌類。内部類的外嵌類的成員變量在内部類中仍然有效,内部類中的方法也可以調用外嵌類中的方法。内部類的類體中不可以聲明類變量和類方法。内部類僅供它的外嵌類使用,其他類不能用某個類的内部類聲明對象。
class School {
String schoolName;
InnerNewspaper innerNewspaper;
School(String name) {
schoolName = name;
innerNewspaper = new InnerNewspaper();
}
public void show() {
innerNewspaper.showContent();
}
class InnerNewspaper { //内部類
public void showContent() {
System.out.println("校園報");
}
}
}
相關知識點2
Java使用
try…catch語句
來處理異常,将可能出現的異常操作放在try…catch語句的try部分,一旦try部分
抛出異常對象
,例如,調用某個抛出異常的方法抛出了異常對象,則try部分将立刻結束執行,轉向執行相應的catch部分。
class DangerException extends Exception {
public void toshow() {
System.out.println("危險品!");
}
}
class Mechine {
public void checkGoods(Goods goods) throws DangerException { //關鍵是throws
if (goods.isDanger()) {
DangerException dangerException = new DangerException(); //關鍵
throw dangerException; //關鍵
}
}
}
class Goods {
String name;
boolean isDanger;
public void setName(String name) {
this.name = name;
}
public void setDanger(boolean danger) {
isDanger = danger;
}
public boolean isDanger() {
return isDanger;
}
public String getName() {
return name;
}
}
public class Example_2 {
public static void main(String[] args) {
Mechine mechine = new Mechine();
String strings[] = {"香蕉", "炸彈", "蘋果", "硫酸", "手表"};
Goods[] goods = new Goods[strings.length];
for (int i = 0; i < strings.length; i++) {
goods[i] = new Goods();
if (i % 2 == 0) {
goods[i].setName(strings[i]);
goods[i].setDanger(false);
} else {
goods[i].setName(strings[i]);
goods[i].setDanger(true);
}
}
for (int i = 0; i < strings.length; i++) {
try {
mechine.checkGoods(goods[i]);
System.out.println(goods[i].getName() + "不是危險品");
} catch (DangerException e) {
e.toshow();
System.out.println(goods[i].getName()) ;
}
}
}
}
相關知識點3
Java中的Lambda表達式的主要目的是在使用
單接口
(隻含有一個方法的接口)匿名類時,
讓代碼更加簡潔
。是以,掌握在單接口匿名類中使用Lambda表達式也就基本掌握了Java的Lambda表達式。Lambda表達式就是隻寫參數清單和方法體的匿名方法(參數清單和方法體之間的符号是
->
interface Count {
double getArea(double r); //抽象方法
}
class Square {
double r;
public void setR(double r) {
this.r = r;
}
public void showArea(Count count) {
double result = count.getArea(r);
System.out.println("結果是" + result);
}
}
public class Example_3 {
public static void main(String[] args) {
Square square = new Square();
square.setR(12);
square.showArea((double r) -> { //lambda表達式,重寫單接口中的方法
return r * r;
});
square.showArea(new Count() { //使用内部類
@Override
public double getArea(double r) {
return r * r * r;
}
}
);
}
}
程式設計語言的基本概念
低級語言和進階語言
計算機硬體隻能識别由0、1字元序列組成的機器指令,是以機器指令是最基本的計算機語言。用機器語言編制程式效率低、可讀性差,難以了解、修改和維護。是以,人們設計了彙編語言。用容易記憶的符号代譽0、1序列,來表示機器指令中的操作碼和操作數。
例如:介ADD-表示加法、SUB表示減法等。雖然使用彙編語言編寫程式的效率和程式的可讀性有所提高,但彙編語言是面向機器的營言,其書寫格式在很大程度上取決于特定計算機的機器指令,機器語言和彙編語言被稱為低級語言。
人們開發了功能更強、抽象級别近高的語言以支援程式設計,是以就産生了面向備類應用的程式設計語言,即進階語言,常見的有Java、C、C++、C#、Python、PHP等。這類語言與人們使用的自然語言比較接近,大大提高了程式設計的效率。
編譯程式和解釋程式
目前,盡管人們可以街助進階語言與計算機進行互動,但是計算機仍簽易能理限利和執行由0、1序列構成的機器語言,是以進階程式設計語言需要翻譯,擔負這一任務的程式稱為為“語言處理程式”由子應用的不同,程式語言的翻譯也是多種多樣的。它們大緻可分彙程式設計式、解釋程式、編譯程式。
用某種進階語後或彙編語言編寫的程式稱源程式,源程式不能直接在計算機上執行。如果源程式是用彙編語言編寫的,則需要一個稱為彙程式設計式的翻譯程式将其翻譯成自标程式後才能執行。如果源程式是用某種進階語言編寫的,則需要對應的解釋程式或編譯程式對其進行翻譯,然後在機器上運作。
也稱為解釋器,它可以直接解釋執行源程式,或者将源程式翻譯成某種中間表示形式後再加以執行:而編譯程式(編譯器)則首先将源程式翻譯成目智語言程式,将目标程式與庫函數連結,形成可執行程式,然後在計算機上運作可執行程式。這兩種語言處理程式的根本差別:在編譯方式下,機器上運作的是與源程式等價的目标程式,源程式和編譯程式都不再參自标程式的執行過程;而在解釋方式下,解釋程式和源程式(或其某種等價表示)要參與到程式的運作過程中,運作程式的控制權在解釋程式。
解釋程式
。
解釋器翻譯源程式時不産生獨立的目标程式,而編譯器則需将源程式翻譯成獨立的目标程式
程式設計語言的定義
一般地,程式設計語言的定義都涉及文法、語義和語用3個方面。
。文法是指由程式設計語言基本符号組成程式中的各個文法成分(包括程式)的
文法
,其中由基本字元構成的符号(單詞)書寫規則稱為詞法規則,由符号(單詞)構成文法成分的規則稱為文法規則。程式設計語言的文法可通過形式語言進行描述。
組規則
。語義是程式設計語言中按文法規則構成的
語義
,可分為
各個文法成分的含義
和
靜态語義
。靜态語義是指編譯時可以确定的文法成分的含義,而運作時刻才能确定的含義是動态語義。一個程式的執行效果說明了該程式的語義,它取決于構成程式的各個組成部分的語義。
動态語義
語用
。語用表示了構成語言的各個記号和使用者的關系,涉及符号的來源、使用和影響。語言的實作還涉及語境問題。語境是指了解和實作程式設計語言的環境,這種環境包括編譯環境和運作環境。
CET4P211
- weaken
- dumb
- landlord
- horrible
- intense
- scope
- recovery
- refusal
- edition
- glove
- handwriting
- educate
- speculate
- mechanism