学习资料来源:斯坦福大学公开课编程方法cs106aJAVA(下载中心有资源)
相关学习资料已上传至下载中心:学习过程中使用的代码、笔记初稿以及课程讲义(有兴趣者可自行下载)
学习过程中的大部分程序需要导入acm.jar包(已上传至下载中心,也可自行进入http://jtf.acm.org/ 进行下载),
基本概念:
类:类就是对一些程序行为的封装
建类:
public class name (extends Superclass){……};//()内是继承类,可有可无
name=Classname.java
参数:
方法中传递的参数是一个副本
对象作为参数传递时传递的就是对象本身(引用)
参数遮蔽现象:public MyCounter(int counter){
counter = counter;//参数遮蔽(两边都是counter)
}
解决方法:
1、this
public MyCounter(int counter){
counter = counter;//出现参数遮蔽现象
this.counter = counter;//第一个指向调用对象的counter(实例变量),第二个是参数
}
2、起不同的名字 —— 建议使用
public MyCounter(int startValue){
counter = startValue;
}
方法:方法就像面包机,由众多的零部件组成,人们看不到面包机的内部构造,但可以使用它制作面包
(信息隐藏)
在java中创建一个方法:
Visibility type name(parameters){
…body…
}
可视性(visibility) :private or public
方法的隐式返回值的类型(type):void return value; return expression;
方法名(name)
参数(parameter) :
组成方法的方法体(body)
变量:
1、实例变量(instance variable——ivar)——在类里声明,整个对象可见——用于方法调用期间需要保存的变量
private double a;
2、本地变量(local variable)——在方法里声明——作用域只在方法里
double a;
3、类变量(class variable)——被类的所有对象所共享的变量 —— 静态变量(static)
private final static double a = 50;
注释:(程序运行过程中忽略注释内容)
1、//contain(注释内容)
2、 /**
contain
*/
内存 RAM
存储单位:
bit(二进制的缩写) 0 or 1
byte(字节) 8 bits
word(字) 在特定语言中一个整数所占空间大小——4 bytes(java)
K 2^10byte
M 2^20byte | 2^10K
G 2^30byte | 2^10M
Tera
Pera
Exa
Zetta
Yotta
...
基本数据类型(primitive type):int; double; char; boolean;
方法中传递基本数据类型数据是传递副本 —— move(3,4)
传递对象是传递对象的地址(引用)—— p1 = new Point();zero(p1);
基本数据类型对应的类:
int Integer
double Double
boolean Boolean
char Character
存储空间(用于存储所有静态变量和常量的空间)的划分:
动态变量(new)——堆(Heap)——向下增大
本地变量(local variable)——栈( Static)——向上减小——自动删除不用的数据
例如:
Point p1 = new Point(2, 3); —— P1为本地变量,2、3为动态变量(new)
Point p2 = new Point(4, 5);
P1.move(10, 11);
存储方式:(栈是向上添加新元素的)
Point p1 = new Point(1,1);
Point p2 = p2;
存储方式:
标准JAVA:使用main()函数(程序执行入口)
jar包:java存档的缩写 Java Archive(包含很多类(经过编译的类))
导出一个jar包需要在清单里将用到的jar包补充完整。
例如:Class-Path:acm.jar NameSufer.jar (该程序执行过程中使用到的jar包)