提醒:编程语言的语法是最机械的。在阅读过程中,请尽量关注于程序做了些什么,而一些语法细节可以暂时忽略。入门之后,在今后的读写代码过程中,语法自然会熟练起来。
三 java 的现状
在更进一步之前,最好了解现在Java都用来做什么.
优点:
- Oracle JDK是开源的, 另有一个社区维护的版本OpenJDK也是.
- 程序员用户群很大, 能碰到的问题基本上都被前人趟过雷了.
- 可以用的成熟的经过时间检验的库很多.
用途:
- 很大一部分网络服务
- 大多数安卓手机应用
- 少量游戏和桌面应用
- 一些企业内部用Java Applet做可以嵌入网页的在线工具. Chrome浏览器已不支持Java Applet,原因之一是安全性
四 用Java算术
新建文件” 四则运算 .java”
class 四则运算 { public static void main (String[] 参数) { System.out.println(1+2); } }
编译运行后,果然输出3. 再试试其他四则运算吧,加减乘除 运算符 分别是+-*/. 还有括号也可以用. 注: 如果算式中所有的数都是整数,那么每步运算都会取整
恭喜! 你已经可以用Java程序完成数学运算了.
那么其他的运算呢? 新建文件” 根号 .java”
class 根号 {
public static void main (String[] 参数) {
System.out.println(Math. sqrt (4));
}
}
看起来告诉程序的值是4,编译运行后, 果然如愿打印出了2.0. Math.sqrt是Java中开根号的方法. 应该不用啰嗦了,试试把4改成其他的数,看看结果如何?
现在,你可能已经觉得程序的”回答”太”精简”和生硬了,那么人性化一些吧,下面开始只列出main方法内的代码
System.out.println("4的 平方根 是" + Math.sqrt(4));
输出听起来顺耳些了,但如果想要把4改成其他数,需要改程序的两个地方,这种麻烦可要不得! 可以把4先存到一个变量里,然后在两处引用同一个变量:
int 数 = 4; System.out.println(数 + "的平方根是" + Math.sqrt(数));
这样只要改一处了.不过,为了改输入值,还是要改程序,再编译再运行,这种麻烦可要不得! “参数”终于派上用场了.
int 数 = Integer.parseInt(参数[0]); System.out.println(数 + "的平方根是" + Math.sqrt(数));
“参数[0]”是”参数”数组的第一个值. Integer.parseInt是Java把字符串转换成整数的方法. 现在代码里没有了输入值,该怎样告诉程序需要给什么数开根号呢? 在运行程序时,命令后加上一个”参数”:
$ java 根号 4
如果忘了在运行时加参数, 这个程序会打印一个异常报告: java.lang.ArrayIndexOutOfBoundsException. 意思是:数组是空的,却要取第一个值,没辙.
试试多加几个参数吧, 参数[1]是”参数”数组第二个值,以此类推. 恭喜! 你的程序不用修改代码就可以接受不同的外部输入了.
Math是Java自带标准库中的数学类,包含很多有用的方法.详细请查阅JDK文档.
标准库有很多有用的类. 比如随机数, 用在很多聊天机器人上. 新建” 随机数生成器 .java”:
class 随机数生成器 { public static void main (String[] 参数) { java.util.Random 生成器 = new java.util.Random(); System.out.println("我想到的数字是:" + 生成器.nextInt()); } }
java.util.Random是随机数类的全路径, java.util是它所在的包. 没有全路径Java就找不到这个类了. 为什么Math和Integer没有这样的前缀呢? 因为他们在java.lang包里,是”亲生”的,不用包名Java也能找到这些类.
“生成器”是随机数类的一个”个体”. 用new关键词来产生. 一个现实的比方: “人”是一个类型, 你我都是同样类型的不同个体. nextInt是产生一个随机数的方法. 为什么Math.sqrt和Integer.parseInt不用new出一个个体呢? 因为它们和main方法一样, 都是静态(static)的.
这样重复类的全名看着真累, 下面用import来开头导入这个类路径, 之后就不用再重复了:
import java.util.Random; class 随机数生成器 { public static void main (String[] 参数) { Random 生成器 = new Random(); System.out.println("我想到的数字是:" + 生成器.nextInt()); } }
敬请期待后续,关注本号“用 中文编程 ”!