当前位置: 首页 > 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?

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python Web 中间件开发与优化指南
  • 使用sqoop报错
  • JavaScript可视化
  • Hive企业级调优[3]—— Explain 查看执行计划
  • Linux(ubuntu)(文件IO——fopen)
  • 多层感知机paddle
  • 人工智能|集成学习——混合专家模型 (MoE)
  • C#中线程池【异步】
  • C++从入门到入土(五)——再谈构造函数
  • UDP_SOCKET编程实现
  • 2、electron vue3 怎么创建子窗口,并给子窗口路由传参
  • WEB攻防-JS项目Node.js框架安全识别审计验证绕过
  • 好用的工具网址
  • 【资料分析】刷题日记3
  • 代码随想录Day50|图论Part01,leetcode题目:98. 所有可达路径
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • CAP理论的例子讲解
  • CentOS 7 防火墙操作
  • CSS3 变换
  • Django 博客开发教程 8 - 博客文章详情页
  • EventListener原理
  • JSDuck 与 AngularJS 融合技巧
  • Median of Two Sorted Arrays
  • MYSQL 的 IF 函数
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 普通函数和构造函数的区别
  • 实现简单的正则表达式引擎
  • 我的面试准备过程--容器(更新中)
  • 学习笔记TF060:图像语音结合,看图说话
  • 在Mac OS X上安装 Ruby运行环境
  • 终端用户监控:真实用户监控还是模拟监控?
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #微信小程序:微信小程序常见的配置传旨
  • $.type 怎么精确判断对象类型的 --(源码学习2)
  • (1)虚拟机的安装与使用,linux系统安装
  • (八)Flask之app.route装饰器函数的参数
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (二)hibernate配置管理
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十三)Flink SQL
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (源码分析)springsecurity认证授权
  • (转载)CentOS查看系统信息|CentOS查看命令
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .htaccess配置重写url引擎
  • .Net FrameWork总结