1.构造方法的特点
>方法名与类名相同
>无返回值类型
>可以指定参数
>构造方法不被继承
2.抽象类和抽象方法的特点
>抽象类和抽象方法都通过abstract关键字来修饰
>一个抽象类里可以没有抽象方法,但含有抽象方法的类必定为抽象类
>抽象类不能被实例化为对象,而只能作为其他类的超类,并且必须被继承
>抽象类中可以没有,有一个或多个抽象方法,甚至全部方法都可以是抽象方法
>抽象方法只有方法声明,不能有方法体
3.方法重载和方法重写是什么,有什么区别
方法的重载
>必须在一个类中
>方法名相同
>参数列表不同
>与方法返回值和方法修饰符没有任何关系
方法的重写
>方法名相同
>参数列表相同
>返回值类型相同或者是其子类
>访问权限不能严于父类
4.使用继承有什么特点?继承的优点是什么?
特点
>只支持单继承,即一个子类只允许有一个父类
>子类可以拥有父类的属性和方法
>子类可以拥有自己的属性和方法
>子类可以重写覆盖父类的方法
>可以声明父类,创建子类(又称父类装载子类)
优点
>代码量减少
>有利于代码的优化
>提高程序的可维护性
5.多态的特点?有什么优点?
优点
>可替换性
多态对已经存在的代码具有可替代性。图形类可以对应圆类,对其他任何圆形几何体,如圆环,也同样工作。
>可扩充性
多态对代码增加可扩充性。增加新的子类不影响已经存在类的多态性、继承性,以及其他特性的运行。
>接口性
多态是超类通过方法签名,向子类提供一个公共的接口,由子类来完善或者覆盖她而实现。
>维护性
有利于后期代码的维护。
6.多态的实现方式是什么?
>使用父类作为方法形参实现多态
>使用父类作为方法返回值实现多态
7.如何编写接口?
>修饰符
可选,用于指定接口的访问权限,可选值为public。即使省略,也依然是public
>接口名
必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写
>extends
父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。父接口可以存在多个,用逗号隔开。
>方法
接口中的方法只有定义而没有被实现。
8.接口的作用是什么?
接口是设计层面的概念,往往由设计师设计,将定义与现实分离
接口是一种约定 体现在接口名称和注释上,有些接口只有名称 方法的实现方式要通过注释来约定
9.接口和抽象类有什么异同?
都不能直接使用
1.抽象类中可以有属性 方法(抽象方法 普通方法)
接口都是抽象方法 实现=静态常量
public void int();
2.使用
抽象类必须继承 extends
接口 必须实现 implements
类是单继承 接口是多实现
10.什么是异常,你是如何理解的?
代码可能在编译时没有错误,可是运行时会出现异常
程序出现不正常情况后,程序将会跳出当前环境,并且抛出异常。
11.如何处理异常,异常的关键字是什么?
捕获异常 try 执行可能产生异常的代码
catch 捕获异常
finally 无论是否发生异常,代码总能执行
声明异常 throws 声明方法可能要抛出的各种异常
抛出异常 throw 手动抛出异常
关键字:try、catch、finally、throw、throws
12.常见的异常种类有哪些?
Exception 异常层次结构的父类
ArithmeticException 算数错误情形,如以零作除数
ArrayIndexOutOfBoundsException 数组下标越界
NullPointerException 尝试访问 null 对象成员
ClassNotFoundException 不能加载所需的类
IllegalArgumentException 方法接收到非法参数
ClassCastException 对象强制类型转换出错
NumberFormatException 数字格式转换异常,如把“abc”转换成数字
13.如何使用log4j记录日志?
第一步:在项目中加入log4j所使用的jar文件
第二步:创建log4j.properties文件
第三步:编写log4j.properties文件,配置日志信息。
1>下载log4j的JAR包
2>复制当前项目录下
3>点击右键:add as library
4>配置:新建一个文件夹:log4j.properties
a:日志的输出级别:fatal>error>warn>info>debug
b:控制台
c:文件:log4j,appender.loglife.File=aa.log
5.新建测试类
14.常见的集合有哪些?
Collection List Set Map
ArrayList LinkedList HashSet TreeSet HashMap TreeMap
15.list,set,map各有什么异同?
List接口储存一组不唯一,有序(插入顺序)的对象
Set接口存储一组唯一,无序的对象
Map接口存储一组键值对象,提供key到value的映射
16.和数组类型采用相同结构的是哪个集合?
java.util.ArrayList和java.util.Vector.都是采用数组形式来实现的
17.什么是foreach循环?
此循环用于遍历数组。对于循环中的每个计数器,都会分配一个数组元素,并将下一个计数器移动到下一个元素。
18.线程与进程的区别?
定义
进程:是执行中一段程序,即一旦程序被载入到内存中并准备执行,它就是一个进程。进程是表示资源分配的的基本概念,又是调度运行的基本单位,是系统中的并发执行的单位。
线程:单个进程中执行中每个任务就是一个线程。线程是进程中执行运算的最小单位。
>一个线程只能属于一个进程,但是一个进程可以拥有多个线程。多线程处理就是允许一个进程中在同一时刻执行多个任务。
>线程是一种轻量级的进程,与进程相比,线程给操作系统带来侧创建、维护、和管理的负担要轻,意味着线程的代价或开销比较小。
>线程没有地址空间,线程包含在进程的地址空间中
19.实现线程有哪几种方法?
实现Runnable接口,并实现该接口的run()方法
继承Thread类,重写run()方法
实现Callable接口,重写call()方法
使用ExecutorService、Callable、Future实现有返回结果的多线程
20.线程的生命周期是什么?
创建状态 就绪状态 运行状态 阻塞状态 死亡状态
21.简单解释一下线程休眠,线程强制执行,行程礼让。以及他们的实现方法
>线程休眠
让线程暂时睡眠指定时长,线程进入阻塞状态
睡眠时间过后线程会再进入可运行状态
调用sleep()方法需处理InterruptedException异常
>线程的强制运行
使当前线程暂停执行,等待其他线程结束后再继续执行本线程
需处理InterruptedException异常
>线程的礼让
暂停当前线程,允许其他具有相同优先级的线程获得运行机会
该线程处于就绪状态,不转为阻塞状态
public static void yield()
只是提供一种可能,但是不能保证一定会实现礼让。
22.什么情况下需要线程同步?
Java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时,将会导致数据不准确,相互之间产生冲突,因此加入同步锁以避免在该线程没有完成操作之前,被其他线程的调用,从而保证了该变量的唯一性和准确性。
23.什么是流?流的常见种类有哪些?使用流的过程中需要注意哪些问题?
Java中的流是个抽象的概念,当程序需要从某个数据zd源读入数据的时候,就会开启一个数据流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个数据流,这个数据源目的地也可以是文件、内存或网络等等
输入流 输出流 字节流 字符流
关于流的使用,得关闭,不然会溢出
原文:https://www.cnblogs.com/yaoyao9/p/12926130.html