专栏首页自动化、性能测试测试必备之Java知识(一)—— Java基础

测试必备之Java知识(一)—— Java基础

Java基础

Java如何运行的?

开发的java源代码,通过javac编译成为平台无关的字节码文件(class),然后通过JVM的解释器将字节码解释成对应的机器码

“一次编译,到处运行”的理解

说的是java的跨平台特性,与JVM密不可分,不同环境和平台安装好JDK就有java运行环境,并不是说java是跨平台语言;到处运行的关键和前提是JVM,在可以运行JVM的地方都内含着一个JVM操作系统,从而使Java提供了各种不同平台上的虚拟机制,因此实现了到处运行的效果

JDK、JRE、JVM的区别

JDK

java开发工具包

JRE

java运行时环境,包含JVM和Java类库

JVM

虚拟机,运行java字节码的运行时环境

什么是封装,继承,抽象?

封装

隐藏对象的属性和实现细节,仅对外提供公共访问方式--安全性、复用性

继承

is-a的关系,子类接受共有的属性和方法,并加入独有的属性和方法

抽象

共有的方法名和类,具体实现交给子类

继承注意事项

1、子类只能继承父类所有非私有的成员(成员方法、成员变量)

2、子类不能继承父类的构造方法,但是可以通过super关键字去访问父类构造方法

equals和==的区别

==

比较的是变量在内存中堆内存地址,判断两个对象的地址是否相同,即是否指向同一个对象

equals

比较两个对象内容是否相等,Object类也有equals,但调用==,如果类不重写equals方法,则调用Object的equals

HashCode和equals的一些约定

a:equals 相等,hashCode 一定要相等

b:重写了 hashCode 也要重写 equals

c:hashCode 需要保持一致性,状态改变返回的哈希值仍然要一致

怎么理解多态?好处?为什么要用多态?

多态:父类的引用指向子类

好处:子类的功能可以被父类的方法或引用变量所调用

为什么用:复用性,高内聚低耦合,可扩展性

super和this的区别

this

代表本类的对象引用

super

代表本类的父类的引用,代表父类存储空间的标识

代码块执行顺序

静态代码块(只执行一次)-> 构造代码块(每次执行构造方法前都执行)-> 构造方法

普通类初始化顺序

静态属性(变量、方法)-> 静态代码块-> 成员属性 -> 构造代码块 -> 构造函数

继承的子类初始化顺序

父类静态属性 -> 父类静态代码块 -> 子类静态属性 -> 子类静态代码块 -> 父类成员变量 -> 父类构造代码块 -> 父类构造方法 -> 子类成员变量 -> 子类构造代码块 -> 子类构造方法

final、finally、finalize的区别

final

修饰类:类不可被继承 修饰变量:基本数据类型的变量不可重新赋值,引用类型的变量不可指向其他对象 修饰方法:方法不可被重写,即该方法无需进行扩展

finally

finally语句块总会被执行,通常是资源的回收(数据库关闭,IO关闭,网络关闭等)

finalize

保证对象在被垃圾收集之前完成特定的资源回收

Java异常类相关

Error

未检查异常,系统级别错误,无法恢复和预防,如系统崩溃,虚拟机错误,内存空间不足

Exception

分RuntimeException(未检查)和IOException(需检查),程序级别错误,可恢复和预防,创建一个类继承Exception是需检查异常

throw

用在方法体内,抛出异常对象名,可以抛出任意Throwable,需由方法体内的语句或throws抛出处理

throws

用在方法名后,跟的是异常名,表示可能抛出异常,并不一定发生这些异常,由方法调用者处理异常

接口和抽象类的区别

接口

1、不包含非常量成员 2、都是静态抽象方法,可多继承 3、只能public,没有构造方法,没有main函数不可运行 4、主要作用:API定义和实现分离的目的

抽象类

1、可以有普通成员变量 2、可有成员方法也可有抽象方法,单继承 3、public、protected、private都可以,有构造方法,有main函数 4、主要作用:代码重用

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Appium问题解决方案(10)- Original error: Swipe did not complete successfully

    小菠萝测试笔记
  • Jmeter系列(26)- 详解 JSON 提取器

    Compute concatenation var(suffix_ALL)

    小菠萝测试笔记
  • Cypress系列(35)- root() 命令详解

    https://www.cnblogs.com/poloyy/category/1768839.html

    小菠萝测试笔记
  • 云端经济来临,汽车驶向何方?∣企鹅经济学

    吴绪亮 腾讯研究院首席经济学顾问 王明芬 工业4.0研究院副院长 ? 云端经济正向我们扑面而来!2018年全球公有云的市场规模已经达到了1824亿美元。据预测...

    腾讯大讲堂
  • Linux下Socket编程(六)——udp简介

    中文叫用户数据报协议,属于传输层。UDP是面向非连接的协议,它不与对方建立连接,而是直接把我要发的数据报发给对方。所以UDP适用于一次传输数据量很少、对可靠性要...

    用户2929716
  • VB语言基础重要知识点21(冒泡排序法)

    刘金玉编程
  • 如何在6-8小时之内读完300页的书?

    Michigan大学的一位老师Paul N. Edwards写了一篇学术文章《How to Read a Book》,当前已经更新到v5.0版本,个人感觉好过另...

    申龙斌
  • 带妹玩转vulnhub(十)

    从端口中可以看到很多信息,目标服务器开起来三个web服务,我们优先查看泄露信息最多的那个也就是8081端口,这是一个Joomlal开源框架,我们可以使用Joom...

    用户5878089
  • 手画 DES 加密算法流程

    看许式伟的文章时,他提到“怎样成为一个优秀的软件架构师”时,说了这么一句话:“一靠匠心,二靠悟心”(这里他的确写的是悟心,不是悟性,这里的悟心,...

    码农UP2U
  • 华院数据数据科学家尹相志:智能投顾一定能赚大钱吗?

    数据猿导读 电脑逐渐可以去做一些我们想不到的事。我不会用替代人力这样的字眼。因为目前来讲,科技取代人类还非常远。最重要的是机器帮助我们从无聊、繁琐的事情中脱身...

    数据猿

扫码关注云+社区

领取腾讯云代金券