1/5日汇总
1).面试题
- Java编程语言的特点优势:
简单,稳定,面向对象,跨平台性好
解释型语言
多线程,多态性,可靠,安全
- Linux操作系统的常用命令
pwd 显示当前工作目录
ls 查看当前目录的内容
cd 改变当前工作目录 .当前目录 …上一级目录
- Java的运行过程
Java遵循先编译后运行的过程.首先通过javac命令将java源文件(.java文件)编译为Java字节码文件(.class文件),后通过java命令启动JVM,由JVM来加载.class文件并运行.class文件
- 简述JVM,JRE,JDK的关系
JVM:java虚拟机提供了字节码文件的运行环境支持
JRE:提供了java程序所必需的运行环境(JVM+系统类库)
JDK:java开发工具包,包含(JRE+Java程序所必须的编译,运行,等开发工具)
- Java的八大基本类型
byte short int long float double char boolean
- 基本类型的转换规则
小类型到大类型自由转换,大类型到小类型需要强制转换(可能造成精度损失或溢出)
- &&与&的区别
&&短路与:左侧如果为false右侧则不再执行
&非短路与
- break continue return 的区别
break:跳出循环(只能跳出一层循环)
continue:跳过本次循环剩余的语句进入下次循环
return:结束当前方法啊
- fianl修饰的变量使用规则
fianl修饰一个变量时,指引用变量不能变,引用变量所指向的对象中的内容还是可以改变
- 成员变量和局部变量的区别?
成员变量:
1.定义在方法外类中,
2.有默认初始值,不必显示初始化
3.该类被实例化后存在于堆中,对象被GC回收,成员变量失效
局部变量:
1.定义在方法中
2.无初始值,必须设定初始值
3.方法被调用时,存与栈中,方法调用结束从栈中清除
- 解释型语言与编辑型语言
解释型语言:将做好的源程序翻译一句,执行一句直至结束
编辑型语言:将做好的源程序全编译成二进制代码的可运行程序
编辑型语言的执行速度,效率更高,但是跨平台性没有解释型语言强
Java是解释型语言:java虽然也需要编译成.class文件,但不是机器可以识别的语言,还需要JVM的解释
才能放于各平台.java既可以是编译型语言,也可以是解释型语言
- static(静态)关键字
static为了解决:即使没有创建对象也能使用属性和方法;静态只能访问静态,非静态可以访问非静态也可访问静态
static+变量: 静态变量(也叫类变量)的值这个类所有对象共享,可直接类名.调用
static+方法: 静态方法不属于任何实例对象的,也就是说在静态方法中不能使用this
static+final:常量不可被修改
static{}:静态块当类被载入时,静态代码块被执行,且只被执行一次,静态块常用来执行类属性的初始化
- fianl(最终)关键字
修饰属性:不能被修改(必须赋值)
修饰方法:不能被重写
修饰类:不能做父类
修饰局部变量:初始化后不能被修改
- 静态变量与实例变量的区别
静态变量:不属于某个类的实例对象,而属于类,也称为类变量,可直接类名打.调用;不需要创建任何实例对象就会被分配空间
实例变量:必须创建对象后才能通过这个对象来使用
1.存储区域不同:静态变量存储于静态存储区,实例变量存储于堆中
2.静态变量与类相关,实例变量与实例对象相关
3.内存分配方式不同
4.生命周期不同
- 重载与重写的区别
重载:同一个类中同名的方法,但是参数列表不同(既参数个数或类型不同)
重写:子类中的方法可与父类中的方法名,参数列表完全相同.
通过子类创建的实例调用这个方法时,相当于把父类中定义的那个方法给覆盖了(多态的表现)
- 什么是类 ?什么是对象?他们之间的关系
类是对象的模板,对象是类的具体实例
类:代表一个类型的个体,一个类可创建多个对象:同一个类型的对象,结构相同,数据不同
- 概述构造方法
1.常用于为成员变量赋初始值,于类同名,无返回值,在创建对象时自动调用.
2.若无构造方法,编译器会默认提供一个无参构造
3.可以重载,但是不能重写
- this关键字的用法
this.成员变量 访问成员变量
this.方法 调用方法
this() 调用构造方法
this:方法中对象本身的引用
- super关键字的用法
super.成员变量 访问父类中的成员变量
super.方法 调用父类中的方法
super() 调用父类的构造
- 继承下构造方法的运行顺序
1.实例化子类对象时先运行父类的构造方法
因为:内存中子类对象实际包含一个父类对象的引用,所有实例化子类对象前,要先实例化一个父类对象
2.子类若无编码,则自动调用父类的无参构造
- 向上造型是什么?
子类对象当做父类对象使用,
子类对象赋给父类引用或父类对象指向子类对象
- 概述面向对象的三大特性(封装 继承 多态)
- Java中实现多态的机制是什么
靠的是父类或接口定义的引用变量指向子类或具体实现类的实例对象,
而程序调用的方法运行期才动态绑定,就是引用变量所指向的具体实例对象
的方法,也就是内存里面正在运行的那个对象的方法,而不是引用变量的类型
中定义的方法
- 访问修饰符的权限
本类 同一个包中的类 子类 其他类
public * * * *
protected * * *
默认 * *
private *
- 抽象类接口的区别
抽象类::不能创建实例对象
接口:可以说是一个钟特殊的抽象类,接口中所有方法都必须是抽象方法(默认public abstract 修饰)
接口中的成员变量默认常量(public static final 修饰)
语法区别:
1.抽象类中可以有构造方法;接口中不能有构造方法
2.抽象类中可以有普通成员变量;接口中都是常量
3.抽象类中可以包含普通方法;接口中方法必须都是抽象方法
4.抽象类中抽象方法访问修饰符可以public protected 默认(不报错但是子类不能继承);
接口中的抽象方法访问修饰符只能是public
5.抽象类中可以包含静态方法(JDK 1.8之后)
6.抽象类和接口中都可包含静态成员变量,抽象类中访问类型可以任意;
接口中只能是public static final类型
7.一个类可以实现多个接口,但只能继承一个抽象类;
接口不可以实现接口,但可以继承接口且可继承多个接口,用","隔开
2).Spring框架
1. Spring框架解决的问题:解决了创建和管理对象的问题,实现了解耦
2. 解耦:减低依赖
3. 依赖:一个对象工作过程中需要使用到另一个对象
4. 怎么解耦:利用接口,工厂类
5. 使用spring创建对象:1.通过无参构造方法 2.通过静态工厂方法 3.通过实例工厂
6. 由spring管理的对象的作用域(单例对象):整个程序加载这个类开始直至程序运行结束
7. 单例对象:懒汉式单例/饿汉式单例(默认) 都是静态的,具有常驻与内存的特点
8. 单例:同一时间,某个类的对象一定只有一个
9. 由spring管理对象的生命周期
10.spring IOC 控制翻转:将对象创建,管理的"权利" 交给框架
spring通过DI(做法)实现IOC(效果)
DI:依赖注入
注入:创建对象的同时,为该类声明的属性进行赋值
1).通过SET方式注入属性值(常用)
2).通过构造方法注入属性值(不常用)
注入集合类型的值
1).注入List类型的属性值
2).注入Set类型的属性值
3).注入数组类型的属性值
4).注入Map集合类型的属性值
5).使用<Util:xx>系列节点
6).注入properties类型的属性值(常用)