java基础

来源:互联网 发布:兼职淘宝新媒体编辑 编辑:程序博客网 时间:2024/05/01 23:16

数组有没有length()这个方法? String有没有length()这个方法?
数组没有length()方法,有length的属性。String有有length()方法。

谈谈final, finally, finalize的区别。
Final
--修饰符(关键字)。如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,可以保证它们在使用中不被改变。被声明为fina
l的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载。
finally—在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize —方法名。Java 技术允许使用
finalize()
方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有
被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize()
方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。

&和&&的区别。
&和&&都可以用作逻辑与的运算符,表示逻辑与(and)
&还是位运算符。
&&具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式。

“==”和equals方法究竟有什么区别?
“==”是看两个对象是否是同一个对象,也就是两个对象引用是否指向同一个对象(Java分配的内存地址一样)当然如果用于int,long,double就不是看两个值是否相等了。
equals()是比较两个对象的内容是否相等,一般如果用户自己不定义针对自己的类的equals()方法,那么就会使用Object的活着你的类的父类的这个方法。如果你的类里没有对象引用的域,就不必要覆盖equals()(注意String域也是对象)String有自己的equals()方法(它已经覆盖了Object的该方法了。

Integer 与 int的区别?
int是java提供的8种原始数据类型之一。 Java为每个原始类型提供了封装类, Integer是java
为 int 提供的封装类。int 的默认值为0,而 Integer 的默认值为 null,即 Integer 可以区分出
未赋值和值为0的区别,int 则无法表达出未赋值的情况,例如,要想表达出没有参加考试和
考试成绩为0的区别,则只能使用 Integer。在 JSP 开发中,Integer 的默认为 null,所以用
el 表达式在文本框中显示时,值为空白字符串,而 int 默认的默认值为0,所以用 el 表达式
在文本框中显示时,结果为0,所以,int 不适合作为 web 层的表单数据的类型。

面向对象的特征有哪些方面?
封装、抽象、继承、多态。

Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子
类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相
同的名称
和参数,我们说该方法被重写
(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一
个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。
Overloaded的方法是可以改变返回值的类型。

String s = new String(“xyz”);创建了几个String Object?
两个对象,一个是“xyx”,一个是指向“xyx”的引用对象s。

Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;

构造器Constructor是否可被override?
构造器Constructor不能被继承,因此不能重写Overriding,但可以被重载Overloading。

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。

try {}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?
会执行,在return前执行。

swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
Switch(expr1)中,expr1是一个整数表达式。因此传递给 switch 和 case 语句的参数应该是int、 short、 char 或者 byte。long,string 都不能作用于swtich。

error和exception有什么区别?
error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。
exception 表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。

*集合类
List, Set, Map是否继承自Collection接口?*
List,Set是,Map不是

HashMap和Hashtable的区别。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。
Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比HashMap 慢,因为它是同步的。

Collection 和 Collections的区别。
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。
Collection是个java.util下的接口,它是各种集合结构的父接口。

Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。

List 和 Map 区别?
一个是存储单列数据的集合,另一个是存储键和值这样的双列数据的集合,List 中存储的数
据是有顺序,并且允许重复;Map 中存储的数据是没有顺序的,其键是不能重复的,它的
值是可以有重复的

说出 ArrayList,Vector, LinkedList 的存储性能和特性。
ArrayList 和 Vector 都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增
加和插入元素, 它们都允许直接按序号索引元素, 但是插入元素要涉及数组元素移动等内存
操作,所以索引数据快而插入数据慢,Vector 由于使用了 synchronized 方法(线程安全) ,
通常性能上较 ArrayList 差,而 LinkedList 使用双向链表实现存储,按序号索引数据需要进
行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
LinkedList 也是线程不安全的, LinkedList 提供了一些方法, 使得 LinkedList 可以被当作堆 可以被当作堆
栈和队列来使用。

*多线程类
多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?*
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify

sleep() 和 wait() 有什么区别?
sleep()方法是使线程停止一段时间的方法。在sleep
时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其它线程可能正在运行而且没有被调度为放弃
执行,除非(a)“醒
来”的线程具有更高的优先级,(b)正在运行的线程因为其它原因而阻塞。 wait()是线程交互时,如果线程对一个
同步对象x
发出一个wait()调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。

启动一个线程是用run()还是start()?
启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。

当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法?
不能,一个对象的一个synchronized方法只能由一个线程访问。

***jsp与servlet部分
HTTP请求中POST与GET的区别?*
1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。
2、传输数据的大小
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。
3、安全性
POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击

Servlet生命周期?
init(),service(),destory().
web 容器加载 servlet,生命周期开始。通过调用 servlet 的 init()方法进行 servlet 的初始化。
通过调用 service()方法实现,根据请求的不同调用不同的 do***()方法。结束服务,web 容
器调用 servlet 的 destroy()方法。

SERVLET API 中 中 forward()[转发]与 与 redirect()[重定向] 的区别?
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后
者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的
地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量
使用 forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳
转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

jsp 有哪些内置对象? 作用分别是什么? 分别有什么方法?
JSP 共有以下9个内置的对象:
request 用户端请求,此请求会包含来自 GET/POST 请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet 的构架部件
page JSP 网页本身
exception 针对错误网页,未捕捉的例外

JSP 中动态 INCLUDE 与静态 INCLUDE 的区别?
动态 INCLUDE 用 jsp:include 动作实现
它总是会检查所含文件中的变化,适合用于包
含动态页面,并且可以带参数 静态 INCLUDE 用 include 伪码实现,定不会检查所含文件的
变化,适用于包含静态页面 <%@include file=included.htm %>

0 0
原创粉丝点击