内部类和异常类
相关知识点
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