java实验一(C++改写成Java)

一,4-9.cpp和5-11.cpp
在改写银行管理系统中,只需将c++代码做些微改动,
在这里插入图片描述
在这里插入图片描述
1.c++中的const在java中改为final,当类被修饰为final时,这个类不能被继承,当一个方法被修饰为final时,这个方法不可以被重写;
2.保留两位小数时,在Java中用了DecimalFormat
在这里插入图片描述
当初我直接这样在表达式中用format,(下图)在这里插入图片描述
由于amount定义为double类型,而DecimalFormat返回类型为String,所以编译出错,于是直接在输出时保留小数,这也就避免不了在后面的方法中含有amoun变量就得重写一段保留小数的代码。
二,6-25和7-10.cpp
先前用于保留精度的代码做了小改动,将String强制转换成了double类型,不用重复写此处的代码,节省了代码量,附图
在这里插入图片描述

amount =new Double (df.format((amount * 100 + 0.5) /100));//保留小数点后两位
这个方法在编译时会提示方法过时,

这时与前面的代码相比,增加了匿名对象的使用,
在这里插入图片描述
匿名对象:匿名对象是指创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量,匿名对象调用方式为直接调用而不是通过引用。
匿名对象在两种情况下经常使用;

  • 如果对一个对象只需进行一次方法调用,
  • 将匿名对象作为参数传递给一个方法(这里代码符合这种情况)

在改写7-10.cpp时,涉及类的继承,所以super登上了舞台,用于调用父类方法,构造函数,
在这里插入图片描述
最开始在main函数调用父类的时候,用了super,这样是错误的,正确做法为:
在这里插入图片描述
三,8_8.cpp
关于C++中virtual
Java语言中没有virtual关键字,但是java默认就是虚函数,而特例才是final,不允许继承者重写。这是很自然的,派生类大部分情况都为了通过重写方法实现代码的扩展。
C++之所以要区分,主要是因为C++的优先考虑是性能,而不是程序员的使用。所以默认不是虚函数,因为虚函数需要维护 vtable,被C++程序员认为“低效”。
这里代码增加了输入,所以需要import java.util.Scanner;具体代码实现;
在这里插入图片描述
其中desc=input.nextLine();可以键入空格;
还增加了对象数组:
在这里插入图片描述
对象数组的概念:如果一个数组中的元素是对象类型,则称该数组为对象数组。
当需要一个类的多个对象时,应该用该类的对象数组来表示,通过改变下标值就可以访问到不同的对象。
对象数组的定义和使用:对象数组的定义与一般数组的定义类似,但是需要为每一个元素实例化。
对象数组的声明形式是:
类名 对象数组名 [ ];
为对象数组分配内存空间:
对象数组名=new 类名[数组长度];//注意 :此处不是构造方法了
可以将对象数组的声明和创建用一条语句来完成。例如:定义一个学生类对象数组,可以用下面的语句定义:Student stu[ ]=new Student[30]; stu [ ]是对象数组名,它所表示的数组一共有30个元素,每一个元素都是Student类的对象名,还没有实例化,所以还必须为每一个元素实例化。比如如下的过程:
for(int i=0;i<stu.length;i++)
stu[i]=new Student();
实例化以后就可以使用每一个元素对象。

这里不妨说说数组初始化的三种方法:
1,

int[] a = new int[100];
for(int i = 0;i<a.length;i++){
    a[i] = i;
}

2,

int[] a = {1,2,3};
 

3,

int[] a = new int[] {1,2,3};
 

写代码的时候还遇到有关static的问题;
在这里插入图片描述
这是在main方法里调用方法getyear(),由于main为静态static,所以调用的方法getYear()也必须为static,所以将方法getyear()定义为static
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值