测试必备之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、主要作用:代码重用 |
测试必备之Java知识(一)—— Java基础的更多相关文章
- Java知识体系
Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...
- [转帖]java必备的开发知识和技能
java必备的开发知识和技能 https://blog.csdn.net/qq_34405062/article/details/89389646 学习一下java 其实上学那会儿学的 早就过时加落伍 ...
- [Java面试三]JavaWeb基础知识总结.
1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...
- Java学习之旅基础知识篇:数据类型及流程控制
经过开篇对Java运行机制及相关环境搭建,本篇主要讨论Java程序开发的基础知识点,我简单的梳理一下.在讲解数据类型之前,我顺便提及一下Java注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...
- Java开发知识之Java编程基础
Java开发知识之Java编程基础 一丶Java的基础语法 每个语言都有自己的语法规范.例如C++ 入口点是main. 我们按照特定格式编写即可. Java也不例外. Java程序的语法规范就是 Ja ...
- 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承
<Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...
- [Java面试二]Java基础知识精华部分.
一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...
- Android开发学习必备的java知识
Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...
- Java Script 学习笔记 -- 基础知识
Java script 概述 java Script 的简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 ...
- java在线聊天项目 实现基本聊天功能后补充的其他功能详细需求分析 及所需要掌握的Java知识基础 SWT的激活方法,swt开发包下载,及破解激活码
补充聊天项目功能,做如下需求分析: 梳理项目开发所需的必要Java知识基础 GUI将使用更快速的swt实现 SWT(Standard Widget Toolkit) Standard Widget T ...
随机推荐
- SVN中如何执行clean up
在要清理的文件夹上点右键,菜单:TortoiseSVN--选择cleanup,会出现一个菜单栏,在你菜单栏有一个属性breaklock意思是打破锁定,你勾选打破锁定,然后cleanup就会成功,之后再 ...
- linux 使用 jiffies 计数器
这个计数器和来读取它的实用函数位于 <linux/jiffies.h>, 尽管你会常常只是包含 <linux/sched.h>, 它会自动地将 jiffies.h 拉进来. 不 ...
- CF140CNew Year Snowmen
CF140C 题目大意:堆雪人,需要三个大小不同的雪球,现有\(n\)个给定大小的雪球,问最多堆多少个雪人 一个很明显的思路是把每种雪球出现的个数记录下来,然后直接扔到大根堆里面,每次选择剩下出现次数 ...
- vue-learning:12-vue获取模板内容的方式
vue获取模板内容的方式 目录 outerHTML获取内容 template属性获取内容 ES6的字符串模板 <template>标签 <srcipt type="text ...
- vue-learning:2 - template - directive
指令 directive 在上一节我们知道,VUE的template模板通过VUE指令API实现与页面的视图层联系.所以本节将聚集在实现视图层交互的VUE指令系统directive的基础使用. 我们先 ...
- UVA - 11475 Extend to Palindrome (后缀数组)
Your task is, given an integer N, to make a palidrome (word that reads the same when you reverse it) ...
- 洪强宁:宜信PaaS平台基于Calico的容器网络实践
洪强宁:宜信PaaS平台基于Calico的容器网络实践 本文内容来自由七牛云主办的ECUG Con,独家授权InfoQ整理完成 容器云面临的网络挑战 在传统的IDC的架构里面网络是很重要的事情,在 ...
- Apache的DBUtils框架学习(转)
一.commons-dbutils简介 commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化 ...
- Python_自定义关键字的使用
1.在Python中新建一个套件MOSAPP(一般为APP名称):New Suite→Directory 2.在套件下新建个资源文件My:New Resource:My 3.在My资源文件库下新建个关 ...
- [梁山好汉说IT] 容器概念在北宋社会的应用
[梁山好汉说IT] 容器概念在北宋社会的应用 0x00 摘要 如何对没有软件开发经验的人解释容器? 集装箱真的能够完美解释容器嘛? 除了集装箱还有其他常见实体能够解释容器嘛? 我找到了一个能够 和集装 ...