UC Berkeley CS61B(数据结构与算法——Java)学习笔记——持续更新

课程网址(内含自学课程所需的全套资料):Main | CS 61B Spring 2018https://sp18.datastructur.es/

Week1

xterm commands终端指令:

  • cd: change your working directory
  • pwd: present working directory
  • .: means your current directory
  • ..: means one parent directory above your current directory
  • ls: list files/folders in directory
  • mkdir: make a directory
  • rm: remove a file
  • cp: copy a file
  • mv: move or rename a file
  • tab键:自动补全文件名

更详细的解释:

Lab 1 Setup: Setting Up Your Computer | CS 61B Spring 2018https://sp18.datastructur.es/materials/lab/lab1setup/lab1setup簡易常用UNIX (LINUX) 指令http://web.ncyu.edu.tw/~hckuo/Course/unix_cmd.html

Java相关指令:

javac: is used to compile programs (compilation).

java: is used to execute programs (execution), we must always compile before execution.

Python相关指令

python -i、或python3 -i、或winpty python:run python in interactive mode using git bash
quit(): to exit python

Git相关指令:

git init: 初始化:Creates a box in which to permanently store panoramic pictures.

git add: Takes a temporary photo of one thing that can be assembled into a panoramic photo later.

git commit -m: Assembles all available temporary photos into a panoramic photo. Also destroys all temporary photos.

git log: Lists all the panoramic photos we’ve ever taken.

git show: Looks at what is in a particular panoramic photo.

git checkout: Rearranges files back to how they looked in a given panoramic photo. Does not affect the panormiac photos in your box in any way.

gitk: GUI

git clone [remote-repo-URL]: Makes a copy of the specified repository, but on your local computer. Also creates a working directory that has files arranged exactly like the most recent snapshot in the download repository. Also records the URL of the remote repository for subsequent network data transfers, and gives it the special remote-repo-name “origin”.

git remote add [remote-repo-name] [remote-repo-URL]: Records a new location for network data transfers.

git remote -v: Lists all locations for network data transfers.

git pull [remote-repo-name] master: Get the most recent copy of the files as seen in remote-repo-name

git push [remote-repo-name] master: Pushes the most recent copy of your files to the remote-repo-name.

更详细的解释:

Using Git | CS 61B Spring 2018Computer Science 61B: Data Structureshttps://sp18.datastructur.es/materials/guides/using-git.html#a-intro-to-version-control-systemsGit官方文档:

Githttp://git-scm.com/

曾参考的Debug文档:

​​​​​​Java基础1-环境篇:JDK安装与环境变量配置_第一段代码的博客-CSDN博客_java环境
Java SE 6 vs. JRE 1.6 vs. JDK 1.6 - What do these mean? - Stack Overflow
Python was not found; run without arguments to install from the Microsoft Store, or disable this shortcut from Settings - Stack Overflow
Sublime安装、破解、汉化、使用、教程(详解) - 云+社区 - 腾讯云
Git WTFS | CS 61B Spring 2018
CS 61B 搭建 Auto Grade 环境 - 知乎
Git报错解决:OpenSSL SSL_read: Connection was reset, errno 10054 错误解决_危险、的博客-CSDN博客
HTTP/2 stream 1 was not closed cleanly before end of the underlying stream - 知乎

Java——语法跟c和c++非常像(将不一样的地方标红)

%: implements remainder

!=: compares two values for inequality

!: is an unary negation operator that expects a single boolean operand. Therefore it can't be applied on an int.

+: concatenates strings, "horse" + "babies" would return "horsebabies"

+=

public static: 可定义函数, which is a very rough analog of Python's def

//、/* */: comments

System.out.println: 结尾带换行

System.out.print: 结尾不带换行

double someNumber = 1.03e-7: Java supports scientific notation

条件

if(){
    ;//单行时{}可省略
}
else if(){
    ;
}
else{
    ;
}

max=m[i]>max?m[i]:max;

switch (month) {
    case 2:
        days = 28;
        break;//若没有此句,则会just keep moving right on through.
    case 4:
    case 6:
    case 9:
    case 11:
        days = 30;
        break;
    default:
        days = 31;
        break;
}   

循环

