JAVA 笔试笔记
1.java优缺点
优点 :纯面对对象,跨平台,提供很多内置的类库,支持web开发,有较好的健壮性和安全性
缺点 : 速度慢,跨平台不能像其他的语言一样接近操作系统,复杂
2.java与c/c++
都是面对对象语言。java是解释性语言(一次编译永久使用),c是编译型语言,java没有指针,不支持多重继承,不需要开发人员分配内存,java跨平台
3.public static void main(String【】 args)为java的入口函数,但并不是最先运行该函数。
4.java中作用域有全局变量,局部变量
public 所有的类和对象都可以访问
protected 同一包和子类可以访问
private 只有自己可以访问
default 只有同一包中可以访问
5.一个java文件可以有多个类,但只能有一个public修饰的类
6.构造函数,和类名字相同,在new的时候一起调用,完成类的初始化,可以有多个,可以没有参数,不能继承和覆盖,可以被重载,super可以调用
7.为了克服不支持多继承,用接口(抽象类的集合)
8.clone 创造一个相同类,不会影响原类
9.反射机制是java语言允许程序自我检查,也允许对内部成员进行检查,可以动态创建类的对象
10.package——(1)解决命名冲突问题(2)使得项目更加结构化,可读性强
11.通过DLL(系统动态链接库)回调函数实现指针功能
12.面对对象是将数据和方法封装在一起,作为一个相互依赖的整体,面对过程是以事件为中心,逐步执行
13.抽象 继承封装 多态
14.面对对象开发优点:效率高 鲁棒性好 可维护性强
15.继承(子类调用父类的成员变量和方法) 组合(新类里面创建原有类的对象,重复利用已有的功能)
16.重载(同类中同名方法,不同的参数)和覆盖(子类中,同名同参)——多态
17.抽象类和接口
相同点:都不能实例化 只有实现了接口或抽象类才可以实例化
不同点:接口只能定义,不能实现,抽象可以是定义与实现 接口定义的成员变量默认为public static final
18.获得父类的类名 getClass().getName()
19.this指向当前实例对象 super 可以访问弗雷德方法或成员变量
20.标识符只能有字符、数字、下划线和$组成,不能以数字开头
21.breake跳出当前循环 continue 停止当前循环 return 返回方法,使程序返回java运行系统
22.final 声明的属性不可变 方法不可覆盖 类不可被继承
finally 是trycatch后面在return前执行
finalize是垃圾回收机制调用回收对象的函数
23.assert 软件调试方法,代码的正确性检查机制
24.static 定义的变量是全局变量 定义的方法只有对象创建了才可以使用 代码块只执行一次
25.Switch(expr) expr可以是 byte short char int
26.volatile 修饰变量放到缓冲中,提高代码效率,变量值改变缓存值不变
27.instanceof 检查对象是否是一个类
28.strictfp 精确运算浮点
29.基本数据类型 byte int short long double char boolean float
30.不可变类 ,一旦创建不可修改
31.值传递传递值,引用传递是传递地址
32.数据类型转换低到高隐式转换byte《short《char《int《long《float《double
高到低要强制转换
33.round四舍五入 ceil 向上取整 floor向下取整
34.i++先赋值后运算 ++i先运算后赋值
35.char中存储一个中文用两个字符,英文只用一个
36.字符串创建是new的是不同地址的
37.“= =”比较地址 equals比较直 hashCode(没有重写hashCode方法永远都不相同)
38.String 不可变类,一旦创建不可改变
StringBuffer 可变类,安全的
StringBilder 可变类,不安全的,遇上都是字符缓冲区
StringTokenizer是字符串分割的工具类
39.数组是对象,int[] a=new int[] int[] a={1,2} ;int[] a a=new int[]{1,2}
40.length取数组长 length()取字符串长
41.检查异常Exception可以在代码中避免
42.InputStream和OutputStream一字符为单位 Reader 和writer是以字节为单位(不会用到缓存)
43java Socket用来实现不通虚拟机或不同的计算机的通信
44.非阻塞io(NIO)是通过selector channel 和buffer实现非阻塞的IO操作
45.java序列化是指在通信的时候,将对象的状态写在流里进行网络传输或保存文件。。。
46.解释执行的三步:代码装入 代码校验 和代码执行
47.GC是垃圾回收机制
48.内存泄露:不再使用的对象长时间占用内存,并且得不到释放
解决办法:实现Key类的equals和hasCode方法。
49.堆:存放运行时创建的对象
栈:存放基本类型和引用变量
50.Collections包含大量集合接口的类【list(按顺序保存) set(元素不可重复) map(保存键值对()】
LIST(LinkedList双向列表 ArrayList不同步的 Vector同步的)
Map(HashMap可空,不安全 WeakMap IdentityHahMap)*key不可重复
Collection是集合接口
51.迭代器,遍历并选择序列中的对象
52. 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位
线程有时又被称为轻权进程或轻量级进程,也是 CPU 调度的一个基本单位。
53.同步:临界资源同一时间只有一个线程可以进行访问,异步则是谁需要就可以进行访问
54.实现多线程:(1)集成thread类,重写run方法(2)实现Runable接口,并实现run接口方法(3)实现Callable接口,重写Call()方法
55.run()是执行一个线程,同步的;start()开始执行一个线程,异步的
56.多线程的实现:(1)synchronized关键字(2)wait()方法和notify()方法(3)Lock接口
57.wait()方法不会自己“醒”,除非调用notify()或是设置时间 sleep()自己“苏醒”过来 ;
sleep()不会释放锁机制,wait()则是在线程方法被调用后,释放锁机制
wait()必须放在同步中使用
58.终止进程用stop()【终止进程后会释放所有的进程资源】
或是wait()【终止进程,不会释放资源,会发生死锁】
59.synchronized是在对象本身进行使用,实现同步;Lock则是在进程之间的调度实现的同步,synchronized的性能优于Lock
60.Join()方法的作用就是调用该方法的线程,在执行完run()函数之后,在执行join()之后的代码。
61.JDBC连接数据库(1)加载驱动(2)加载驱动器(3)建立数据库连接(4)建立statement对象或preparedstatement对象(5)执行sql语句(6)访问结果集(7)关闭对象,释放所占用的资源。
62.JDBC再用commit()或者rollback()结束方法。rollback()完成事物回滚
63.Class.forName()是将类加载到JVM中
64.statement是最简单的sql preparedstatement是带参数的sql,效率高 callablestatement提供了调用数据库存储过程的接口。
65.在获得数据量较大的时候,getString()方法容易出错,抛出异常,但是getObject()方法就不会出现这样的问题
66.JDO是用于存储某种数据仓库中的对象的标准化API