Java基础知识复习(1)

JDK/JRE/JVM的三者联系

1.jdk:(Java Development ToolKit)Java语言开发工具包,jdk包含了jre和开发工具包。
2.jre:(Java runtime environment) Java运行环境。jre包含了jvm和核心类库
3.jvm:(Java Virtual Mathine)Java虚拟机,原来帮助我们运行java文件的。

面向对象的总结

1.封装

这是java面向对象语言的三大特性,其实就是将一个对象的属性私有化,外界无法直接通过类来访问,只有靠类自己提供一个方法返回属性对象。

2 .继承

继承需要注意三点:
1.子类会继承父类的非私有属性和方法。
2.子类可以拥有自己的属性和方法。
3.子类可以对父类的方法进行重写。但重写的返回值类型要一样,方法访问修饰符访问范围要比父类方法大或者相等。

3 .多态

多态就是父类声明指向子类引用。声明一个父类对象Parent p让其等于new 一个子类对象。关于多态,就记住一句话:编译看左边,运行看右边。
具体解释上面这句话:在代码书写阶段,也就是编译器编译期间,当你使用父类的声明变量时,只能调用父类中声明过的方法和属性,不然会报错,当程序真的运行时,当子类重写了该方法,就执行子类的方法,而不会是父类的方法,如果子类没有重写父类该方法,调用的就是父类方法了。

重载和重写的区别

1.重载是发生在同一个类中的,方法名相同,但参数列表不同,方法返回值也不一样,和访问修饰符无关
2.重写是子父类继承时出现的,此时方法名和参数列表要相同,返回值类型都要相同,访问修饰符子类的要比父类的访问修饰符权限大或者相同。

Java八大基本数据类型和对应的包装类

1.八大基本类型

名称字节比特位
byte18
short216
int432
float432
double864
long864
char432
boolean18

2 .包装类:

基本数据类型对应的包装类
byteByte
shortShort
intInteger
floatFloat
doubleDouble
longLong
charCharacter
booleanBooolean

static关键字

1.当类中static修饰的非私有成员属性时,可以直接通过类名.属性来获取。
2.static修饰的成员属性,所有类方法都可以直接使用,但static修饰的静态方法中无法使用非静态修饰的成员属性。
3.静态代码块:静态代码块会在类加载时首先加载然后执行一次。

有关子父类中加载顺序

当我们new一个类时,代码的执行加载顺序是怎么样的?
在这里插入图片描述

super和this关键字

1.super是原来调用父类的构造方法的,当被调用时,必须放在首位。
2.this是表示当前类,可以用来调用本类的 其他构造方法,但也必须放在首位。
3.this和super不能一起使用出现。
4.this和super不能在static修饰的方法中使用。

equals和==,hashCode

1.equals是Object超类中的方法,仅仅是比较两者引用对象地址是否相同。使用当我们需要比较两个对象相同的定义是内容相同时,就需要重写equals方法和hashCode方法。
2.我们可以通过重写hashCode方法,通过对象属性返回哈希值来实现判断两个对象是真正的内容相同。
3.两个对象如果有相同的hashCode也不一定相同,因为 hashCode() 所使用的杂凑算法也许刚好会让多个对象传回相同的杂凑值。越糟糕的杂凑算法越容易碰撞,但这也与数据值域分布的特性有关(所谓碰撞也就是指的是不同的对象得到相同的 hashCode)。
4.==对于基本数据类型用来进行数值是否相等,对于对象来说就是地址是否相同。对于equals来说,分两种情况,一个是没有重写equals方法,一个是重写了。

有关final关键字的总结:

1.主要用于变量,方法,类。
2.对于一个final变量来说,如果是基本数据类型,一旦初始化后就无法改变。如果是引用数据类型,那么初始化后便不能让其再指向其他对象
3.当使用final修饰类时,这个类无法被继承。
4.当final修饰方法时,目的有两个:其一锁定方法,防止继承类中对其进行重写。其次就是效率原因

接口和抽象类

1.接口默认是public修饰的,所有方法在接口中不能有实现(jdk1.8后可以有默认的实现),抽象类可以有非抽象方法。
2.接口中的实例变量默认是final修饰的,而抽象类中不一定。
3.一个类可以实现多个接口,但只能实现一个抽象类。
4.当类实现一个接口时,需要实现这个接口中的所有方法,而抽象类不需要。
5.接口不能new实例,但可以声明一个接口并且赋值一个实现该接口的类的实例对象。

标识符名命规范

1.标识符开头不能是数字
2.标识符可以由字母,数字,$和_组成
3.不能是关键字

Java中常见的关键字:

在这里插入图片描述

instanceof 关键字

用来判断当前实例是否是一个类的实例对象。

装箱和拆箱

1.装箱就是将int变成Integer包装类,使用的是Integer的valueOf(int)方法实现的。
2.拆箱就是将Integer变成int类型,使用的是intValue方法。

有关Integer的创建大小

当我们创建有关Integer大小在[-128,127]之间时,会默认使用IntegerCache.cache中存在的数值的,因此此时创建两个Integer对象并且赋值,直接使用 == 比较是true,但超过这个范围时,就是new一个Integer对象,此时就是引用对象了,再进行 = =就是false.

String字符串

String是一个只读字符串对象,使用final修饰。所以其引用的字符串不能被改变,一但定义,就无法删除修改,每次对String的操作都是生成新的String对象。

private final char value[];
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值