当前位置: 首页 > news >正文

CS61B学习 part1

本人选择了2018spring的课程,因为他免费提供了评分机器,后来得知2021也开放了,决定把其中的Lab尝试一番,听说gitlab就近好评,相当有实力,并借此学习Java的基本知识,请根据pku的cswiki做好评分机器准备,请自行下载IJ IDEA,可以选择破解专业版,感谢伯克利大学和Josh Hug开源如此优质知识

根据前人所说,此课程需要200h,我第一个同学花费了约30到40天暑假时间学完了,估算大概一天5-7h的专精学习时间,现在我在学校,希望from9.18大概50day可以完成😭😭😭😭😭

第一二parts简述了学期任务,评估目标与要求,测评方法等等。看看就好.

Java的基础知识

public class HelloWorld{public static void main(String[] args){System.out.println("hello world");}
}
public class HelloWorld{public static void main(String[] args){int x=0;while(x<10){System.put.println(x);x=x+1;}x="horse";}
}

1. Before Java variables can be used, they must be declared.
2. Java variables must have a specific type.
3. Java variable types can never change.
4. Types are verified before the code even runs!!!

public class LargerDemo{
/** Returns the Larger of x and y.*/public static int larger(int x, int y) {if (x > y) {return x;}return y;}public static void main(String[] args){System.out.println(larger(-5, 10));}
}
/*
1. Functions must be declared as part of a class in Java. A function that is part of a cLass is calLed a "method". So in Java, all functions are methods.
2. To define a function in Java, we use "public static". We will see alternate ways of defining functions Later. 
3. ALL parameters of a function must have a decLared type,
and the return value of the function must have a decLared type. Functions in Java return onLy one value!
*/

why在jdk23中要求编译以上文件 C:\Users\eve\IdeaProjects\newprojects\src\Main.java
java: 类 LargerDemo 是公共的, 应在名为 LargerDemo.java 的文件中声明,OK我知道了,只要把文件名修改一下即可

lab1和homework0都很简单。是对Java的简单应用。可能cmd部分很有用,不过你应该在linux部分进行了详细学习,git你也是学习使用过了

发现joshhug.gitbooks.io/hug61b是课程教案一样的东西.

Creating and Defining Classes

我们只在cmd输入ls进入到HelloWorld.java文件中,javac HelloWorld.java即可编译运行,但是得到了class文件,这时我们Java HelloWorld就可以解释运行成功,输出helloworld

public class Dog{public static void makeNoise(){System.out.println("Bark!");}
}
public class DogLauncher{public static void main(String[] args){Dog. makeNoise();}    
}

我们实从类中例一个对象

public class Dog{public int weightInPounds;public /*static*/ void makeNoise(){     if (weightInPounds <10){System.out. println("yip!");} else if (weightInPounds < 30){ System.out. println("bark.");} else{System.out. println("woooof!");}} 
} 

运行后我们按照编译器信息删除static,然后创建一个d的dog.重复,执行

public class DogLaimcher{public static void main (String[] args)Dog d =new Dog();d.weightInPounds=51;d.makeNoise();}
}

构造函数:

public Dog(int w){wewightInPounds=w;
}

这样可以Dog d=new Dog(51);d.makeNoise();成功运行

现在阐述为什么去掉static,因为使用了其中的实例变量,与static冲突,这使编译器感到困惑

 缺少对下面此图片部分笔记

 你可以拥有一个静态和非静态的类,把他们混合

public class Dog{
public int weightInPounds;
public static String binomen="Canis familiaris"
/*创建一个适用于所有狗的变量,可以在对象d,d2或者Dog使用*/public Dog(int w){weightInPounds=w;
}
public void makeNoise(){if (weightInPounds 10){ System.out. println("yip!"); }else if (weightInPounds 30){ System.out. println("bark."); }else{System.out. println("woooof! "); }
}
public static Dog maxDog(Dog d1, Dog d2){ if (dl. weightInPounds d2.weightInPounds) {return d1;}return d2;
}public Dog maxDog(Dog d2){/*非静态方法,因为是由特定的dog进行判断*/if (this.weightInPounds>d2.weightInPound){return this;}return d2;
}
}

在一个类中定义的变量或方法也称为该类的成员.
使用类名访问静态成员,例如Dog.binomen.
不能使用类名调用非静态成员:Dog.makeNoise
静态方法必须通过特定的实例访问实时变量,例如d1.

比如我们删除这个方法Dog maxDog(Dog d2)编译器报错。对于非静态成员,如果只有一个方法的非静态版,就不能用类名来运行函数;如果有一个静态方法,并且想访问某种实例变量,必须指明是哪个实例(比如里面的this.)

回答以下代码会输出什么?

public class DogLoop {public static void main(String[] args) {Dog smallDog = new Dog(5);Dog mediumDog = new Dog(25);Dog hugeDog = new Dog(150);Dog[] manyDogs = new Dog[4];manyDogs[0] = smallDog;manyDogs[1] = hugeDog;manyDogs[2] = new Dog(130);int i = 0;while (i < manyDogs.length) {Dog.maxDog(manyDogs[i], mediumDog).makeNoise();i = i + 1;}}
public static class Dog {/* 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;}   }
}

这是一个java可视化网站    Java Visualizer (uwaterloo.ca)对以上问题做出回答!

一点扩展在creating and defining classes9/10中0.0-2.20的话

现在要求创建一个程序ArgsSum,打印出命令参数的总和,假设他们是数字

public class ArgsSum {public static void main(String[] args) {int N = args.length;int i = 0;int sum = 0;while (i < N) {sum = sum + Integer.parseInt(args[i]);/*string to int的方法*/i = i + 1;}System.out.println(sum);}
}

Libraries库的使用 推荐使用stackoverflow

普林斯顿大学library,请做project0?

http://www.lryc.cn/news/442557.html

相关文章:

  • 我Github的问题解决了!
  • Pytorch构建神经网络多元线性回归模型
  • 如何基于Flink CDC与OceanBase构建实时数仓,实现简化链路,高效排查
  • ActiveMQ、RabbitMQ 和 Kafka 在 Spring Boot 中的实战
  • 火语言RPA流程组件介绍--获取关联元素
  • 【2024研赛】【华为杯E题】2024 年研究生数学建模比赛思路、代码、论文助攻
  • Linux——K8s集群部署过程
  • 二.Unity中使用虚拟摇杆来控制角色移动
  • 基于SpringBoot的旅游管理系统
  • Linux套接字
  • 软件测试面试题(5)——二面(游戏测试)
  • C#基于SkiaSharp实现印章管理(8)
  • 信通院发布首个《大模型媒体生产与处理》标准,阿里云智能媒体服务作为业界首家“卓越级”通过
  • AI学习指南深度学习篇-Adam的Python实践
  • 08_React redux
  • 2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析
  • 001.从0开始实现线性回归(pytorch)
  • Relations Prediction for Knowledge Graph Completion using Large Language Models
  • 2024年中国研究生数学建模竞赛D题思路代码分析——大数据驱动的地理综合问题
  • 全国31省对外开放程度、经济发展水平、政府干预程度指标数据(2000-2022年)
  • 计算机网络传输层---课后综合题
  • 【homebrew安装】踩坑爬坑教程
  • 反游戏学(Reludology):概念、历史、现状与展望?(豆包AI版)
  • 【C/C++语言系列】实现单例模式
  • A. Make All Equal
  • 业务安全治理
  • HelpLook VS GitBook,在线文档管理工具对比
  • docker面经
  • Python 中的 Kombu 类库
  • safepoint是什么?有什么用?