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基础的更多相关文章

  1. Java知识体系

    Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ...

  2. [转帖]java必备的开发知识和技能

    java必备的开发知识和技能 https://blog.csdn.net/qq_34405062/article/details/89389646 学习一下java 其实上学那会儿学的 早就过时加落伍 ...

  3. [Java面试三]JavaWeb基础知识总结.

    1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...

  4. Java学习之旅基础知识篇:数据类型及流程控制

    经过开篇对Java运行机制及相关环境搭建,本篇主要讨论Java程序开发的基础知识点,我简单的梳理一下.在讲解数据类型之前,我顺便提及一下Java注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...

  5. Java开发知识之Java编程基础

    Java开发知识之Java编程基础 一丶Java的基础语法 每个语言都有自己的语法规范.例如C++ 入口点是main. 我们按照特定格式编写即可. Java也不例外. Java程序的语法规范就是 Ja ...

  6. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  7. [Java面试二]Java基础知识精华部分.

    一:java概述(快速浏览): 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名 ...

  8. Android开发学习必备的java知识

    Android开发学习必备的java知识本讲内容:对象.标识符.关键字.变量.常量.字面值.基本数据类型.整数.浮点数.布尔型.字符型.赋值.注释 Java作为一门语言,必然有他的语法规则.学习编程语 ...

  9. Java Script 学习笔记 -- 基础知识

    Java script 概述 java Script 的简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 ...

  10. java在线聊天项目 实现基本聊天功能后补充的其他功能详细需求分析 及所需要掌握的Java知识基础 SWT的激活方法,swt开发包下载,及破解激活码

    补充聊天项目功能,做如下需求分析: 梳理项目开发所需的必要Java知识基础 GUI将使用更快速的swt实现 SWT(Standard Widget Toolkit) Standard Widget T ...

随机推荐

  1. python基础十三之内置函数

    内置函数 操作字符串代码 eval和exec print(eval('1+2')) # 简单的计算 有返回值 exec('for i in range(10):print(i)') # 简单的流程控制 ...

  2. H3C 路由环路

  3. 乐视X3-40S智能电视的简化系统刷机

    步骤 USB2.0-U盘一个. 先把letv原厂包里的.bin文件放入U盘刷入电视 (U盘插在电视上方的USB2.0插口处,在电视待机状态下用遥控器依次按下[3].[6].[9].[5].[开机]键, ...

  4. HashMap之红黑树

    红黑树的设计,相比 jdk1.7 的 HashMap 而言,jdk1.8 最重要的就是引入了红黑树的设计,当冲突的链表长度超过 8 个的时候,链表结构就会转为红黑树结构. 01.故事的起因 “ JDK ...

  5. 文本框(代替input)输入长度限制、提示

    <div class="inform_content_text"> <textarea name="name" placeholder=&qu ...

  6. 将 using namespace 写在函数体中,以避免命名空间冲突

    将 using namespace xxx 写在函数体中时, 命名空间 xxx 中定义的资源只在该函数体中有效. 测试代码如下图所示(namespace std 只在函数 testFun2 中有效):

  7. 【Kubernetes】创建Pod并分配到指定节点

    一.编辑yaml文件 [root@K8s-Master Tools]# cat hello-world-pod.yaml apiVersion: v1 kind: Pod metadata: name ...

  8. vs指定QT的工作目录(依赖第三方动态库时,这时vs编译出来后,运行会提示缺少动态库)good

    当一个工程依赖第三方动态库时,这时vs编译出来后,运行会提示缺少动态库.解决方法: 项目->属性->调试: 工作目录:指定程序运行时的目录 环境:指定程序运行时的环境变量 我们可以在环境变 ...

  9. windows7下mysql8.0.18部署安装

    一.前期准备(windows7+mysql-8.0.18-winx64) 1.下载地址:https://dev.mysql.com/downloads/ 2.选择直接下载不登录账号,下载的压缩包大概两 ...

  10. switch多值匹配骚操作,带你涨姿势!

    我们都知道 switch 用来走流程分支,大多情况下用来匹配单个值,如下面的例子所示: /** * @from 微信公众号:Java技术栈 * @author 栈长 */ private static ...