课中:
理论课:
- Java中的数组类型相同,是连续的。可以定义为 int[ ]a, int b[]。a = new int [10],其中a属于堆区,new int [ 10 ]属于堆栈区。
- 作用域由花括号的位置决定。
- 当new创建一个Java对象时,它可以存活于作用域之外。
- 垃圾回收器需要一定的时间,所以可能会有时间延迟。
- 字段可以是任何类型的对象。
- Java的方法决定了一个对象能够接受什么样的消息。
- import java.until.*;可以一次导入一群类。
- javadoc是用于提取注释的工具。它只能为public和protected成员进行文档注释。
- private和包内可访问成员的注释会被忽略。
- javadoc通过生成的HTML文档传送HTML命令,这使我们能充分利用HTML。
- 所有类型的注释文档——类、域和方法——都支持嵌入式HTML。
- 几乎所有的操作符都只能操作“基本类型”。例外的操作符是“=”、“==”和“!=”,这些操作符能操作所有的对象。除此之外
String类支持“+”和“+=”。
13. 应用括号明确规定计算顺序。对一个对象进行操作时,我们真正操作的是对对象的引用。
实验课:
我们在理论课上学会了另开一个class去测试代码。
这次的实验课上的第一题就难住了我,花了很久的时间还是写不出来,对时间的转换不够清楚。
Ch4Demo1(long elapseTime) {
second = (elapseTime/1000) % 60;
minute = ((elapseTime/1000)/60) % 60;
hour = (elapseTime/1000/60/60) % 24;
}
如果指定值分别为偶数、奇数或素数,那么相应的静态方法isEven(Ch4Demo2)、isOdd(Ch4Demo2)和isPrime(Ch4Demo2)方法都会返回true;
public static boolean isOdd(int value) {
if (value % 2 == 0) {
return false;
} else {
return true;
}
}
public static boolean isPrime(int value) {
for (int i = 2; i <= Math.sqrt(value); i++) {
if (value % i == 0) {
return false;
}
}
return true;
}
public static boolean isEven(Ch4Demo2 a) {
if (a.value % 2 == 0) {
return true;
} else {
return false;
}
}
静态方法parseInt(char[])将数字字符构成的数组转换为一个int值。
静态方法parseInt(String)将一个字符串转换为一个int值。
public static int parseInt(char[] str) {
String str1 = String.valueOf(str);
return Integer.parseInt(str1);
}
public static int parseInt(String str) {
return Integer.parseInt(str);
}
public String toString() {
return String.valueOf(this.value);// 将数字转换成字符串
}
一个名为distance的方法,返回从该点到Ch4Demo3类型的指定点之间的距离;
(5)一个名为distance的方法,返回从该点到x和y坐标的指定点之间的距离。
编写一个测试程序,创建两个点(0,0)和(10,30.5),并显示它们之间的距离。
*/
``public double distance(Ch4Demo3 a) {
return Math.sqrt((this.x-a.x)*(this.x-a.x)+(this.y-a.y)*(this.y-a.y));
}
public double distance(double x,double y) {
return Math.sqrt((this.x-x)*(this.x-x)+(this.y-y)*(this.y-y));
}
public static void main(String[] args) {
Ch4Demo3 a1 = new Ch4Demo3(10,30.5);
Ch4Demo3 a2 = new Ch4Demo3();
System.out.println(a2.distance(a1));
}
}`
```java
第三次作业第5题中创建的(银行帐户)Ch3Demo5类来模仿一台ATM机。创建一个有10个帐户的数组,其id为0,1,2,…9,初始化收支为100美元,系统提示用户输入一个id。如果id输入不正确,就要求用户输入正确的id。一旦接受一个id,就显示一个菜单。可以用1来查看当前的收支,用2来表示取钱,用3来表示存钱,用4表示退出主菜单。一旦退出,系统就会提示再次输入id。所以系统一旦启动就不会停止。
public static void main(String[] args) {
// 定义一台ATM机
Ch3Demo5[] atm;
atm = new Ch3Demo5[10];
for (int i = 0; i < 10; i++) {
atm[i] = new Ch3Demo5(i, 100);
}
int N;
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("请输入一个账号:");
N = input.nextInt();
if (N < 0 || N > 9) {
System.out.println("账号输入错误,请重新输入");
} else if (N >= 0 && N <= 9) {
System.out.println("请输入您的银行账号:" + N);
System.out.println("1:查看当前余额");
System.out.println("2:取款");
System.out.println("3:存款");
System.out.println("4:退出菜单");
while (true) {
System.out.println("请输入您的选择:");
int T = input.nextInt();
switch (T) {
case 1:
System.out.println("该账号当前收支为:" + atm[N].getbalance());
break;
case 2:
System.out.println("请输入取款的金额:");
int M1 = input.nextInt();
atm[N].withDraw(M1);
System.out.println("取出数量为:" + M1);
System.out.println("当前账户余额为:" + atm[N].getbalance());
break;
case 3:
System.out.println("请输入存款数字:");
int M2 = input.nextInt();
atm[N].deposit(M2);
System.out.println("存入数量为:" + M2);
System.out.println("当前账户余额为:" + atm[N].getbalance());
break;
}
if (T == 4) {
break;
}
}
}
input.close();
}
}
在后面的题目中,出现了很多新的属性和方法,但自己用的并不熟练。
预习:
预习了第四章。讲的是控制执行流程:
- true和false
- if-else
- 迭代:do-while,for,逗号操作符
- Foreach语法
- return
- break和continue
- goto
- switch
总结:
这周的理论课上收获较多,注意力比前几周的强一些,但实验课上收获较小,效率较低,编写代码速度慢,遇到问题不能很好地解决。我还不能很好的将所学的知连接在一起,只是有些碎片化。希望后面的学习能给我无论知识上和学习能力上都有很大的提升。