java 面向对象
java语言的特点:“完全的面向对象;可移植性”;安全性;多线程。不包括“执行效率高”。
javascript:不是纯净的面向对像语言。window,document.只有Extjs库,引入了面向对象的定义语法,才能编写类。
解释型语言:边解释边执行,无需将程序编程成exe或class。例如:js,
编译型语言:需要编译成exe等格式的二进制文件。
java语言特殊:既是编译型又是解释型语言。
垃圾收集机制的作用和类名。System.gc().
机制:堆上的引用类型变量,如果一段时间没有被引用,则自动回收。栈上的引用类型变量是否会被回收?回收周期长。
java的9种原始数据类型: 数值型: int 4 long 8 float 4 double 8 short 2 byte 1 char 2 boolean 1 void 无
强制转换:int i = (int) 1.001f, 由将高精度赋给低精度。
自动转换:低精度赋给高精度。
f和l和d的作用,是否可省略:
d可省略。l在没有溢出时可以省略。f不能省略。
引用类型和原始类型在作为函数入参时的区别。
a 引用类型的属性修改有效。原始类型以及原始类型对应的装箱类型及String对象修改都无效。
b 方法里面仅能地址中的值,无法改变地址本身。
c java方法入参都是“值类型”,分成”值拷贝“和引用类型对象地址”两种。
简要描述java的反射机制。在程序运行时根据“类名”创建该类的对象,可以陈列出该类的所有方法,属性及参数。
String和StringBuffer和StringBuilder的区别。 String不可变(地址里面的内容不能变)。 StringBuffer用append方法添加字符串。可变。线程安全。 StringBuilder线程不安全。
equals和==的区别:
a ==可以用在原始类型和引用类型,equals只能用在引用类型。
b equals是Object的方法,可以被子类重写。==无法被重写
c 对于字符串及装箱类型来说,equals比较值,==比较地址。
原始类型和装箱类型(属于引用类型)的区别。
数值型和字符串类型的相互转换(3种方法)。
面向对象三大特征及含义。
final,static,abstract的用法,是否能一起合用?
三种内部类:静态内部类,非静态内部类,匿名内部类的区别。|*|||||||||||||*|
四种访问限制的含义:public(所有都可以访问)>protected(同包都可,异包子类也可)–>默认(同包可)–>private(自己可).
类和对象的概念.
对象:具有明确的属性及行为的实体。
类:具有相同的属性及行为的实体集合。
接口:功能的集合。
对象的声明和定义的区别。
A a; //声明 declare
a = new B(); //定义或叫实例化
super关键字的两种用法:
(1) 子类的构造函数中,调用父类的构造函数。必须放在第1行。 super();//调用父类的无参构造,可以省略。
(2)子类的方法中,调用父类的方法。super.do();
this关键字的用法:this代表自己这个对象。有些编码规范中,调用自己的方法必须写this.do();
构造函数是否可重写:不能。是否可重载:可以。
重载和重写的区别:
a 重载发生在1个类里面 重写发生在子类中
b 重载要求方法名相同,参数列表不同。返回值没有限制。
重写要求方法名,参数列表及返回值都相同。
抽象类和接口的区别:
a is a vs has a
b 抽象类可以非静态的变量。接口只能有public final static 的变量。
c 抽象类可以包含其他实现的方法。抽象方法可以是public或protected。
接口的所有方法都是public的。
实现接口和继承类的区别。–implements(has a功能),extends(is a 是父类的继承)。
接口继承和类继承的区别–extends。
inteface IA extends IA1,IA2(一个接口可以继承很多接口)
class A extends P(类只能继承1个父亲)
java里面的常用类: String,Math,Random,Date和字符串的转换(SimpleDateFormat)。
java的两种随机数生成方法的区别
Math.rand()–返回0-1的double
Random rd = new Random(); rd.nextInt(n)–返回0到n-1。
java集合框架三个接口的关系:
Map–>Collection–>Iterator
写出集合框架的遍历方法 (List和set和map):a for,b 迭代器,c 简写的for。
List能用:a,b,c
Set能用:b,c
Map能用:b,c
ArrayList和静态数组的区别:
a ArrayList长度可变。静态数组不行
b ArrayList和LinkedList和vector的区别。
ArrayList:所有元素的内存连续;
ListedList:所有元素的内存不连续,前一个指向下一个。
Vector:比ArrayList加入线程同步支持。
class ConnectionPool { private Vector<Connection> list; }
List和Set的区别:
a List是有序的,可以用get(i)获得第i个元素。Set是无序的,无法用get(i) b List允许重复 ,Set不允许
HashMap和TreeMap的区别:TreeMap自动按key从小到大排。HashMap:不允许key重复.如果重复,put的返回值为原来key的value。 TreeMap可以通过重写比较器,允许key重复,只要比较器返回0.
HashMap和HashTable的区别:HashMap允许key为null,HashTable不允许。
重写 比较器,实现TreeSet和TreeMap的顺序重拍。看代码。 使用内部静态类,实现 Comparator接口。
实现文本文件读写的两种方式。
按字节读写:FileOutputStream–保存,fs.close();句柄。
按字符读写:FileWriter–保存, .记得bw.flush();bw.close();
实现二进制文件读写的两种方式。
a 让对象实现序列化接口.调用writeObject方法写入。
b 对象的每个属性都写入。DataOutputStream.
异常和错误的区别:错误一般来说难于捕获或难于恢复。比如:函数一直调用自己,堆栈溢出。
异常可以捕获,捕获后程序可以继续运行。
举几个运行时异常的子类(RunTimeException):ArrayIndexOutofBoundException–数组越界;
NullPointerException;Arithrim….数学异常。
注意:I/O异常不是运行期异常的子类。
finally的作用(强制执行),在finally中是否可以修改方法的返回值:finally中无法修改原来的返回值变量,但可以在finnaly用return来替代原来的返回值。。
throws和 throw的区别:throws声明该方法会抛出异常。
throw 是手动抛出异常。
什么叫做“指定泛型参数”.List<Student>,有哪两个好处?a 避免强制转换,提高运行速度 b 将运行期异常提早到编译期。
线程的两种实现方法:extends Thread /implements Runnable.
start()和 run()的区别:start()是开启一个新线程并运行run方法。run是在原来的线程运行run方法。
MyThread t1 = new MyThread(); MyThread t2 = new MyThread(); t1.run(); t2.run();//在上面语句执行完才跑。 t1.start();//开启1个线程,执行t1.run方法 t2.start();//开启1个线程,执行t2.run方法 举例说明sleep和wait(notify)的区别 。 sleep:让本线程进入睡眠,但没有释放同步锁。 wait:将本线程挂起,释放同步锁。可以被其他线程的notify方法唤醒。 class A { public synchronized void Do1() { Thread.Sleep(5000) } public synchronized void Do2() { wait(5000); } } class MyThread implements Runnable { private A a ; public void run() { a.Do1(); //执行10秒 a.Do2();//执行5秒。 } } main() { A a = new A(); MyThread t1 = new MyThread(a); MyThread t2 = new MyThread(a); t1.start(); t2.start(); 10秒后,执行结束。 } String str1 = new String("aaa") 创建了几个对象。