本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~
一、面向对象的特征都有哪些?他们在使用过程中的优势是什么?
(1)对象唯一性 (2)抽象性 (3)继承性 (4)多态性
1、易维护
采取面向对象思想设计的结构,可读性高,由于继承的存在,即使转变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。
2、品质高
在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满意业务需求并具有较高的品质。
3、效率高
在软件开发时,根据设计的须要对现实天下的事物停止抽象,发生类。使用这样的方法解决问题,接*于*常生活和自然的思考方法,必将提高软件开发的效率和品质。
4、易扩展
由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵巧、更轻易扩展,而且成本较低。
二、ArrayList、Vector和LinkedList的存储性能和特性
ArrayList和Vector是采取数组方法存储数据,此数组元素数大于现实存储的数据以便增长和插入数据,都答应直接按序号索引元素。
但是插入数据要涉及到数组元素挪动等内容操纵,所以索引数据块插入数据慢。
Vector由于使用了synchronized方法(线程安全)所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,按序号索引数据须要停止向前或向后遍历
但是插入数据时只须要记载本项的前后项便可,所以插入速度较快。
三、多线程几种实现方法?同步有哪些实现方法?
有两种实现方法,分别是继承Thread类和实现Runnable接口
实现同步也有两种方法,一种是用同步方法,一种是用同步块。
同步方法就是在方法返回类型前面加上synchronized,如
public void syncnronized add(){......}
同步块就是直接写synchronized(同步对象){......}
四、数据库连接池任务机制?JDBC如何做事务处理?
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接,客户端程序须要连接时,池驱动程序会返回一个未使用的池连接并将其记为忙。如果当前没有闲暇连接池,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定,当使用的池连接调用完成后,池驱动程序将此连接标记为闲暇,其他调用就能够使用这个连接。
在JDBC的数据库操纵中,一项事务是由一条或多条表达式所组成的一个不可分割的任务单元。我们通过提交commit()或是回滚rollback()来结束事务的操纵。
在JDBC中,事务操纵默认是自动提交。我们可以通过调用setAutoCommit(false)来禁止自动提交。之后就能够把多个数据库操纵的表达式作为一个事务,在操纵完成后调用commit()来停止整体提交。倘若其中一个表达式操纵失败,都不会执行到commit(),并且将发生响应的异常。此时就能够在异常捕获时调用rollback()停止回滚。这样做可以坚持多次更新操纵后,相关数据的一致性。
五、Request对象的主要方法
setAttribute(String name,Object) ;设置名字为name的参数值
getAttribute(String name); 返回由name指定的属性值
getAttributeNames();
getCookies(); 返回客户端的所有cookie对象,结果是一个Cookie数组
getHeader(String name); 获取HTTP协议定义的文件头信息
getParameter(String name); 取得客户端传给服务器的name的属性值
getRequestURL(); 获取收回请求字符串的客户端地址
getSession(Boolean create); 返回和请求相关的Session
getServerName(); 获取服务器的名字
getServerPath(); 获取客户端所请求的路径
六、应用服务器有哪些?
Tomcat、JBoss、BEA的WebLogic、IBM的WebSphere
七、输入一行字符,分别统计其中英文字符,数字,空格和其他字符个数
public class T { public static void main(String[] args) { // TODO Auto-generated method stub String str = "ab@ C212e *5d% sDf6w"; int a=0,b=0,c=0,d=0; //分别代表英文字母,数字,空格,其他字符 char cStr[] = str.toCharArray(); for(int i=0;i<cStr.length;i++){ if((cStr[i]>='a'&&cStr[i]<='z')||(cStr[i]>='A'&&cStr[i]<='Z')){ a++; } else if(cStr[i]>='0'&&cStr[i]<='9'){ b++; } /** * 又学到了一个新知识! * Character 类在对象中包装一个基本类型 char 的值 * isWhitespace() 判断是否为空白字符 */ else if(Character.isWhitespace(cStr[i])){ c++; }else{ d++; } } System.out.println(str.length()); System.out.println("英文字母:"+a); System.out.println("数字:"+b); System.out.println("空格:"+c); System.out.println("其他字符:"+d); } }
八、排序都有哪几种方法?用java实现快速排序
稳定的:冒泡排序,插入排序
不稳定的:快速排序,选择排序,希尔排序,组合排序,堆排序
java代码:待续
九、求出100--200以内的素数
public class T { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub for(int i=100;i<200;i++){ boolean b = true; for(int j=2;j<i/2;j++){ if(i%j==0){ //如果能被j之中的某一个数整除 则不是素数 b = false; } } if(b){ System.out.print(i+" "); } } } }
十、用java打印菱形
public class T { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub for(int i=1;i<=4;i++){ //外层控制行数 for(int j=1;j<=4-i;j++){ //打印空格 System.out.print(" "); } for(int k=1;k<=2*i-1;k++){ //打印星星 System.out.print("*"); } System.out.println(); } for(int i=1;i<=3;i++){ //下面的三行 for(int j=1;j<=i;j++){ System.out.print(" "); } for(int k=1;k<=7-2*i;k++){ System.out.print("*"); } System.out.println(); } } }
文章结束给大家分享下程序员的一些笑话语录:
PC软件体积大,是因为一个PC软件功能往往较多,能够满足你一个方面的需求,而一个iphone软件往往没几行代码,干一件很小的事情,自然需要的软件就多。就像吃西瓜和吃瓜子的来比数目,单位不同啊。
---------------------------------
原创文章 By
数据和连接
---------------------------------