《算法》第四版随笔
此博客连接:https://www.cnblogs.com/ping2yingshi/p/14088943.html
基础
字符串
字符串拼接
+
类型转换
整型转字符串
int a=6; String str=toString.value(a);
字符串转整型
String str="123" int a=Integer.parseInt(str)
在Java中,连接字符串的时候会自动讲任意数据类型的值转换为字符串,如果+后的第一个参数时字符串类型,那么Java会自动将其他参数都转换为字符串类型。
模块化编程
API的目的是讲调用和实现分离:除了API中给出信息,调用者不需要知道如何实现的其他细节,而实现也不应该考虑特殊场景。
命令和参数
命令 参数 作用
javac java文件名 编译程序
java class文件名和命令行参数 运行程序
标准输出
public class RandomSeq { public static void main(String[] args) { // 打印N个(lo, hi)之间的随机值 int N = Integer.parseInt(args[0]); double lo = Double.parseDouble(args[1]); double hi = Double.parseDouble(args[2]); for (int i = 0; i < N; i++) { double x = StdRandom.uniform(lo, hi); StdOut.printf("%.2f\n", x); } } }
注意
使用 printf() 方法时需要记住的最重要的一点就是,格式 字符串中的转换代码和对应参数的数据类型必须匹配。
标准输入
重定向
重定向输出
使用>可以指定输出,例如:> textout.txt,表示输出到一个名为test的文本文件中。
重定向输入
使用<可以指定输入,例如:<textinput.txt,表示从一个名为test的文本文件中读取输入。
管道
将一个程序的重定向输出指定为另外一个重定向的输入称为管道。
使用|可以把一个重定向的输出转换为另外一个重定向的输入。例如: textout.txt|textinput.txt即把textout.txt的输出指定到textinput.txt的输入中。
基于文件的输入与输出
输入(name可以是文件或者是网页也是可以的)
readInt(String name)
readdouble(String name)
readString(String name)
标准绘图工具
绘制基本图形,点,直线,圆
控制方法:改变画布大小,颜色,文本字体,绘图时间等。
二分查找
思想:判断需要查找的值和数组中间的元素比较大小,如果查找的值大于中间元素,则查找数组后半段值,如果查找的值小于中间的值,则查找数组前半段的值。
public static int rank(int key, int[] a) { // 数组必须是有序的 int lo=0; int hi=a.length; int mid=a[(hi+lo)/2]; while(lo<hi) { if(key<mid) { hi=mid-1; } if(key>mid){ lo=mid+1; } else return mid; } return -1; }
数据抽象
java中使用class关键字构造被称为引用类型的数据结构。
使用对象
使用对象时,需要对对象进行什么,声明的作用原来是以下几点
例如:
Map<Integer> map;
声明该类型的变量,以用来引用对象;
map=new HashMap();
使用关键字 new 触发能够创建该类型的对象的一个构造函数;
map.get(key)
使用变量名在语句或表达式中调用实例方法。
赋值语句
使用引用类型的赋值语句将会创建该引用的一个副本。赋值 语句不会创建新的对象,而只是创建另一个指向某个已经存在的 对象的引用。这种情况被称为别名:两个变量同时指向同一个对 象。所以昨天在使用别名保存对象时,其中一个对象发生改变,另外一个对象也会发生改变,可以利用深拷贝创建一个新的对象。
改变一个对象的状态将会影响 到所有和该对象的别名有关的代码。我们习惯于认为两个不同的原始数据类型的变量是相互独立的,但这种感觉对于引用类型的变量并不适用。这句话我昨天早上看书的时候没有看懂,昨天晚上写的进度就用到了这一点,而且我耗费一下午时间找bug,最后发现就是改变对象时,虽然给对象起了别名,但是改变其中一个对象,另外一个对象也会发生改变。这里终于看懂了。
问题
上面如此长的一段话,我理解的就是传值和传地址的区别?
下面这句话我说了三遍,才明白,对象数组中存的是对象的引用而不是对象本身的值.
对象的三大性质;
1.状态
2.标识
3.行为
字符串的API
CharAt 取第i个字符
concat(String t) 将t赋值在改字符串末尾
substring(int i,int j)该字符串的子字符串
split(String delim) 使用delim分隔字符