JavaTutorial

函数与四则运算

函数(方法)

和C类似,Java的执行也是嵌套的函数调用。JVM执行Java代码时,绝大多数情况下,先调用main函数来执行代码,通过构造其他对象来调用构造函数,然后调用对象的方法。main函数返回后,JVM退出程序。

定义函数

在第一个Java程序里,public static void main(String[] args) {//...;}就是函数的定义。其中public static是修饰符(后面会讲,函数可以没有这一部分),void是函数的返回值的类型,void代表什么都不返回,main是函数名,(String[] args)是函数的参数列表,列表的每一项是参数名和对应的类型,被花括号{}包围的就是可以执行的代码。

下面这个例子里,定义了main函数和一个名叫power的函数。类似于数学函数 $f \left (x \right ) = x \cdot x $,这个函数接受一个变量x,输出变量的平方。将来的专业课里会出现一大堆数学公式(除非你选中了软件工程),数学公式是一种程序,变换数学公式就会得到写法不同但是等价的程序。

public class Main{
    public static void main(String[] args) {
        System.out.println("power of " + 3 + "is: " + power(3));
    }

    /**  */
    public static double power(double x){
        return x*x;
    }
}

调用函数

如上所示,调用在主类Main中定义的函数,只需要写出方法名和参数:

   power  (  3  )
//方法名    参数

调用函数的时候,在括号里写出参数,确保这些参数的类型和函数定义相匹配。Java执行函数调用的过程与C类似,在调用函数的时候用参数名(形参)作为变量名,传入的数值或变量(实参)赋给参数名,从而在函数内,根据参数定义创建一系列局部变量。

函数的重载

可以定义同名的不同方法,每个方法有不同的输入参数的类型组合,调用方法时通过传入的参数类型来确定被调用的方法。我们称这种关系为函数的重载

一个类中可以有多个同名方法,其参数的个数和/或每个参数的类型不同,这种语法特性叫做函数的重载(function overload)

Java的输出函数println就是被重载的函数。

PrintStream stream = System.out;
stream.println("Hello world");
stream.println(19260817);
stream.println(true);

后面我们还会见到其他的重载函数。

基本运算符

Java语言的运算符与C语言基本相同。

位运算符也与C语言基本相同

数学函数与常量

Java在Math类中,包含了各种各样的数学函数,我们需要使用时,在程序顶部加上

import static java.lang.Math.*;

简单列举如下:

数值运算例题

利用泰勒多项式展开,求解sin函数的值,并与Java内置的正弦函数比较取值。sin的泰勒展开(在原点处展开,只取前七次导数)为: \(\sin{x} = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!}\)

import static java.lang.Math.*;

public class Main{
    public static void main(String[] args) {
        System.out.println("sin taylor:\t"+sinTaylar(0.4*PI)+"sin system:\t"+sin(0.4*PI));
    }

    public static double sinTaylar(double x){
        return x - pow(x,3)/(3*2*1) + pow(x,5)/(5*4*3*2*1) - pow(x,7)/(7*6*5*4*3*2*1);
    }
}

强制类型转换

与C语言类似

括号与运算符

与C语言类似