while () {
    ;
}

do{
    ;
}while();


for (int i = 0; i < a.length; i = i + 1) {
    if (a[i].contains("ab")) {
        continue;
    }
    if (a[i].contains("cd")) {
        break;//continue和break也适用于while和do while
    }
}

String[] a = {"0", "1", "2"};
//the String s takes on the identity of each String in a exactly once, 
//starting from a[0], all the way up to a[a.length - 1]
for (String s : a) {
    s=="0";
}

数组

int[] numbers;//可直接int[] numbers = new int[3];
numbers = new int[3];
numbers[0] = 4;
numbers[1] = 7;
numbers[2] = 10;

int[] numbers = new int[]{4, 7, 10};

instance method和static method举例

public class Dog{
	/*
	Instantiating a class is almost always done using the new keyword, e.g. Dog d = new Dog().
	An instance of a class in Java is also called an Object.
	*/
	public void bark(){//instance method
    	System.out.println("Moo");
    }
    public static void runFast(){//static method
    	System.out.println("Ruff Run");
    }
   	public static void main(String[] args) {
     	Dog poppa = new Dog();
		poppa.bark();
		//Dog.bark();//编译错误
     	/*
      	error: non-static method bark() cannot be referenced from a static context
    	*/
		poppa.runFast();//OK but not recommended
		Dog.runFast();//可正常运行并输出Ruff Run
    }
}

类的创建的举例

public class DogLoop {
   public static void main(String[] args) {
      Dog smallDog = new Dog(5);
      Dog mediumDog = new Dog(25);
      
      Dog[] manyDogs = new Dog[4];
      manyDogs[0] = smallDog;
      
      Dog.maxDog(manyDogs[0], mediumDog).makeNoise();
   }
   
   public static class Dog {//这里不是static的话会error
      /* Size of the dog in standard dog size units. */
      public int size;

      /* This is a constructor. It tells us how to construct
	 * dogs from our ideal notion of dogness. */

      public Dog(int s) {//注意这个是在创建的对象的里面
         size = s;
      }

      public void makeNoise() {
         if (size < 10) {
            System.out.println("hideous yapping");
         } else if (size < 30) {
            System.out.println("bark!");
         } else {
            System.out.println("woof!");
         }
      }

      /* Return the larger of dog d1 and dog d2. */
      public static Dog maxDog(Dog d1, Dog d2) {
         if (d1.size > d2.size) {
            return d1;
         }
         return d2;
      }   
   }
}

The this keyword: Inside a method, we can use the this keyword to refer to the current instance.

输入

public class ArgsDemo {
    public static void main(String[] args) {
        System.out.println(args[0]);
    }
}

Javadocs

Comments contained by /** and */, also called “Javadoc comments.

Javdocs tags:

@source: Use the @source tag any time you receive significant help on a project.

更详细:

https://zh.wikipedia.org/wiki/Javadoc

https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html

https://docs.oracle.com/javase/8/docs/technotes/tools/windows/javadoc.html

代码规范

Style Guide | CS 61B Spring 2019

https://en.wikipedia.org/wiki/Indentation_style

Hello World

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello world!");
    }
}

在线Java compiler

Java Visualizer

Java Tutor - Visualize Java code execution to learn Java online

官方Tutorial

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html

Java库

Standard Libraries

曾参考的Debug文档

java - Bad operand type int for unary operator '! in while statement - Stack Overflow

Java编译的时候,出现unmappable character for encoding GBK_、Edgar的博客-CSDN博客

Week2

java.math包中提供的API类BigDecimal

使用举例:

import java.math.*;

//......其他代码

/**
 *  Rounds a double value to a number of decimal places.
 *
 *  @param  value   Double to be rounded.
 *  @param  places  Integer number of places to round VALUE to.
 */
private static double round(double value, int places) {
    if (places < 0) throw new IllegalArgumentException();

    BigDecimal bd = new BigDecimal(value);
    bd = bd.setScale(places, RoundingMode.HALF_UP);
    return bd.doubleValue();
}

更详细的解释:

https://docs.oracle.com/javase/8/docs/api/java/math/BigDecimal.html

this.equals

Java自带的判断两个对象是否相等

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值