- java有几种类型
- java有几种基本类型
- 什么是面向对象
- 面向对象有哪些特征
封装 使属性(特征)私有化,
外部不能直接访问,
需要访问属性,
为外部提供公开的方法(行为)进行访问
继承 是一种是的关系,子类对父类进行扩展
对父类的复用,java只允许单继承
多态 一种事物多种形态
对象的多态,把一个对象复制给不同的引用
方法的多态,重写 重载
- 分别说明重写和重载,有哪些要求
调用重写的方法,执行的是子类的
方法名相同,返回类型相同,参数列表相同
抛出的异常不能更大,访问权限不能更小
重载 是在一个类中,为了调用者方便
方法名相同,参数列表不同(参数类型不同,参数个数不同)
- 类加载搜索的顺序
- 什么时候会导致类加载
创建对象时
访问静态成员时
调用Class.forName("类全名")时
- this,super分别表示什么
super 创建当前对象时创建的父类对象
this() 调用本类构造方法,只能出现在构造方法第一行
super() 调用父类构造方法,只能出现在构造方法第一行,至少有一个构造方法第一行是super()
this. 是一个引用,表示当前对象,任意成员方法内
super. 是一个引用,表示创建当前对象时创建的父类对象,任意成员方法内
- 静态代码块和代码块分别什么时候执行
代码块 相当于成员方法,创建对象时执行,对于一个对象,只执行一次
- 比较两个对象有哪些方法
比较两个引用指向的对象的值 equals()
比较对象大小
自然顺序(这样事务本身是有序的)
实现可比较接口 Comparable接口,实现compareTo(E obj)方法
零时根据业务逻辑做比较 比较器
实现Comparator接口,实现compare(E obj1,E obj2)方法
- 是否可以继承String类
- final表示什么,能修饰哪些地方
类 这个类不能被继承
属性 创建完对象以后不能被修改
变量 初始化以后不能被修改
方法 方法不能被重写
- static表示什么
所有对象共享
属于类的
能修饰 属性,方法,内部类,静态代码块
- 创建对象的步骤
初始化属性(0,0.0,\u0000,false,null,默认值)
调用自己的构造方法
- 接口和类和抽象类的区别
接口表示的是规范
抽象类表示的是一个实际存在但是是抽象的事物
接口里的所有属性是public static final
所有方法是public abstarct
抽象类跟普通类差不多,比普通类多了一些抽象方法
接口没有构造方法
抽象类有构造方法
接口和抽象类都不能创建对象
抽象类的构造方法给子类构造方法调用
普通类可以创建对象
抽象类 abstarct class
类 class
接口 interface
- String对象能不能修改
如果需要对一个字符串反复修改
使用StringBuffer和StringBuilder
- String和StringBuffer和StringBuilder的区别
StringBuffer 线程安全
StringBuilder 线程不安全
String s1=new String("abc"); 2
String s2="abc"; 0
String s3="ab"+"c"; 0
String s4="ab"; 1
String s5="c"; 1
String s6=s4+s5; 1
总共创建了几个String对象
5
基本类型 包装类 String之间的转换
参考代码
String 和日期之间的转换
参考代码
3种表示日期
参考代码
Object类里所有方法
参考代码
String类的常用方法
参考代码
- GC是什么
java程序员不需要关心
内存对象释放问题
由jvm来负责释放内存
如果一个对象没有任何引用指向他
这个对象被视为垃圾,jvm会在空闲时
释放这些空间
而程序员不能控制,只能建议
System.gc() Runtime.getRuntime().gc()
- List Set Map的区别
Set 没有放入顺序,元素不可以重复
Map 键值对
- ArrayList LinkedList Vector的区别
LinkedList底层是双向链表
ArrayList线程不安全
Vector线程安全
- HashMap和Hashtable的区别
Hashtable线程安全,key和value都不允许为null
- 哈希散列表怎么判断元素不重复
通过哈希散列运算,获得哈希表里的位置
如果当前位置上没有元素,直接放入 return
如果当前位置上有元素,调用equals()方法
如果返回为true,舍弃(HashSet)或覆盖(HashMap)
如果返回为false,以链表形式在当前位置追加
- 局部内部类能否访问局部变量
- 匿名内部类的功能以及语法
new 父类/父接口(){}
- 异常和错误的区别
Error 人可以解决,程序员不关心
- Exception和RuntimeException的区别
RuntimeException只有在运行时才会产生异常,不要求强制处理 运行时异常/非检测异常
- 处理异常有几种方式
捕获异常
- ISO8859-1的字符串转成UTF-8的字符串
- public private protected 以及不写的区别
public 1 1 1 1
protected 1 1 1 0
不写 1 1 0 0
private 1 0 0 0
- IO流的分类
输入流 输出流
类型
字节流 字符流
功能
节点流 包装流
- 实现对象浅拷贝和深拷贝
- 有几种方式实现多线程
继承Thread类,重写run()方法
- 怎么解决同步问题
- 线程的生命周期
调用start()方法进入就绪状态
当cpu分配了时间片进入运行状态
时间片用完回到就绪状态
直到运行结束进入销毁状态
其中在运行状态遇到sleep()方法或等待io操作进入阻塞状态
阻塞状态结束进入就绪状态,再有cpu分配时间片执行
线程运行时如果代码被加了锁,当前线程没有获得锁,
当前对象进入锁池,当锁被释放,线程获得了到锁回到就绪状态
当有锁的线程调用wait()方法,当前线程进入等待池,释放锁
直到有其他线程调用notify()或notifyAll()方法时等待的线程被唤醒,进入锁池
java调用方法是值传递还是引用传递
- Class对象时什么,怎么创建,谁创建
- 类与类之间的关系
继承
实现
has a
组合
聚合
关联
use a
依赖
- 不变模式
值不允许改变,
对象状态单一
- 单例模式
这个类有且只有一个实例
- 简单工厂模式
- 适配器模式
- 静态代理模式
- 装饰模式
- 观察者模式
- 模板模式