《算法》第四版随笔

此博客连接: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分隔字符

 

posted @ 2020-12-05 11:51  萍2樱释  阅读(102)  评论(1编辑  收藏  举报