一、开发中遇到的问题
1.开发时效率低下:
我使用的是IDEA这个软件,我在编写构造方法等方法的时候纯手打,没有注意有快捷生成这种东西,为了解决这个问题,我在网上搜索到IDEA的方法生成快捷键,即Alt+Insert,按了这个键之后,点击想要生成的方法,选择想要生成的代码即可;
2.引用方法错误
我在做抛出异常的实训练习时,引用别的类的方法出现了报错,我不知道如何引用其他类的静态方法,于是我网上搜索,得出解决这个问题的两种方式,1是在要使用的方法所属的类上的main方法中使用这个静态方法,2是在方法名的前面加上该方法所属的类名,
例如图中的第6行的test就是一个静态方法,这个方法在ExceptionTest类,我想引用他,就得在"test"前面加上"ExceptionTest."这些字符,就能引用完成静态方法;
3.输入带有构造方法的实例化字符
我在其他类定义了一个带有构造方法的类,我想用Scanner输入这个实例化的类,但是我不知道该如何输入,于是我网上带着问题问AI问到了,应该定义一个变量(例如radius)作为中转,例如:Double radius= sc.NextDouble(),然后再实例化那个类的构造方法:Circle a1 = new Circle(radius);这样就可以实现这个功能;
总结:遇到问题要及时解决不要拖延,可以网上问AI或百度,也可以问身边懂的人
二、我的做得比较好的项目解析
1.我的项目:水电费计算
课程中我做的水电费计算项目是(如下图)
我开始做这个抽象类项目的时候,我做的第一步是
(1)创建1个抽象类,并且抽象类的格式应该是这样(带括号的字可忽略不计)
public abstract class ElectricityCharge(类名){
}
大括号里面是写代码的区域,抽象类与普通类不同的是,它在"public"(修饰符)和"class"之间需要加上一个"abstract",当然这个public也可以改成其他修饰符,看具体情况使用
(2)定义成员属性(用电量)、定义成员方法、定义构造方法(含参数的和不含参数的)
public abstract class ElectricityCharge {
protected double yongdian;
public abstract void jisuan();
public ElectricityCharge(double yongdian) {
this.yongdian = yongdian;
}
public ElectricityCharge(){}
}
(3)创建与编写子类:
子类名字格式应该是这样(中间写代码):
extends的意思是继承某个类,extends的后面跟着的字符串指的就是要继承的类
继承了这个类就可以使用该类的成员属性以及成员方法等
public class ElectricityChargeOfRain extends ElectricityCharge{
}
下面我这是我写完的代码,我写了这个类的构造方法,super(yongdian)指的是将父类的构造方法传过来,便于子类的构造方法实例化后定义参数的值
public void jisuan()指{}的是重写父类的抽象方法
如果父类(抽象类)定义了一个抽象方法,那么如果有继承他的子类,就必须重写父类的抽象方法
下面是具体计算电费和计算好之后输出结果代码
public class ElectricityChargeOfRain extends ElectricityCharge{
public ElectricityChargeOfRain(double yongdian) {
super(yongdian);
}
public ElectricityChargeOfRain() {
}
public void jisuan(){
double dianfei = 2.25*yongdian;
if(yongdian>200){
System.out.println("在丰水期该用电量的电费为:");
System.out.println(dianfei=2.25*200+(yongdian-200)*0.9);
}else {
System.out.println("在丰水期该用电量的电费为:");
System.out.println(dianfei);
}
}
}
另一个要做的类也和这个同理
然后我们创建一个测试类,将要实现功能的类实例化
即"类名 实例名 = new 类名(参数);"
之后如果要调用类的方法,就用"实例名.成员方法();"即可
所以计算出丰水期300度电费为540元,枯水期230度电费为613元,这个项目就完成了
三、java中比较容易混淆的概念解析:
在Java中,有几个概念容易让人混淆。以下是一些常见的混淆点和解析:
-
抽象类与接口:
- 抽象类(
abstract class
)可以包含抽象方法和非抽象方法,它不能被实例化,需要被子类继承才能使用。子类必须实现所有抽象方法,可以选择性地重写非抽象方法。 - 接口(
interface
)只能包含常量和抽象方法,它可以被类实现(implements
),一个类可以实现多个接口但只能继承一个抽象类。Java 8之后,接口可以包含默认方法和静态方法的实现。
- 抽象类(
-
继承与实现:
- 继承(
extends
)是指一个类(子类)可以派生自另一个类(父类),并且继承父类的字段和方法。Java中,一个类只能直接继承一个类,但可以实现多个接口。 - 实现(
implements
)是指一个类实现一个接口,它必须提供接口中声明的所有方法的实现。
- 继承(
-
静态方法与实例方法:
- 静态方法(
static
方法)属于类本身而不是实例,可以直接通过类名调用。它们不能访问非静态的类成员,也不能使用this
关键字。 - 实例方法是属于对象实例的方法,可以访问类的所有成员,包括静态和非静态成员。
- 静态方法(
四、常见bug和异常解决方法
1.没有使用main方法导致代码报错
main方法是代码的入口,想要实现功能就得在main方法里调用
IDEA内在某代码行输入main快速生成main方法
然后把想要实现的代码放进去即可
2.因少写了大括号导致报错
在指定红色标点区域放置大括号即可
3.代码的后面没有写分号(;)
同理,在红色标点区域加上分号即可
五、Java学习心得与经验分享
1.如何使用中文汉化过的IDEA软件
(1)打开IDEA代码界面、找到图片中的按键并打开
(2)找到Setting按键并打开
(3)点击Plugin(插件)按键并在搜索栏输入"Chinese"搜索中文汉化插件,找到第二个(带有'汉'这个图标的)点击勾选
(4)勾选后点击OK,然后重启软件即可汉化IDEA了
2.代码快捷输入字符串
System.out.println();
输入sout按回车键即可
public static void main(String[] args) {
}
输入main按回车键即可
3.AI辅助指导编写代码
可以将你的代码交给AI,让AI来指出你的代码中哪里有不足之处,也可以把你的需求交给AI,让AI帮你编写代码,但是要自己理解这些代码,而不是在课程中用AI做题,做完了就得过且过。