【算法第四版笔记】1.1 基础编程模型
Java八种基本数据类型:byte
,short
,int
,long
,float
,double
,boolean
,char
break
语句:立即从循环中退出continue
语句:立即开始下一轮循环
如果要将数组复制一份,应该声明、创建并初始化一个新的数组,然后将原数组中的元素挨个复制到新数组
递归注意三点:
- 递归出口,即 最简单情况;
- 递归调用总是去尝试解决一个规模更小的子问题,直到最简单情况;
- 递归调用的父问题和尝试解决的子问题之间不应该有交集。
重定向与管道
- 将标准输出重定向至一个文件
% java RandomSeq 1000 100.0 200.0 > data.txt
这条指令指明标准输出流不是被打印至终端窗口,而是写入一个名为data.txt
的文件。
- 重定向标准输入从文件读取数据
% java Average < data.txt
这条命令会从文件data.txt
中读取一系列数值并计算它们的平均值。具体来说,“<”告诉操作系统读取文本文件data.txt
作为输入流而不是在终端窗口中等待用户的输入。
- 将上述结合起来,将一个程序的输出重定向为另一个程序的输入叫做管道
% java RandomSeq 1000 100.0 200.0 | java Average
这条命令将RandomSeq
的标准输出和Average
的标准输入指定为同一个流。至于两个程序的运行顺序,取决于操作系统:可能先运行RandomSeq
并产生一些输出,然后再运行Average
,来消耗这些输出;也可能先运行Average
,直到它需要一些输入然后再运行RandomSeq
来产生一些输出。我们的程序不需要担心这些细节。
问:能够将double
类型的值与int
类型的值相互比较吗?
答:不通过类型转换是不行的,但Java一般会自动进行所需的类型转换。例如:int x = 3
,x < 3.1
的值为true
,这是因为在进行比较前Java会将x
转换为double
类型。
问:Java表达式1 / 0
和1.0 / 0.0
的值是什么?
答:第一个会发生除以零异常;第二个值为Infinity
(无穷大)。
问:能够使用<
和>
比较String
变量吗?
答:不能,只有原始数据类型定义了这些运算符。
问:Java中int[] a
和int a[]
有什么不同吗?
答:在Java中,两者等价。Java提倡int[] a
方式是因为这种方式能更清楚地说明这是一个整型数组。
问:如果a[]
是一个数组,为什么System.out.println(a);
打印出的不是数组元素?
答:这样打印的是数组的地址。
问:在Java中,一个静态方法能够将另一个静态方法作为参数吗?
答:不能。