1,初始化
类变量自动初始化为0或者null,局部变量使用前一定要初始化
2,主类型过载
类型匹配顺序:按照byte->short->char->int->long->float->double 顺序匹配。
一种主类型只能匹配参数范围不小于其本身和其本身范围最接近的函数
即有int i;1.f(short s);2.f(long l);i只能适用于第2个f函数
如果是常数,则编译器作为int处理
3,主类型计算结果的类型 和最大范围计算子的类型一致,但是最小也要是int,即byte+byte结果为int型。
4,short型和char型不能互相赋值(因为short有符号,char无符号)
5,package一定要放在java文件第一行(除注释空行外)
6,import只能放在第一行或者package下面
7,多个import的package里面如果有同名class,使用时必须指定package
8,interface中只能有方法宣言和定数
9,class实现interface必须实现全部方法
10,同一java文件中class和interface只能有一个public
11,为了宣言定数,在变量前加final修饰子,变量不可改变,但是object的属性可以改变(有点忘记了,请确认,:))
12,配列不能在宣言的时候用char arr[12];形式指定,必须要用new指定大小。指定完毕后自动初期化;也可以new的时候用{0,0,0}形式指定
13,如果一个object为null,使用其属性或者方法,产生NullPointerException
14,如果使用一个越界index访问配列,产生ArrayOfBoundsException
15,配列长用配列名.length
16,constructor如果有返回值,编译器作为一般方法看待
17,constructor里面如果要用super(..)和this(..),必须放在第一行,而且只能用一次
18,如果没有显式调用super和this,编译器自动在第一行插入super();要求超类必须存在无参数的constructor
19,如果没有显式声明constructor,编译器自动生成默认无参数constructor。一旦声明,则无默认constructor
20,修饰子(访问范围大小顺序)
public 完全公开
protected 同一package或者子类中无同一package
private 本class
21,override的方法不能使访问范围缩小即父类中public方法不能被protected override
22,static方法不能被override?确认
23,constructor不能被继承
24,抽象class不能同时被static修饰子修饰
25,native:方法被java以外其它语言实现
26,interface里面:
方法默认为public abstract修饰
变量默认为public static final修饰
27,abstract和final,abstract和static,abstract和private不能同时指定
28,&&,||为短路条件运算符
&,|为不短路条件运算符
29,switch()只能判断byte,short,int,char(long,float,double不行)
30,Exception包括可check Exception和Runtime Exception可check Exception可以被编译器检查,Runtime Exception不被编译器检查,但是可以被catch捕捉
31,try{}catch{}catch{}多个catch语句按照声明顺序检查,一旦被捕捉,以后catch就直接跳过,超类Exception可以捕捉子类Exception
32,try中即使有return,finally段也会被执行
33,method声明用throws,抛出Exception用throw
34,强制垃圾回收,system.gc();促使垃圾回收,但不是马上回收
35,finalize();在垃圾回收的时候自动调用;建议显式调用super.finalize();
36,main方法的args[0]是第一个参数,例如:java Test a b c,args[0]是"a"
37,类中static段中不能throw异常,constructor里面不能throw异常
38,对于除零:整数运算抛出ArithmeticException实数运算不抛出异常;返回Infinity或者-Infinity
39,instanceof运算子,is的意思,例如:betty instanceof girl,返回true,:)
40,override和overload的区别
很简单,不多写了
41,inner class(内部类:重点注意)
nest class:class内部定义的class包括
(member class:作为class的member定义的class
local class:作为method局部变量定义的class
anonymous class:用new生成的没有名字的class)
42,inner class:除了static member class以外的所有nest class总称
inner class中不能定义static段
inner class里面不能定义没有final修饰子修饰的static变量
inner class不能定义interface?(记不清了,自己确认一下)
43,member class的使用方法:TopClass.memberClass
44,static宣言的member class的生成方法:
TopClass的instance.new memberClass()或者new TopClass.memberClass();
45,local class不能显式被修饰子修饰
46,local class只能存取被final修饰子修饰的上级变量(注意)
47,anonymous class instance生成方法:
new SuperClass名(){.......}或者
new Interface名(){......}
48,anonymous class
不能定义sub class(因为自己没有名字)
不能定义为abstract class
不能定义constructor(注意)
49,Thread生成方法
继承java.lang.Thread
实现java.lang.Runnable interface,然后用new Thread(实现Runnable接口的class)来生成Thread instance
50,Thread的join方法,等待Thread结束
51,Object的wait()方法和notify(),notifyAll()方法(线程同期化,自己好好看看)
52,同期化保留字:synchronized(有可能要求拼写)
53,如果用synchronized修饰static方法,static写在前头
54,String和StringBuffer区别:String初始化后不可改变,StringBuffer可以改变
String s1="hello";
String s2="hello";
if (s1==s2){System.out.println("OK");}
执行结果是打印出OK
55, >>>运算符高位填0,是为逻辑移位
局部类和嵌套类
局部类
在一个函数体内定义的类称为局部类。局部类中只能使用它的外围作用域中的对象和函数进行联系,因为外围作用域中的变量与该局部类的对象无关。在定义局部类时需要注意:局部类中不能说明静态成员函数,并且所有成员函数都必须定义在类体内。在实践中,局部类是很少使用的。下面是一个局部类的例子。
int a;
void fun()
{
static int s;
class A
{
public:
void init(int i) { s = i; }
};
A m;
m.init(10);
}
嵌套类
在一个类中定义的类称为嵌套类,定义嵌套类的类称为外围类。
定义嵌套类的目的在于隐藏类名,减少全局的标识符,从而限制用户能否使用该类建立对象。这样可以提高类的抽象能力,并且强调了两个类(外围类和嵌套类)之间的主从关系。下面是一个嵌套类的例子:
class A
{
public:
class B
{
public:
…
private:
…
};
void f();
private:
int a;
}
其中,类B是一个嵌套类,类A是外围类,类B定义在类A的类体内。
对嵌套类的若干说明:
1、从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类的作用域内使用该类名时,需要加名字限定。
2、从访问权限的角度来看,嵌套类名与它的外围类的对象成员名具有相同的访问权限规则。不能访问嵌套类的对象中的私有成员函数,也不能对外围类的私有部分中的嵌套类建立对象。
3、嵌套类中的成员函数可以在它的类体外定义。
4、嵌套类中说明的成员不是外围类中对象的成员,反之亦然。嵌套类的成员函数对外围类的成员没有访问权,反之亦然。国此,在分析嵌套类与外围类的成员访问关系时,往往把嵌套类看作非嵌套类来处理。这样,上述的嵌套类可写成如下格式:
class A
{
public:
void f();
private:
int a;
};
class B
{
public:
…
private:
…
};
由引可见,嵌套类仅仅是语法上的嵌入。
5、在嵌套类中说明的友元对外围类的成员没有访问权。
6、如果嵌套类比较复杂,可以只在外围类中对嵌套类进行说明,关于嵌套的详细的内容可在外围类体外的文件域中进行定义。
1.J2EE是什么?
2.介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?
如COLLECTION中遗留类(HASHTABLE、VECTOR)和现有类的区别?(同步)
3.Java中异常处理机制,事件机制?
4.EJB与JAVA BEAN的区别?
EJB与JAVA BEAN是SUN的不同组件规范,EJB是在容器中运行的,分步式的,而JAVA BEAN主要是一种可利用的组件,主要在客户端UI表现上。
5.JAVA中的多形与继承?
可出编程,选择题。
6.抽象类与接口?
接口的好处是将实现与表现分离。
抽象类与接口都用于抽象,但是抽象类(JAVA中)可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。
7.Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?
8.JAVA SERVLET API中forward() 与redirect()的区别?
forward()方法可以使用原来的对象,而且速度较快。
9.JAVA解析XML的方式?
SAX、DOM
10.用JAVA实现数据库查询,这是一道编程题。
基本操作,不用讲了。
11.用JAVA实现一种排序 ,比较,JAVA类实现序列化的方法(二种)?
如在COLLECTION框架中,实现比较要实现什么样的接口。
12.JSP中动态INCLUDE与静态INCLUDE的区别?
老一套,动态可以带参数,静态相当于一段静态HTML文件。
13.应用服务器与WEB SERVER的区别?
14.设计模式与UML方面。
如工厂模式,解决多数据库支持问题。
15。 编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
16。在ORACLE大数据量下的分页解决方法。 一般用截取ID方法,还有是三层嵌套方法。
17。WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI解释。
18。BS与CS的联系与区别。
19。LINUX下线程,GDI类的解释。
20。JAVA多线程编程。
用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。
21。JAVA的基本功: STRING与STRINGBUFFER的区别。
22。STRUTS的应用(如STRUTS架构)
为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。
优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;
缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;
使用场合:一旦解析了文档还需多次访问这些数据;
硬件资源充足(内存、CPU)
二、SAX
为解决DOM的问题,出现了SAX。
SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。
优点:不用事先调入整个文档,占用资源少;
SAX解析器代码比DOM解析器代码小,适于Applet,下载
缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;
无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;
使用场合:Applet;
只需XML文档的少量内容,很少回头访问;
机器内存少;
三、JDOM
为减少DOM、SAX的编码量,出现了JDOM;
优点:20-80原则,极大减少了代码量
使用场合:要实现的功能简单,如解析、创建等
Java程序
但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan
四、JAPX
为多个XML解析器提供了统一编程接口
更换解析器,不用更改代码
使用场合:若不用Jdom,一般建议使用JAPX,将代码与各种解析器的实现细节隔离。
select * from ( select row_.*, rownum rownum_ from (sql) row_ where rownum <= ?) where rownum_ > ?