1.JDK,JRE,JVM三者关系
a.、jdk是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境JRE。
b.、JRE是JAVA程序运行时需要的运行环境,就是说如果你光是运行JAVA程序而不是去搞开发的话,只安装JRE就 能运行已经存在的JAVA程序了。
c.、JDk、JRE内部都包含JAVA虚拟机JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等。
jre:java runtime enviroment java运行时环境,为运行java程序提供了环境的支持。如果是普通用户要运行java程序,只需要安装jre即可
jdk: java development kit java开发者工具,为java开发者提供了程序代码编译、运行的工具。运行程序需要jre的支持,所以在安装jdk时会有jre文件夹中存放的jre文件。
jvm: java vitrualMachine java虚拟机,它是java的核心和基础。java虚拟机提供了一整套计算机的组件,它相当于一个仿真的模拟计算机。
有寄存器、java堆、java栈、方法区。为程序数据的存储和运行提供了依据。
将计算机操作系统中的信息进行屏蔽,来达到java程序能够跨平台运行的效果。最终将代码转化为机器语言。
jvm中包含jre
2.面向过程和面向对象的区别
a.、两者都是软件开发思想,先有面向过程,后有面向对象。在大型项目中,针对面向过程的不足推出了面向对象开发思想。
b.、编程思路不同:面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类, 执行方法来完成功能。
c.、封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。面向对象具有继承性和多态性, 而面向过程没有继承性和多态 性,所以面向对象优势是明显。
3.Java有哪些基本数据类型
定义:Java语言是强类型语言,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间。
a.、数值型:整数类型(byte,short,int,long)
b、浮点类型(float,double)
c、字符型(char)
d、布尔型(boolean)
4.什么Java注释
定义:用于解释说明程序的文字分类:
单行注释:格式: // 注释文字
多行注释:格式: /* 注释文字 /
文档注释:格式:/* 注释文字 */
作用:在程序中,尤其是复杂的程序中,适当地加入注释可以增加程序的可读性,有利于程序的修改、调试和交流。注释的内 容在程序编译的时候会被忽视,不会产生目标代码,注释的部分不会对程序的执行结果产生任何影响。
注意事项:多行和文档注释都不能嵌套使用。
5.Java 有没有 goto
goto 是 Java 中的保留字,在目前版本的 Java 中没有使用。
6.final 有什么用?
用于修饰类、属性和方法;
a、被final修饰的类不可以被继承
b、被final修饰的方法不可以被重写
c、被final修饰的变量不可以被改变,被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变 的
7.final finally finalize区别
a、final可以修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个 常量不能被重新赋值。
b、finally一般作用在try-catch代码块中,在处理异常的时候,通常我们将一定要执行的代码方法finally代码块中,表示不管是 否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
c、finalize是一个方法,属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调 用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的最后判断。
8.面向对象三大特性
a、封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。
b、继承:继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的 功能,但不能选择性地继承父类。通过使用继承可以提高代码复用性。继承是多态的前提。
c、所谓多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序 运行期间才确定,即一个引用变量到底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必 须在由程序运行期间才能决定。
9.== 和 equals 的区别是什么
== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象。(基本数据类型 == 比较的是值,引用数据类型 == 比较的是内存地址)
equals() : 它的作用也是判断两个对象是否相等。但它一般有两种使用情况:
情况1:类没有覆盖 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。
情况2:类覆盖了 equals() 方法。一般,我们都覆盖 equals() 方法来两个对象的内容相等;若它们的内容相等,则返回 true (即,认为这两个对象相等)。
10.String 类的常用方法都有那些?
a、indexOf():返回指定字符的索引。
b、charAt():返回指定索引处的字符。
c、replace():字符串替换。
d、trim():去除字符串两端空白。
e、split():分割字符串,返回一个分割后的字符串数组。
f、getBytes():返回字符串的 byte 类型数组。
g、length():返回字符串长度。
h、toLowerCase():将字符串转成小写字母。
i、toUpperCase():将字符串转成大写字符。
g、substring():截取字符串。
k、equals():字符串比较。
CRUD操作
crud是指在做计算处理时的增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。crud主要被用在描述软件系统中数据库或者持久层的基本操作功能。
11.面向对象类和属性的概念
类、静态类、抽象类、接口
普通类:能够进行实例化,能够被继承,默认的有构造方法
静态类:不能够进行实例化,不能够被继承。但是有静态沟通方法给静态属性赋值(但是在java中不存在静态类)
抽象类:不能被实例化, 只能被继承,被继承后子类必须实现父类的抽象方法
接口:可以被调用,可以被继承
接口和抽象类很类似,但是有区别:
抽象类中可以有抽象方法和非抽象方法,
抽象类中可以有局部变量和成员变量
jdk1.8之前接口只能有抽象方法。1.8以后可以有静态方法和default默认方法
接口中能够定义静态变量和final常量
一个类可以实现多个接口,但是只能实现一个抽象类
12、访问修饰符的种类和区别
public公共的
权限最大,
能够修饰类 成员变量 成员方法 构造方法,
可以被任何类访问
protected受保护的
可以修饰成员变量,成员方法,构造方法,但不能修饰类
只能被同一个包下面的其他类访问,不同的包必须是子类才能访问
可以被同一个包中的所有类访问,可以被所有子类访问
private私有的
可以修饰成员变量 成员方法 构造方法 但不能修饰类
只能够被当前类的方法访问
可以通过set和get方法向其他类提供访问方式
default默认的
可以修饰类 成员变量 成员方法 构造方法
可以被同一个包中的所有类访问
13、抽象类和接口的区别
抽象类abstract
可以有构造方法
可以有普通成员变量
可以包含非抽象的普通方法
修饰符可以是public protected
可以包含静态方法
接口类interface
不能有构造方法
没有普通成员变量
必须是抽象方法
只能是public,默认为public abstract
不能包含静态方法
他们都可以包含静态成员变量,抽象类的静态成员变量的访问类型可以任意
抽象类只能是public static final 类型的,默认就是
一个类可以实现很多个接口,但是只能继承一个抽象类