1、用堆栈来处理函数的调用,参数和过程参数入栈,调用完成后,再出栈。
2、(1)线性表:零个或多个数据元素的有限序列
(2)数据项:一个数据元素可以由多个数据项组成(例如:人由眼鼻手脚等组成)
3、java的鲁棒性
4、时间、空间复杂度
5、java基本语法
a) 局部变量不可以有任何修饰符
b) 形参可以用final修饰,在函数中就不能进行改变了。若参数是对象,可以对象的成员进行改变,不可以对对象的引用进行改变(即不可以在重新new 一个对象)
c) final修饰的参数没有默认值
d) 接口可以多继承
6、equals()和"=="区别?
默认情况下也就是从超类Object继承而来的equals方法与‘==’是完全等价的,(因为equals底层还是使用的"= =")比较的都是对象的内存地址,但我们可以重写equals方法,使其按照我们的需求的方式进行比较,如String类重写了equals方法,使其比较的是字符的序列,而不再是内存地址。
7、牛客错题笔记
标准ASCII只使用7个bit,扩展的ASCII使用8个bit。
Class c = Class.forName(“ClassA”)不会执行Class的构造函数,只会执行里面的代码块或者是静态代码块(顺便记一下,代码块在构造函数之前执行)
1、java类加载图解
1.1、class.forName:是初始化一个类,类中静态代码会执行,但是构造方法不会执行。,得到得class对象需要.instance()后,才得到了类的实例
1.2、类名.class:进行反射生成Class对象的时候,不会初始化这个类,更不会执行这个类的静态代码(静态代码块都得不到执行)
1.3、对象引用.getClass() : 得到对象引用的class对象
2、while实现的循环,for循环也能实现
3 、类型转换
short a =128;
byte b =(byte) a;
- short类型,a的二进制是:0000 0000 1000 0000;
- .强制转换的截后8位,正数用源码表示,负数用补码表示,第一位是符号。
- 因此,a截取后8位的二进制是:1000 0000,第一位是1,表示是一个负数,二进制的值是128,所以结果是 -128。
4、spring作用域
5、常用处理流
- 缓冲流:BufferInputStream BufferedOutputStream BufferedReader BufferedWriter 增加缓冲功能,避免频繁读写硬盘。
- 转换流:InputStreamReader OutputStreamReader 实现字节流和字符流之间的转换。
- 数据流 DataInputStream DataOutputStream 等-提供将基础数据类型写入到文件中,或者读取出来.