Java 是一种静态类型语言,这意味着变量的类型在编译期就已确定。 把值赋给一个名字,称为定义变量。 定义变量时需要显式指定它的类型。
int explicitVar = 10;
更新变量的值要通过=运算符完成。
这里的=并不表示数学意义上的相等,它只是把一个值赋给变量。
变量一旦定义,它的类型就永远无法改变。
int count = 1; // Assign initial value
count = 2; // Update to new value
// Compiler error when assigning a different type
// count = false;
Java 是一种面向对象语言,要求所有函数都定义在_类_中。
class关键字用于定义类。
class Calculator {
// ...
}
类中的函数称为_方法_。
每个方法可以有零个或多个形参。
所有形参都必须显式标注类型,形参没有类型推断。
同样,返回类型也必须显式写出。
方法通过return关键字返回值。
要让其他类能够调用某个方法,必须加上public访问修饰符。
class Calculator {
public int add(int x, int y) {
return x + y;
}
}
调用方法时,需要指定它所属的类和方法名,并为方法的每个形参传入实参。
int sum = new Calculator().add(1, 2); // here the "add" method has been called to perform the task of addition
Java 中的作用域定义在{和}字符之间。
Java 支持两种注释。
单行注释以//开头,多行注释写在/*和*/之间。
在这个练习中,你将编写一些代码,帮助你按照最喜欢的烹饪书做出一份美味的千层面。
一共有四个任务,都与烹饪千层面所用的时间有关。
定义expectedMinutesInOven()方法,它不接受任何形参,返回千层面应该在烤箱中烤多少分钟。根据烹饪书,烤箱的预期时间是 40 分钟:
Lasagna lasagna = new Lasagna();
lasagna.expectedMinutesInOven();
// => 40
定义remainingMinutesInOven()方法,它接收千层面已经在烤箱中度过的实际分钟数作为形参,并根据上一个任务中得出的烤箱预期时间,返回千层面还需要在烤箱中烤多少分钟。
Lasagna lasagna = new Lasagna();
lasagna.remainingMinutesInOven(30);
// => 10
定义preparationTimeInMinutes()方法,它接收你为千层面添加的层数作为形参,并返回你准备千层面花了多少分钟,假设准备每一层需要 2 分钟。
Lasagna lasagna = new Lasagna();
lasagna.preparationTimeInMinutes(2);
// => 4
定义totalTimeInMinutes()方法,它接收两个形参:第一个形参是你为千层面添加的层数,第二个形参是千层面已经在烤箱中度过的分钟数。这个函数应返回你烹饪千层面总共花了多少分钟,也就是准备时间的分钟数与此刻千层面在烤箱中度过的分钟数之和。
Lasagna lasagna = new Lasagna();
lasagna.totalTimeInMinutes(3, 20);
// => 26