//可能有重复的
1.== 和 equals()区别
==比较基本数据类型,比较的是值是否相等,如果值一样则返回true,否则返回false;而引用数据类型比较的是地址是否相等,如果引用同一个对象返回true,否则返回false
Object类中的equals()比较的也是地址是否相等,其他类中的根据算法判定(即其他类中的equals()不一定和Object中的一样),String类中的equals()比较的是内容是否一致,内容如果一致则返回true,否则返回false。
2.构造器重写和重载问题
构造器不能被重写,可以被重载,子类可以用super()或super(参数)来调用父类的构造方法。
3.基本数据类型有?
类型 |
字节 |
位数 |
取值范围 |
默认值 |
整数类型 |
||||
byte |
1 |
8 |
-128~127 |
0 |
short |
2 |
16 |
-2^15~(2^15)-1 |
0 |
int |
4 |
32 |
-2^31~(2^31)-1 |
0 |
long |
8 |
64 |
-2^63~(2^63)-1 |
0 |
浮点类型: |
||||
float |
4 |
32 |
1.4013E~3.4028E+38 |
0.0F |
double |
8 |
64 |
4.9E-324~1.7977E+308 |
0.0D |
字符类型: |
||||
char |
2 |
16 |
0~(2^16)-1 |
'\u0000' |
布尔类型: |
||||
boolean |
1 |
8 |
true/false |
false |
4.匿名内部类是否能被继承
能被继承
5.Integer和int的区别
Integer是引用类型,int为基本类型,int的默认值为0;Integer的默认值为null,所以int不适合作为web层的表单数据的类型。
6.你会不会Python?
不会,但是可以通过平时空余时间进行学习的。应该可以上手的!
7.String和Stringbuffer区别
String底层为final 修饰的char数组,使用String长度是不可变的,StirngBuffer底层char数组,但不被final修饰,所以长度可变,他的方法用了synchronize修饰,是安全的!String覆盖了equals方法和hashCode方法,而StringBuffer没有覆盖equals和hashcode方法,所以,StringBuffer对象存储进java集合类中时会出现问题。
Set,List 继承自Collection接口,所以他们都是单列元素集合,都可以用迭代器迭代。Set里面不允许有重复元素,不可以使用下标,进入无无序,List的正好与Set相反。Collection和Map分别为两个不同的接口,Map以键值对形式存储,为双列集合,其中用put方法添加,其中key值不重复,value可以重复。
9.访问权限修饰符
访问权限修饰符 |
同类 |
不同类同包 |
不同类不同包 |
同包子类 |
不同包子类 |
public |
Y |
Y |
Y |
Y |
Y |
protected |
Y |
Y |
N |
Y |
Y |
default |
Y |
Y |
N |
Y |
N |
private |
Y |
N |
N |
N |
N |
10.finally里return值和catch里return值,会返回哪个?
finally里的代码是一定会被执行的,如果finally里面没有return,则返回catch里的return值,如果有则返回finally里的。
11.重写和重载的区别
相同点:
不同点:
12.继承的定义
定义:是一种连接类的层次模型,并且允许和鼓励代码的重用,它提供了一种明确的共同特征的描述方法
关键字: extends
13.goto保留字
java中的保留字,没有在java中使用。
12.19
1. shorts1=1;s1=s1+1;有什么错?shorts1=1;s1+=1;有什么错?
s1是short型,1是int型,所以两个相加的类型会强制转成int。
但是s1=s1+1;赋值的时候,s1是short型,不能将int型强制转换成short,编译报错。
2. String类是否可以被继承?
不可以String是被final修饰了,被final修饰的类不能被继承
3. 字符串分割用什么方法?
用正则表达式,代码大概为:String[]result=orgStr. split(",");
4. char型变量中能不能存贮一个中文汉字?为什么?
char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,
5. 静态变量和实例变量区别?
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
6. 一个java源文件中是否可以包含多个类?
可以
7. Math. round(-11. 5)等于多少?
-11
8. servlet声明周期?
Initialization 初始化
Service 服务
Distory 销毁
9. Collection和Collections的区别?
Collection是list和set的顶层接口
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
10. String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?
没有,String不可变
11. 启动一个线程是用run()还是start()?
start();
12. final,finally,finalize的区别。
final用于声明属性,方法和类分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法在垃圾收集器执行的时候会调用被回收对象的此方法
13. 面向对象的特征有哪些方面?
封装
继承
多态
14. StringBuilder和StringBuffer哪个更安全?
StringBuilder:线程非安全的
StringBuffer:线程安全的
12.20
HashMap的键值对允许为null,而Hashtable的键值对不允许为null,如果为null,则抛出空异常java.lang.NullPointerException
HashMap不是同步的,而Hashtable是同步的
由于同步效率相对较差,因此推荐使用HashMap而不使用Hashtable
java.io java.lang java.sql java.util javax.net
sleep是线程类(Thread)的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。 wait是Object类的方法,对此对象调用wait方法导致本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态。
List Map Conllection ResultSet HttpServlet
appliction: ServletContext
session: HttpSession
request: HttpServletRequest
response:HttpServletResponse
pageContext: PageContext
out: JspWriter
config: ServletConfig
page: this
Exception: Throwable
Error:JVM系统内部错误,资源耗尽等严重情况,这些问题程序员无法处理
Exception:其它因编程错误或偶然的外在因素导致的问题,程序员主要处理这些异常(例如:类型转换问题,空指针问题,数组下标越界等)
静态内容 指令 表达式 小脚本 声明 标准动作 注解
数据增长:Vector增长原来的一倍,ArrayList增加原来的0.5倍。
同步性:Vector是线程安全的 Arraylist是不安全的。
get方式将参数放在url后面,在请求行, post方式将参数放在请求的正文部分。
get方式参数显示在地址栏,不安全, post参数地址栏不可见,相对安全。
地址栏的参数长度有限制,post无限制。
equals(), 重写equals()方法。
表单提交且method还是post时,servlet类里方法用doPost()方法,其他的都可以用doGet()。
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
}
12.21
在jdk1.7之前只可以放int、short、btye、long类型和枚举类型
在jdk1.7之后可以放String字符串类型
重写父类方法
| & 表示位运算,针对数值进行的运算,例如 3 | 2 、78 & 99,其结果仍然应为值数。
|| && 表示逻辑运算,||表示或者的意思,&& 表示并且的意思,例如 33>44 || "abcd"=="abcd",其结果是逻辑值true或false。
|和&,0和1相或为1,相与为0,0和0相与相或都为0,1和1相与相或都为1。
&&和||,真&&假为假,真||假为真。假和假相或相与都为假。真和真相与相或都为真。
不可以,static在程序运行时就加载了,非static要等到调用的时候再加载,static的生命周期长,非static的生命周期短。
抽象类和普通方法的区别
200 响应成功
202 请求被接受,但处理未完成
400 错误的请求
404 资源未找到
500 服务器内部错误
Exception 这种异常分两大类运行时异常和非运行时异常(编译异常)。程序中应当尽可能去处理这些异常。
运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
非运行时异常 (编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。
2<<3的意思是2左移3位 16
同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程;
异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。
区别:一个需要等待,一个不需要等待,在部分情况下,我们的项目开发中都会优先选择不需要等待的异步交互方式。
当对象被创建时,就会在jvm的堆区拥有一块内存空间,在jvm的声明周期中,java程序会陆续的创建无数个对象,假如所有的对象都永久占用内存,那么内存空间有可能很快被消耗光,最后引发内存空间不足的错误,因此必须采用一种措施来及时回收这些无用的对象内存,以保证内存的可重复使用,这种技术就是gc
1.继承Thread类,重写run方法
2.实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target
3.通过Callable和FutureTask创建线程
转发只有一个request,重定向有两个request
转发的地址不变,重定向的地址改变
转发仅限于项目内部,重定向可以转向任意地址
根据流的方向分为输入流和输出流:
输入流:从指定数据源中读取数据就是输入流,输入流只能读取数据,不能写数据
输出流:从*.java程序写数据到指定数据汇中就是输出流,输出流只能写数据,不能读取数据
根据处理数据的不同分为字节流和字符流:
字节流:在进行读写时处理的是以字节为单位的数据就是字节流
字符流:在进行读写时处理的是以字符为单位的数据就是字符流
备注:JDK1.6字节流能够转换成字符流,但字符流不可以转换成字节流.
根据处理角色不同分为节点流和处理流(包装流/过滤流)
节点流:直接和一个IO的物理节点(文件/网络资源)关联的流就是节点流
处理流:如果一个流构造方法中不是一个直接的物理节点(文件/网络资源)就是处理流
使用private static [final]修饰属性,用于缓存当前类的实例对象
使用private修饰所有构造方法
使用公共静态工厂方法获取当前类的实例
序列化实现那个接口
实现Serializable接口或Externalizable接口
super:表示父类实例对象的引用
用法:
使用super.父类实例方法名();调用父类被屏蔽的方法
使用super.父类实例变量名;调用父类被屏蔽的实例变量
使用super();调用父类构造方法,默认调用父类无参数的构造方法,super()必须在构造方法体除注释以外的第一行
抽象类中除了能够写抽象方法还能写非抽象方法;而接口中在jdk1.7之前只能写抽象方法
抽象类中的属性可以是常量也可以是变量;而接口中的属性都是静态的常量
抽象类中可以编写构造方法,该构造方法是给子类调用的;而接口中不能编写构造方法
抽象类中可以编写代码块;而接口中不可以
抽象类只能实现单继承,没有多继承;而接口即可单继承,也可以多继承,这样弥补了Class类的单继承的不足
Comparator、Comparable接口
12.24
相等
0-65535
JDK,开发java程序用的开发包,JDK里面有java的运行环境(JRE),包括client和server端的。需要配置环境变量。。。。
JRE,运行java程序的环境,JVM,JRE里面只有client运行环境,安装过程中,会自动添加PATH。
continue 结束本次循环,执行下一次循环
return 结束该方法,返回值给调用者
break 结束内层循环,到外层循环去
请求格式:
请求行
请求头
请求正文部分
响应格式:
响应状态行
响应头
响应内容
throw抛出的是异常对象,而throws抛出的是异常类
throw只能抛出一个异常对象,而throws可以抛出多个异常类
一般情况下throw和try{}catch(){}或throws一起使用,如果抛出的是运行时异常对象,也可以单独使用。
1970年1月1日0点
delete from表名
靠的是父类或接口的引用指向子类或实现类的对象,
调用的方法是内存中正在运行的那个对象的方法。
Comparable/Comparator
page,application,request,session
在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环
设置参数,使得外层的循环条件表达式的结果可以受到里层循环体代码的控制;
Servlet的四个作用域及其作用域大小排序?
Application>session>request>page
Vector newVector = new Vector();
For (int i=0;i { Object obj = vector.get(i); if(!newVector.contains(obj); newVector.add(obj); } 还有一种简单的方式,HashSet set = new HashSet(vector); 12.25 答:可以 能够区分相同名字的类 有助于实施访问权限的控制 有助于划分项目模块 length()、item()、concat()、getBytes()、toLowerCase() New String(string.getBytes("UTF-8"),"GBK") Delete from 表名 where id = 值1 and id = 值2 答:实例 初始 过滤 销毁 HTTP协议的异步通信 get 请求 ed”); Send | & 表示位运算,针对数值进行的运算,例如 3 | 2 、78 & 99,其结果仍然应为值数。 || && 表示逻辑运算,||表示或者的意思,&& 表示并且的意思,例如 33>44 || "abcd"=="abcd",其结果是逻辑值true或false。 |和&,0和1相或为1,相与为0,0和0相与相或都为0,1和1相与相或都为1。 &&和||,真&&假为假,真||假为真。假和假相或相与都为假。真和真相与相或都为真。 MyEclipse、Eclipse... 12.26 Dom解析器 优点: 形成了树结构,有助于更好的理解、掌握,且代码容易编写。 解析过程中,树结构保存在内存中,方便修改。 缺点: 由于文件是一次性读取,所以对内存的耗费比较大。 如果XML文件比较大,容易影响解析性能且可能会造成内存溢出。 Sax解析器 优点: 采用事件驱动模式,对内存耗费比较小。 适用于只处理XML文件中的数据时。 缺点: 编码比较麻烦。 很难同时访问XML文件中的多处不同数据。 Java类不能多继承,接口可以多继承 Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量名、方法名、类名、包名和参数。 comparable 和 comparator 抽象类可以写抽象方法,也可以写非抽象方法。 抽象类的构造方法不是来实例化的,而是给子类调用的。 抽象类中abstract不能和static、final、private使用。 隐藏属性,提供公共的方法给调用者,并进行有效验证! 提高代码的安全性,提高代码的复用性 高内聚:封装细节,便于修改内部代码,提高可维护性 低耦合:简化外部调用,便于调用者使用,便于扩展和写作。 封装、继承、多态 为了维护hashCode()方法的equals协定,该协定指出:如果根据 equals()方法,两个对象是相等的,那么对这两个对象中的每个对象调用 hashCode方法都必须生成相同的整数结果;而两个hashCode()返回的结果相等,两个对象的equals()方法不一定相等。 HashMap对象是根据其Key的hashCode来获取对应的Value。 在重写父类的equals()方法时,也重写hashcode()方法,使相等的两个对象获取的HashCode值也相等,这样当此对象做Map类中的Key时,两个equals为true的对象其获取的value都是同一个,比较符合实际。 可以 新建状态(New) 就绪状态(Runnable) 运行状态(Running) 阻塞状态(Blocked) 死亡状态(Dead) request.getAttribute()是获取属性值 request.getParameter()是获得请求中值 不可以,静态方法不可以重写 使用EL对JSP输出进行优化,可以使得页面结构更加清晰,代码可读性高,也更加便于维护。 这个产生了2个对象 一个是new关键字创建的new Sring() 另一个是“xyz”对象,xyz在一个字符串池中,s这个对象指向这个串池. Object. 被final修饰的类不能被继承 12.26 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。线程是操作系统可识别的最小执行和调度单位。 资源分配给进程,同一进程的所有线程共享该进程的所有资源。 同一进程中的多个线程共享代码段(代码和常量),数据段(全局变量和静态变量),扩展段(堆存储)。但是每个线程拥有自己的栈段,栈段又叫运行时段,用来存放所有局部变量和临时变量。 处理机分给线程,即真正在处理机上运行的是线程。 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。 Ctrl+alt 和 Ctrl+G HttpServlet 当对象被创建时,就会在jvm的堆区拥有一块内存空间,在jvm的声明周期中,java程序会陆续的创建无数个对象,假如所有的对象都永久占用内存,那么内存空间有可能很快被消耗光,最后引发内存空间不足的错误,因此必须采用一种措施来及时回收这些无用的对象内存,以保证内存的可重复使用,这种技术就是gc Java语言是一种具有动态性的解释型语言,类(class)只有被加载到JVM中后才能运行。当运行指定程序时,JVM会将编译生成的.class文件按照需求和一定的规则加载到内存中,并组织成为一个完整的Java应用程序。这个加载过程是由类加载器来完成的,具体来说,就是由ClassLoader和它的子类来实现的。类加载器本身也是一个类,其实质是把类文件从硬盘读取到内存中 在Java语言中,++i和i++操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而java.util.concurrent.AtomicInteger是一个提供原子操作的Integer类,其提供了线程安全且高效的原子操作,是线程安全的。 getClass()、hashCode()、equals()、toString()、clone() 直接将包装类对象赋值给相应的基本数据类型的变量过程就是自动拆箱 mysql-connector-java-5.1.7-bin.jar commons-dbcp-1.2.1.jar class.forName()加载数据驱动 DriverManager.getConnection()获取数据库连接对象。 根据SQL或sql会话对象,有两种方式Statement、PreparedStatement。 执行sql处理结果集,如果有参数就设置参数。 关闭结果集,关闭会话,关闭资源。 继承Thread类(真正意义上的线程类),是Runnable接口的实现。 实现Runnable接口,并重写里面的run方法。 12.26 并发性:又称共行性,是指处理多个同时性活动的能力,。 并行:指同时发生两个并发事件,具有并发的含义。并发不一定并行,也可以说并发事件之间不一定要同一时刻发生。 如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。 10 修饰的类不能被继承,修饰的方法不能被重写,修饰的变量是常量 抢占式算法。一个线程用完CPU之后,操作系统会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行。 Instanceof 默认情况是调用doGet()方法, JSP页面中的Form表单的method属性设置为post的时候, 调用的为doPost()方法;为get的时候,调用deGet()方法。 setAttribute()和getAttribute -128~127 是个对象,不可以改变 在List集合有一个独特的迭代器ListIterator,它有自己的对集合操作修改的方法,可以在集合进行迭代过程中允许操作修改 同步方法,同步代码块,使用对象锁 public class ServletName extendsHttpServlet { public void doPost(HttpServletRequest request, HttpServletResponseresponse) throws ServletException,IOException{ } public void doGet(HttpServletRequest request, HttpServletResponseresponse) throws ServletException,IOException{ } } 属性 值 描述 class classname 规定元素的类名(classname) id id 规定元素的唯一 id style style_definition 规定元素的行内样式(inline style) title text 规定元素的额外信息(可在工具提示中显示) 12.27 如果a 和b 都是对象,则 a==b 是比较两个对象的引用,只有当 a 和 b 指向的是堆中的同一个对象才会返回 true,而 a.equals(b) 是进行逻辑比较,所以通常需要重写该方法来提供逻辑一致性的比较。例如,String 类重写 equals() 方法,所以可以用于两个不同对象,但是包含的字母相同的比较。 相当于直接定义了一个”abcd”的字符串,所以只创建一个对象 。 派生选择器(用 HTML 标签申明) id 选择器(用 DOM 的 ID 申明) 类选择器(用一个样式类名申明) 属性选择器(用 DOM 的属性申明,属于 CSS2,IE6 不支持,不常用,不知道就算了) 除了前 3 种基本选择器,还有一些扩展选择器,包括 后代选择器(利用空格间隔,比如 div .a{ }) 群组选择器(利用逗号间隔,比如 p,div,#a{ }) 伪类选择器(a:link{ color:red}) 是的,我们可以做强制转换,但是 Java 中 int 是 32 位的,而 byte 是 8 位的,所以,如果强制转化是,int 类型的高 24 位将会被丢弃,byte 类型的范围是从 -128 到 128。 可以使用SimpleDateFormat中的parse()方法,将一个字符串解析为date 可以通过内联或者外联。 抽象类中除了能写抽象方法还能写非抽象方法;而接口中在jdk1.7之前只能写抽象方法 抽象类中的属性可以是常量也可以是变量;而接口中属性都是静态的常量 抽象类中可以编写构造方法,该构造方法是给子类调用的;而接口中不能编写构造方法 抽象类中可以编写代码块;而接口中不可以 抽象类只能实现单继承,没有多继承;而接口即可单继承 也可以多继承,这样弥补了class的单继承的不足
创建一个XMLHttpRequest对象
调用该对象的open方法
如果是get请求,设置回调函数onreadystatechange = callback
Send
post 请求
创建一个XMLHttpRequest对象
调用该对象的open方法
调用setRequestHeader(“Content-Type”, “application/x-www-form-urlencod
设置回调函数onreadystatechange = callback
关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。
Java语言规定关键字不能作为标识符。目前共有50个Java关键字
commons-pool-1.3.jar
如果两个对象不equals,他们的hashcode有可能相等。
如果两个对象hashcode相等,他们不一定equals。
如果两个对象hashcode不相等,他们一定不equals。