java经典题目
2008-06-17 15:28
337 查看
1.列举出 10个JAVA语言的优势
a:免费,开源,跨平台(平台独立性),简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台, 无线应用
2.列举出JAVA中10个面向对象编程的术语
a:包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型
3.列举出JAVA中6个比较常用的包
Java.lang;java.util;java.io;java.sql;java.awt;java.net;java.applet;javax.swing
4.JAVA中的标识符有什么作用和特点
作用:标识符用作给变量、类和方法命名
特点:可以以字母、下划线“_”和”$”符开头
首字符外,可以跟上字母、下划线“_”和”$”符或数字
Java是大小写敏感的,标识符也不例外
5.JAVA中的关键字有什么特点,列举出至少20个关键字
Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(keyword)
所有Java关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字 ;
goto和const 虽然从未被使用,但也作为Java关键字保留;
• 中一共有51个关键字Java
6.JAVA中数据类型如何分类?
可分为简单数据类型和引用数据类型:
简单数据类型:数值型(byte,short,int,long,float double),字符型(char),布尔型(boolean);
引用数据类型:类,接口,数组.
7.JAVA中运算符的分类及举例
• 分割符:,,;,[],()
• 算术运算符: +,―,*,/,%,++,――
• 关系运算符: >,<,>=,<=,==,!=
• 布尔逻辑运算符: !,& , | , ^ , &&,||
• 位运算符: &,|,^,~ , >>,<<,>>>
• 赋值运算符: = 扩展赋值运算符:+=,―=,*=,/=
• 字符串连接运算符: +
• 造型操作符:()
8.super,this关键字的作用及用法
• 在Java类中使用super来引用父类的成分
– 可用于访问父类中定义的属性super
– 可用于调用父类中定义的成员方法super
– 可用于在子类构造器中调用父类的构造器super
– 的追溯不仅于直接父类super
• 中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象。Java
– 构造器中指该构造器所创建的新对象
– 方法中指调用该方法的对象
• 关键字的用法this
– 在类本身的方法或构造器中引用该类的实例变量和方法
– 将当前对象作为参数传递给其它方法或构造器
– 用来调用其他的重载的构造器
9.什么是JAVA中的表达式?有什么作用?
• 表达式是运算符和操作数的结合,它是任何一门编程语言的关键组成部分
• 表达式允许程序员进行数学计算、值的比较、逻辑操作以及在Java中进行对象的操作。
• 一些表达式的例子:
– X
– X+10
– Y=x+10
– Arr[10]
– student.geName()
10.做表列出JAVA中所有修饰符和他们的适用范围(能不能修饰构造器,属性,自由块等)
11.写一个方法,用一个for循环打印九九乘法表
[align=left] /**[/align]
[align=left] *一个for循环打印九九乘法表[/align]
[align=left] */[/align]
[align=left] publicvoid nineNineMultiTable()[/align]
[align=left] {[/align]
[align=left] for (int i = 1,j = 1; j <= 9; i++) {[/align]
[align=left] System.out.print(i+"*"+j+"="+i*j+" ");[/align]
[align=left] if(i==j)[/align]
[align=left] {[/align]
[align=left] i=0;[/align]
[align=left] j++;[/align]
[align=left] System.out.println();[/align]
[align=left] }[/align]
[align=left] }[/align]
}
12.给定一个java.util.Date对象,如何转化为”2007-3-22 20:23:22”格式的字符串
[align=left]/**[/align]
[align=left] *将某个日期以固定格式转化成字符串[/align]
[align=left] *@paramdate[/align]
[align=left] *@returnstr[/align]
[align=left] */[/align]
[align=left] public String dateToStr(java.util.Date date)[/align]
[align=left] {[/align]
[align=left] SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");[/align]
[align=left] String str = sdf.format(date);[/align]
[align=left] return str;[/align]
}
13.写一个方法,能够判断任意一个整数是否素数
[align=left]/**[/align]
[align=left] *判断任意一个整数是否素数[/align]
[align=left] *@paramn[/align]
[align=left] *@returnboolean[/align]
[align=left] */[/align]
[align=left] publicboolean isPrimes(int n)[/align]
[align=left] {[/align]
[align=left] for (int i = 2; i <= Math.sqrt(n); i++) {[/align]
[align=left] if(n%i==0)[/align]
[align=left] {[/align]
[align=left] returnfalse;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] returntrue;[/align]
}
14.写一个方法,输入任意一个整数,返回它的阶乘
[align=left]/**[/align]
[align=left] *获得任意一个整数的阶乘[/align]
[align=left] *@paramn[/align]
[align=left] *@returnn![/align]
[align=left] */[/align]
[align=left] publicint factorial(int n)[/align]
[align=left] {[/align]
[align=left] //递归[/align]
[align=left] if(n==1)[/align]
[align=left] {[/align]
[align=left] return 1;[/align]
[align=left] }[/align]
[align=left] return n*factorial(n-1);[/align]
[align=left] //非递归[/align]
[align=left]// int multi = 1;[/align]
[align=left]// for (int i = 2; i <= n; i++) {[/align]
[align=left]// multi*=i;[/align]
[align=left]// }[/align]
[align=left]// return multi;[/align]
}
15.写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1
[align=left]/**[/align]
[align=left] *二分查找特定整数在整型数组中的位置(递归)[/align]
[align=left] *@paramdataset[/align]
[align=left] *@paramdata[/align]
[align=left] *@parambeginIndex[/align]
[align=left] *@paramendIndex[/align]
[align=left] *@returnindex[/align]
[align=left] */[/align]
[align=left] publicint binarySearch(int[] dataset,int data,int beginIndex,int endIndex)[/align]
[align=left] {[/align]
[align=left] int midIndex = (beginIndex+endIndex)/2;[/align]
[align=left] if(data<dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;[/align]
[align=left] if(data<dataset[midIndex])[/align]
[align=left] {[/align]
[align=left] return binarySearch(dataset,data,beginIndex,midIndex-1);[/align]
[align=left] }elseif(data>dataset[midIndex])[/align]
[align=left] {[/align]
[align=left] return binarySearch(dataset,data,midIndex+1,endIndex);[/align]
[align=left] }else[/align]
[align=left] {[/align]
[align=left] return midIndex;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] /**[/align]
[align=left] *二分查找特定整数在整型数组中的位置(非递归)[/align]
[align=left] *@paramdataset[/align]
[align=left] *@paramdata[/align]
[align=left] *@returnindex[/align]
[align=left] */[/align]
[align=left] publicint binarySearch(int[] dataset ,int data)[/align]
[align=left] {[/align]
[align=left] int beginIndex = 0; [/align]
[align=left] int endIndex = dataset.length - 1; [/align]
[align=left] int midIndex = -1; [/align]
[align=left] if(data<dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;[/align]
[align=left] while(beginIndex <= endIndex) { [/align]
[align=left] midIndex = (beginIndex+endIndex)/2;[/align]
[align=left] if(data<dataset[midIndex]) { [/align]
[align=left] endIndex = midIndex-1; [/align]
[align=left] } elseif(data>dataset[midIndex]) { [/align]
[align=left] beginIndex = midIndex+1; [/align]
[align=left] }else[/align]
[align=left] {[/align]
[align=left] return midIndex;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] return -1;[/align]
}
16.做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处
[align=left]package com.softeem.demo;[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *动物的接口[/align]
[align=left] */[/align]
[align=left]interface Animal[/align]
[align=left]{[/align]
[align=left] publicvoid eat(Food food);[/align]
[align=left]}[/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *一种动物类:猫[/align]
[align=left] */[/align]
[align=left]class Cat implements Animal[/align]
[align=left]{[/align]
[align=left] publicvoid eat(Food food)[/align]
[align=left] {[/align]
[align=left] System.out.println("小猫吃"+food.getName());[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *一种动物类:狗[/align]
[align=left] */[/align]
[align=left]class Dog implements Animal[/align]
[align=left]{[/align]
[align=left] publicvoid eat(Food food)[/align]
[align=left] {[/align]
[align=left] System.out.println("小狗啃"+food.getName());[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *食物抽象类[/align]
[align=left] */[/align]
[align=left]abstractclass Food[/align]
[align=left]{[/align]
[align=left] protected String name;[/align]
[align=left] public String getName() {[/align]
[align=left] returnname;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setName(String name) {[/align]
[align=left] this.name = name;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *一种食物类:鱼[/align]
[align=left] */[/align]
[align=left]class Fish extends Food[/align]
[align=left]{[/align]
[align=left] public Fish(String name) {[/align]
[align=left] this.name = name;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *一种食物类:骨头[/align]
[align=left] */[/align]
[align=left]class Bone extends Food[/align]
[align=left]{ [/align]
[align=left] public Bone(String name) {[/align]
[align=left] this.name = name;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *饲养员类[/align]
[align=left] *[/align]
[align=left] */[/align]
[align=left]class Feeder[/align]
[align=left]{[/align]
[align=left] /**[/align]
[align=left] *饲养员给某种动物喂某种食物[/align]
[align=left] *@paramanimal[/align]
[align=left] *@paramfood[/align]
[align=left] */[/align]
[align=left] publicvoid feed(Animal animal,Food food)[/align]
[align=left] {[/align]
[align=left] animal.eat(food);[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *测试饲养员给动物喂食物[/align]
[align=left] */[/align]
[align=left]publicclass TestFeeder {[/align]
[align=left] [/align]
[align=left] publicstaticvoid main(String[] args) {[/align]
[align=left] Feeder feeder=new Feeder();[/align]
[align=left] Animal animal=new Dog();[/align]
[align=left] Food food=new Bone("肉骨头");[/align]
[align=left] feeder.feed(animal,food); //给狗喂肉骨头[/align]
[align=left] animal=new Cat();[/align]
[align=left] food=new Fish("鱼");[/align]
[align=left] feeder.feed(animal,food); //给猫喂鱼[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
}
17.描述JAVA中异常处理的机制
• 程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。Java
• 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。
• 如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。
• 程序员通常只能处理违例(Exception),而对错误(Error)无能为力。
18.做一个单子模式的类,只加载一次属性文件
[align=left]package com.softeem.demo;[/align]
[align=left] [/align]
[align=left]import java.io.FileInputStream;[/align]
[align=left]import java.io.FileNotFoundException;[/align]
[align=left]import java.io.IOException;[/align]
[align=left]import java.io.InputStream;[/align]
[align=left]import java.util.Properties;[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *单子模式,保证在整个应用期间只加载一次配置属性文件[/align]
[align=left] */[/align]
[align=left]publicclass Singleton {[/align]
[align=left] [/align]
[align=left] privatestatic Singleton instance;[/align]
[align=left] privatestaticfinal String CONFIG_FILE_PATH = "E://config.properties";[/align]
[align=left] private Properties config;[/align]
[align=left] private Singleton()[/align]
[align=left] {[/align]
[align=left] config = new Properties();[/align]
[align=left] InputStream is;[/align]
[align=left] try {[/align]
[align=left] is = new FileInputStream(CONFIG_FILE_PATH);[/align]
[align=left] config.load(is);[/align]
[align=left] is.close();[/align]
[align=left] } catch (FileNotFoundException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] publicstatic Singleton getInstance()[/align]
[align=left] {[/align]
[align=left] if(instance==null)[/align]
[align=left] {[/align]
[align=left] instance = new Singleton();[/align]
[align=left] }[/align]
[align=left] returninstance;[/align]
[align=left] }[/align]
[align=left] public Properties getConfig() {[/align]
[align=left] returnconfig;[/align]
[align=left] }[/align]
[align=left] publicvoid setConfig(Properties config) {[/align]
[align=left] this.config = config;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
}
l J2SE
19.拷贝一个目录(文件)到指定路径
[align=left]/**[/align]
[align=left] *拷贝一个目录或者文件到指定路径下[/align]
[align=left] *@paramsource[/align]
[align=left] *@paramtarget[/align]
[align=left] */[/align]
[align=left] publicvoid copy(File source,File target)[/align]
[align=left] {[/align]
[align=left] File tarpath = new File(target,source.getName());[/align]
[align=left] if(source.isDirectory())[/align]
[align=left] {[/align]
[align=left] tarpath.mkdir();[/align]
[align=left] File[] dir = source.listFiles();[/align]
[align=left] for (int i = 0; i < dir.length; i++) {[/align]
[align=left] copy(dir[i],tarpath);[/align]
[align=left] }[/align]
[align=left] }else[/align]
[align=left] {[/align]
[align=left] try {[/align]
[align=left] InputStream is = new FileInputStream(source);[/align]
[align=left] OutputStream os = new FileOutputStream(tarpath);[/align]
[align=left] byte[] buf = newbyte[1024];[/align]
[align=left] int len = 0;[/align]
[align=left] while((len = is.read(buf))!=-1)[/align]
[align=left] {[/align]
[align=left] os.write(buf,0,len);[/align]
[align=left] }[/align]
[align=left] is.close();[/align]
[align=left] os.close();[/align]
[align=left] } catch (FileNotFoundException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
}
20.用JAVA中的多线程示例银行取款问题
[align=left]packagecom.softeem.demo;[/align]
[align=left] [/align]
[align=left] /**[/align]
[align=left] *@authorleno[/align]
[align=left] *账户类[/align]
[align=left] *默认有余额,可以取款[/align]
[align=left] */[/align]
[align=left]class Account {[/align]
[align=left] privatefloatbalance = 1000;[/align]
[align=left] [/align]
[align=left] publicfloat getBalance() {[/align]
[align=left] returnbalance;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setBalance(float balance) {[/align]
[align=left] this.balance = balance;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] /**[/align]
[align=left] *取款的方法需要同步[/align]
[align=left] *@parammoney[/align]
[align=left] */[/align]
[align=left] publicsynchronizedvoid withdrawals(float money)[/align]
[align=left] {[/align]
[align=left] if(balance>=money)[/align]
[align=left] {[/align]
[align=left] System.out.println("被取走"+money+"元!");[/align]
[align=left] try {[/align]
[align=left] Thread.sleep(1000);[/align]
[align=left] } catch (InterruptedException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] balance-=money;[/align]
[align=left] }[/align]
[align=left] else[/align]
[align=left] {[/align]
[align=left] System.out.println("对不起,余额不足!");[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]
[align=left] [/align]
[align=left] /**[/align]
[align=left] *@authorleno[/align]
[align=left] *银行卡[/align]
[align=left] */[/align]
[align=left]class TestAccount1 extends Thread {[/align]
[align=left] [/align]
[align=left] private Account account;[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] public TestAccount1(Account account) {[/align]
[align=left] this.account = account;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] @Override[/align]
[align=left] publicvoid run() {[/align]
[align=left] account.withdrawals(800);[/align]
[align=left] System.out.println("余额为:"+account.getBalance()+"元!");[/align]
[align=left] } [/align]
[align=left]}[/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *存折[/align]
[align=left] */[/align]
[align=left] class TestAccount2 extends Thread {[/align]
[align=left] [/align]
[align=left] private Account account;[/align]
[align=left] public TestAccount2(Account account) {[/align]
[align=left] this.account = account;[/align]
[align=left] }[/align]
[align=left] @Override[/align]
[align=left] publicvoid run() {[/align]
[align=left] account.withdrawals(700);[/align]
[align=left] System.out.println("余额为:"+account.getBalance()+"元!");[/align]
[align=left] } [/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]publicclass Test[/align]
[align=left]{[/align]
[align=left] publicstaticvoid main(String[] args) {[/align]
[align=left] Account account = new Account();[/align]
[align=left] TestAccount1 testAccount1 = new TestAccount1(account);[/align]
[align=left] testAccount1.start();[/align]
[align=left] TestAccount2 testAccount2 = new TestAccount2(account);[/align]
[align=left] testAccount2.start();[/align]
[align=left] }[/align]
[align=left]}[/align]
21.用JAVA中的多线程示例火车站售票问题
[align=left]package com.softeem.demo;[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *售票类[/align]
[align=left] */[/align]
[align=left]class SaleTicket implements Runnable {[/align]
[align=left] inttickets = 100;[/align]
[align=left] [/align]
[align=left] publicvoid run() {[/align]
[align=left] while (tickets > 0) {[/align]
[align=left] sale();[/align]
[align=left]//或者下面这样实现[/align]
[align=left]// synchronized (this) {[/align]
[align=left]// if (tickets > 0) {[/align]
[align=left]// System.out.println(Thread.currentThread().getName() + "卖第"[/align]
[align=left]// + (100 - tickets + 1) + "张票");[/align]
[align=left]// tickets--;[/align]
[align=left]// }[/align]
[align=left]// }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicsynchronizedvoid sale() {[/align]
[align=left] if (tickets > 0) {[/align]
[align=left] System.out.println(Thread.currentThread().getName() + "卖第"[/align]
[align=left] + (100 - tickets + 1) + "张票");[/align]
[align=left] tickets--;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]publicclass TestSaleTicket {[/align]
[align=left] [/align]
[align=left] publicstaticvoid main(String[] args) {[/align]
[align=left] SaleTicket st = new SaleTicket();[/align]
[align=left] new Thread(st, "一号窗口").start();[/align]
[align=left] new Thread(st, "二号窗口").start();[/align]
[align=left] new Thread(st, "三号窗口").start();[/align]
[align=left] new Thread(st, "四号窗口").start();[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left]}[/align]
22.用JAVA中的多线程示例生产者和消费者问题
[align=left]package com.softeem.demo;[/align]
[align=left] [/align]
[align=left]class Producer implements Runnable[/align]
[align=left]{[/align]
[align=left]private SyncStack stack;[/align]
[align=left] [/align]
[align=left] public Producer(SyncStack stack) {[/align]
[align=left] this.stack = stack;[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left] publicvoid run() {[/align]
[align=left] for (int i = 0; i < stack.getProducts().length; i++) {[/align]
[align=left] String product = "产品"+i;[/align]
[align=left] stack.push(product);[/align]
[align=left] System.out.println("生产了: "+product);[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] Thread.sleep(200);[/align]
[align=left] }[/align]
[align=left] catch(InterruptedException e)[/align]
[align=left] {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]class Consumer implements Runnable[/align]
[align=left]{[/align]
[align=left] private SyncStack stack;[/align]
[align=left] [/align]
[align=left] public Consumer(SyncStack stack) {[/align]
[align=left] this.stack = stack;[/align]
[align=left]}[/align]
[align=left] publicvoid run() {[/align]
[align=left] for(int i=0;i<stack.getProducts().length;i++)[/align]
[align=left] {[/align]
[align=left] String product =stack.pop();[/align]
[align=left] System.out.println("消费了: "+product);[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] Thread.sleep(1000);[/align]
[align=left] }[/align]
[align=left] catch(InterruptedException e)[/align]
[align=left] {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]class SyncStack[/align]
[align=left]{[/align]
[align=left] private String[] products = new String[10];[/align]
[align=left] privateintindex;[/align]
[align=left] publicsynchronizedvoid push(String product)[/align]
[align=left] {[/align]
[align=left] if(index==product.length())[/align]
[align=left] {[/align]
[align=left] try {[/align]
[align=left] wait();[/align]
[align=left] } catch (InterruptedException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] notify();[/align]
[align=left] products[index]=product;[/align]
[align=left] index++;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicsynchronized String pop()[/align]
[align=left] {[/align]
[align=left] if(index==0)[/align]
[align=left] {[/align]
[align=left] try {[/align]
[align=left] wait();[/align]
[align=left] } catch (InterruptedException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] notify();[/align]
[align=left] index--;[/align]
[align=left] String product = products[index];[/align]
[align=left] return product;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public String[] getProducts() {[/align]
[align=left] returnproducts;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]}[/align]
[align=left]publicclass TestProducerConsumer {[/align]
[align=left] [/align]
[align=left] publicstaticvoid main(String[] args) {[/align]
[align=left] SyncStack stack=new SyncStack();[/align]
[align=left] Producer p=new Producer(stack);[/align]
[align=left] Consumer c=new Consumer(stack);[/align]
[align=left] [/align]
[align=left] new Thread(p).start();[/align]
[align=left] new Thread(c).start();[/align]
[align=left] }[/align]
[align=left] }[/align]
23.编程实现序列化的Student(sno,sname)对象在网络上的传输
package com.softeem.demo;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.ServerSocket;
import java.net.Socket;
class Student implements Serializable {
private int sno;
private String sname;
public Student(int sno, String sname) {
this.sno = sno;
this.sname = sname;
}
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
@Override
public String toString() {
return "学号:" + sno + ";姓名:" + sname;
}
}
class MyClient extends Thread {
@Override
public void run() {
try {
Socket s = new Socket("localhost", 9999);
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Student stu = (Student) ois.readObject();
System.out.println("客户端程序收到服务器端程序传输过来的学生对象>> " + stu);
ois.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyServer extends Thread {
@Override
public void run() {
try {
ServerSocket ss = new ServerSocket(9999);
Socket s = ss.accept();
ObjectOutputStream ops = new ObjectOutputStream(s.getOutputStream());
Student stu = new Student(1, "赵本山");
ops.writeObject(stu);
ops.close();
s.close();
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class TestTransfer {
public static void main(String[] args) {
new MyServer().start();
new MyClient().start();
}
}
l JDBC
24.用dom4j组件解析如下XML格式的文件:
<?xml version="1.0" encoding="UTF-8"?>
<generator>
<table name="login" operation="1">
<column name="username" handle="0">aaa</column>
<column name="password" handle="0">123</column>
</table>
<table name="login" operation="2">
<column name="id" handle="1">1</column>
<column name="username" handle="0">bbb</column>
<column name="password" handle="0">444</column>
</table>
<table name="login" operation="3">
<column name="id" handle="1">4</column>
</table>
</generator>
规则:<table>operation 1表insert,2表update,3表delete.
<column>handle 1表作为where条件,0表作为操作字段。
要求:按照规则生成三条SQL语句!(即做一个方法解析xml文件生成一个含有三条SQL语句的字符串)
[align=left]/**[/align]
[align=left] *解析XML文件生成一个含有可执行SQL语句的字符串[/align]
[align=left] *@paramxmlFileName[/align]
[align=left] *@returnSQL[/align]
[align=left] */[/align]
[align=left] public String parseXmltoSQL(String xmlFileName) {[/align]
[align=left] StringBuffer sbsql = new StringBuffer();[/align]
[align=left] SAXReader reader = new SAXReader();[/align]
[align=left] try {[/align]
[align=left] Document document = reader.read(new File(xmlFileName));[/align]
[align=left] Element element = document.getRootElement();[/align]
[align=left] Iterator it = element.elementIterator("table");[/align]
[align=left] while (it.hasNext()) {[/align]
[align=left] element = (Element) it.next();[/align]
[align=left] //获得对表的操作[/align]
[align=left] String oper = element.attributeValue("operation");[/align]
[align=left] //获得表名[/align]
[align=left] String tableName = element.attributeValue("name");[/align]
[align=left] if ("1".equals(oper)) {[/align]
[align=left] sbsql.append("insert into ").append(tableName);[/align]
[align=left] Iterator it2 = element.elementIterator("column");[/align]
[align=left] String columnName1 = null;[/align]
[align=left] String columnValue1 = null;[/align]
[align=left] String columnName2 = null;[/align]
[align=left] String columnValue2 = null;[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName1 = element.attributeValue("name");[/align]
[align=left] columnValue1 = element.getText();[/align]
[align=left] }[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName2 = element.attributeValue("name");[/align]
[align=left] columnValue2 = element.getText();[/align]
[align=left] }[/align]
[align=left] sbsql.append("("+columnName1+","+columnName2+")"+" values('"+columnValue1+"','"+columnValue2+"')/n");[/align]
[align=left] [/align]
[align=left] } elseif ("2".equals(oper)) {[/align]
[align=left] sbsql.append("update ").append(tableName);[/align]
[align=left] Iterator it2 = element.elementIterator("column");[/align]
[align=left] String columnName1 = null;[/align]
[align=left] String columnValue1 = null;[/align]
[align=left] String columnName2 = null;[/align]
[align=left] String columnValue2 = null;[/align]
[align=left] String columnName3 = null;[/align]
[align=left] String columnValue3 = null;[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName1 = element.attributeValue("name");[/align]
[align=left] columnValue1 = element.getText();[/align]
[align=left] }[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName2 = element.attributeValue("name");[/align]
[align=left] columnValue2 = element.getText();[/align]
[align=left] }[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName3 = element.attributeValue("name");[/align]
[align=left] columnValue3 = element.getText();[/align]
[align=left] }[/align]
[align=left] sbsql.append(" set "+columnName2+"='"+columnValue2+"',"+columnName3+"='"+columnValue3+"' where "+columnName1+"="+columnValue1+"/n");[/align]
[align=left] [/align]
[align=left] }elseif ("3".equals(oper)) {[/align]
[align=left] sbsql.append("delete from ").append(tableName);[/align]
[align=left] Iterator it2 = element.elementIterator("column");[/align]
[align=left] String columnName1 = null;[/align]
[align=left] String columnValue1 = null;[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName1 = element.attributeValue("name");[/align]
[align=left] columnValue1 = element.getText();[/align]
[align=left] }[/align]
[align=left] sbsql.append(" where "+columnName1+"="+columnValue1);[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] } catch (DocumentException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] return sbsql.toString();[/align]
}
l JSP/SERVLET
25.写出JSP的内置对象并说明他们的作用
request:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header数据的有用的方法。 response:response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等) out:out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 pageContext:pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 session:session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 application:applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 config:config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 page:page表示从该页面产生的一个servlet实例。
exception: exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
a:免费,开源,跨平台(平台独立性),简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台, 无线应用
2.列举出JAVA中10个面向对象编程的术语
a:包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型
3.列举出JAVA中6个比较常用的包
Java.lang;java.util;java.io;java.sql;java.awt;java.net;java.applet;javax.swing
4.JAVA中的标识符有什么作用和特点
作用:标识符用作给变量、类和方法命名
特点:可以以字母、下划线“_”和”$”符开头
首字符外,可以跟上字母、下划线“_”和”$”符或数字
Java是大小写敏感的,标识符也不例外
5.JAVA中的关键字有什么特点,列举出至少20个关键字
Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(keyword)
所有Java关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字 ;
goto和const 虽然从未被使用,但也作为Java关键字保留;
• 中一共有51个关键字Java
abstract | assert | boolean | break | byte | continue |
case | catch | char | class | const | double |
default | do | extends | else | final | float |
for | goto | long | if | implements | import |
native | new | null | instanceof | int | interface |
package | private | protected | public | return | short |
static | strictfp | super | switch | synchronized | this |
while | void | throw | throws | transient | try |
volatile |
可分为简单数据类型和引用数据类型:
简单数据类型:数值型(byte,short,int,long,float double),字符型(char),布尔型(boolean);
引用数据类型:类,接口,数组.
7.JAVA中运算符的分类及举例
• 分割符:,,;,[],()
• 算术运算符: +,―,*,/,%,++,――
• 关系运算符: >,<,>=,<=,==,!=
• 布尔逻辑运算符: !,& , | , ^ , &&,||
• 位运算符: &,|,^,~ , >>,<<,>>>
• 赋值运算符: = 扩展赋值运算符:+=,―=,*=,/=
• 字符串连接运算符: +
• 造型操作符:()
8.super,this关键字的作用及用法
• 在Java类中使用super来引用父类的成分
– 可用于访问父类中定义的属性super
– 可用于调用父类中定义的成员方法super
– 可用于在子类构造器中调用父类的构造器super
– 的追溯不仅于直接父类super
• 中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象。Java
– 构造器中指该构造器所创建的新对象
– 方法中指调用该方法的对象
• 关键字的用法this
– 在类本身的方法或构造器中引用该类的实例变量和方法
– 将当前对象作为参数传递给其它方法或构造器
– 用来调用其他的重载的构造器
9.什么是JAVA中的表达式?有什么作用?
• 表达式是运算符和操作数的结合,它是任何一门编程语言的关键组成部分
• 表达式允许程序员进行数学计算、值的比较、逻辑操作以及在Java中进行对象的操作。
• 一些表达式的例子:
– X
– X+10
– Y=x+10
– Arr[10]
– student.geName()
10.做表列出JAVA中所有修饰符和他们的适用范围(能不能修饰构造器,属性,自由块等)
class | 属性 | 方法 | 构建器 | 自由块 | 内部类 | |
public | Y | Y | Y | Y | Y | |
protected | Y | Y | Y | Y | ||
(Default) | Y | Y | Y | Y | Y | Y |
private | Y | Y | Y | Y | ||
final | Y | Y | Y | Y | ||
abstract | Y | Y | Y | |||
static | Y | Y | Y |
[align=left] /**[/align]
[align=left] *一个for循环打印九九乘法表[/align]
[align=left] */[/align]
[align=left] publicvoid nineNineMultiTable()[/align]
[align=left] {[/align]
[align=left] for (int i = 1,j = 1; j <= 9; i++) {[/align]
[align=left] System.out.print(i+"*"+j+"="+i*j+" ");[/align]
[align=left] if(i==j)[/align]
[align=left] {[/align]
[align=left] i=0;[/align]
[align=left] j++;[/align]
[align=left] System.out.println();[/align]
[align=left] }[/align]
[align=left] }[/align]
}
12.给定一个java.util.Date对象,如何转化为”2007-3-22 20:23:22”格式的字符串
[align=left]/**[/align]
[align=left] *将某个日期以固定格式转化成字符串[/align]
[align=left] *@paramdate[/align]
[align=left] *@returnstr[/align]
[align=left] */[/align]
[align=left] public String dateToStr(java.util.Date date)[/align]
[align=left] {[/align]
[align=left] SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");[/align]
[align=left] String str = sdf.format(date);[/align]
[align=left] return str;[/align]
}
13.写一个方法,能够判断任意一个整数是否素数
[align=left]/**[/align]
[align=left] *判断任意一个整数是否素数[/align]
[align=left] *@paramn[/align]
[align=left] *@returnboolean[/align]
[align=left] */[/align]
[align=left] publicboolean isPrimes(int n)[/align]
[align=left] {[/align]
[align=left] for (int i = 2; i <= Math.sqrt(n); i++) {[/align]
[align=left] if(n%i==0)[/align]
[align=left] {[/align]
[align=left] returnfalse;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] returntrue;[/align]
}
14.写一个方法,输入任意一个整数,返回它的阶乘
[align=left]/**[/align]
[align=left] *获得任意一个整数的阶乘[/align]
[align=left] *@paramn[/align]
[align=left] *@returnn![/align]
[align=left] */[/align]
[align=left] publicint factorial(int n)[/align]
[align=left] {[/align]
[align=left] //递归[/align]
[align=left] if(n==1)[/align]
[align=left] {[/align]
[align=left] return 1;[/align]
[align=left] }[/align]
[align=left] return n*factorial(n-1);[/align]
[align=left] //非递归[/align]
[align=left]// int multi = 1;[/align]
[align=left]// for (int i = 2; i <= n; i++) {[/align]
[align=left]// multi*=i;[/align]
[align=left]// }[/align]
[align=left]// return multi;[/align]
}
15.写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1
[align=left]/**[/align]
[align=left] *二分查找特定整数在整型数组中的位置(递归)[/align]
[align=left] *@paramdataset[/align]
[align=left] *@paramdata[/align]
[align=left] *@parambeginIndex[/align]
[align=left] *@paramendIndex[/align]
[align=left] *@returnindex[/align]
[align=left] */[/align]
[align=left] publicint binarySearch(int[] dataset,int data,int beginIndex,int endIndex)[/align]
[align=left] {[/align]
[align=left] int midIndex = (beginIndex+endIndex)/2;[/align]
[align=left] if(data<dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;[/align]
[align=left] if(data<dataset[midIndex])[/align]
[align=left] {[/align]
[align=left] return binarySearch(dataset,data,beginIndex,midIndex-1);[/align]
[align=left] }elseif(data>dataset[midIndex])[/align]
[align=left] {[/align]
[align=left] return binarySearch(dataset,data,midIndex+1,endIndex);[/align]
[align=left] }else[/align]
[align=left] {[/align]
[align=left] return midIndex;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] /**[/align]
[align=left] *二分查找特定整数在整型数组中的位置(非递归)[/align]
[align=left] *@paramdataset[/align]
[align=left] *@paramdata[/align]
[align=left] *@returnindex[/align]
[align=left] */[/align]
[align=left] publicint binarySearch(int[] dataset ,int data)[/align]
[align=left] {[/align]
[align=left] int beginIndex = 0; [/align]
[align=left] int endIndex = dataset.length - 1; [/align]
[align=left] int midIndex = -1; [/align]
[align=left] if(data<dataset[beginIndex]||data>dataset[endIndex]||beginIndex>endIndex)return -1;[/align]
[align=left] while(beginIndex <= endIndex) { [/align]
[align=left] midIndex = (beginIndex+endIndex)/2;[/align]
[align=left] if(data<dataset[midIndex]) { [/align]
[align=left] endIndex = midIndex-1; [/align]
[align=left] } elseif(data>dataset[midIndex]) { [/align]
[align=left] beginIndex = midIndex+1; [/align]
[align=left] }else[/align]
[align=left] {[/align]
[align=left] return midIndex;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] return -1;[/align]
}
16.做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处
[align=left]package com.softeem.demo;[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *动物的接口[/align]
[align=left] */[/align]
[align=left]interface Animal[/align]
[align=left]{[/align]
[align=left] publicvoid eat(Food food);[/align]
[align=left]}[/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *一种动物类:猫[/align]
[align=left] */[/align]
[align=left]class Cat implements Animal[/align]
[align=left]{[/align]
[align=left] publicvoid eat(Food food)[/align]
[align=left] {[/align]
[align=left] System.out.println("小猫吃"+food.getName());[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *一种动物类:狗[/align]
[align=left] */[/align]
[align=left]class Dog implements Animal[/align]
[align=left]{[/align]
[align=left] publicvoid eat(Food food)[/align]
[align=left] {[/align]
[align=left] System.out.println("小狗啃"+food.getName());[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *食物抽象类[/align]
[align=left] */[/align]
[align=left]abstractclass Food[/align]
[align=left]{[/align]
[align=left] protected String name;[/align]
[align=left] public String getName() {[/align]
[align=left] returnname;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setName(String name) {[/align]
[align=left] this.name = name;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *一种食物类:鱼[/align]
[align=left] */[/align]
[align=left]class Fish extends Food[/align]
[align=left]{[/align]
[align=left] public Fish(String name) {[/align]
[align=left] this.name = name;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *一种食物类:骨头[/align]
[align=left] */[/align]
[align=left]class Bone extends Food[/align]
[align=left]{ [/align]
[align=left] public Bone(String name) {[/align]
[align=left] this.name = name;[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *饲养员类[/align]
[align=left] *[/align]
[align=left] */[/align]
[align=left]class Feeder[/align]
[align=left]{[/align]
[align=left] /**[/align]
[align=left] *饲养员给某种动物喂某种食物[/align]
[align=left] *@paramanimal[/align]
[align=left] *@paramfood[/align]
[align=left] */[/align]
[align=left] publicvoid feed(Animal animal,Food food)[/align]
[align=left] {[/align]
[align=left] animal.eat(food);[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *测试饲养员给动物喂食物[/align]
[align=left] */[/align]
[align=left]publicclass TestFeeder {[/align]
[align=left] [/align]
[align=left] publicstaticvoid main(String[] args) {[/align]
[align=left] Feeder feeder=new Feeder();[/align]
[align=left] Animal animal=new Dog();[/align]
[align=left] Food food=new Bone("肉骨头");[/align]
[align=left] feeder.feed(animal,food); //给狗喂肉骨头[/align]
[align=left] animal=new Cat();[/align]
[align=left] food=new Fish("鱼");[/align]
[align=left] feeder.feed(animal,food); //给猫喂鱼[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
}
17.描述JAVA中异常处理的机制
• 程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。Java
• 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。
• 如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。
• 程序员通常只能处理违例(Exception),而对错误(Error)无能为力。
18.做一个单子模式的类,只加载一次属性文件
[align=left]package com.softeem.demo;[/align]
[align=left] [/align]
[align=left]import java.io.FileInputStream;[/align]
[align=left]import java.io.FileNotFoundException;[/align]
[align=left]import java.io.IOException;[/align]
[align=left]import java.io.InputStream;[/align]
[align=left]import java.util.Properties;[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *单子模式,保证在整个应用期间只加载一次配置属性文件[/align]
[align=left] */[/align]
[align=left]publicclass Singleton {[/align]
[align=left] [/align]
[align=left] privatestatic Singleton instance;[/align]
[align=left] privatestaticfinal String CONFIG_FILE_PATH = "E://config.properties";[/align]
[align=left] private Properties config;[/align]
[align=left] private Singleton()[/align]
[align=left] {[/align]
[align=left] config = new Properties();[/align]
[align=left] InputStream is;[/align]
[align=left] try {[/align]
[align=left] is = new FileInputStream(CONFIG_FILE_PATH);[/align]
[align=left] config.load(is);[/align]
[align=left] is.close();[/align]
[align=left] } catch (FileNotFoundException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] publicstatic Singleton getInstance()[/align]
[align=left] {[/align]
[align=left] if(instance==null)[/align]
[align=left] {[/align]
[align=left] instance = new Singleton();[/align]
[align=left] }[/align]
[align=left] returninstance;[/align]
[align=left] }[/align]
[align=left] public Properties getConfig() {[/align]
[align=left] returnconfig;[/align]
[align=left] }[/align]
[align=left] publicvoid setConfig(Properties config) {[/align]
[align=left] this.config = config;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
}
l J2SE
19.拷贝一个目录(文件)到指定路径
[align=left]/**[/align]
[align=left] *拷贝一个目录或者文件到指定路径下[/align]
[align=left] *@paramsource[/align]
[align=left] *@paramtarget[/align]
[align=left] */[/align]
[align=left] publicvoid copy(File source,File target)[/align]
[align=left] {[/align]
[align=left] File tarpath = new File(target,source.getName());[/align]
[align=left] if(source.isDirectory())[/align]
[align=left] {[/align]
[align=left] tarpath.mkdir();[/align]
[align=left] File[] dir = source.listFiles();[/align]
[align=left] for (int i = 0; i < dir.length; i++) {[/align]
[align=left] copy(dir[i],tarpath);[/align]
[align=left] }[/align]
[align=left] }else[/align]
[align=left] {[/align]
[align=left] try {[/align]
[align=left] InputStream is = new FileInputStream(source);[/align]
[align=left] OutputStream os = new FileOutputStream(tarpath);[/align]
[align=left] byte[] buf = newbyte[1024];[/align]
[align=left] int len = 0;[/align]
[align=left] while((len = is.read(buf))!=-1)[/align]
[align=left] {[/align]
[align=left] os.write(buf,0,len);[/align]
[align=left] }[/align]
[align=left] is.close();[/align]
[align=left] os.close();[/align]
[align=left] } catch (FileNotFoundException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] } catch (IOException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
}
20.用JAVA中的多线程示例银行取款问题
[align=left]packagecom.softeem.demo;[/align]
[align=left] [/align]
[align=left] /**[/align]
[align=left] *@authorleno[/align]
[align=left] *账户类[/align]
[align=left] *默认有余额,可以取款[/align]
[align=left] */[/align]
[align=left]class Account {[/align]
[align=left] privatefloatbalance = 1000;[/align]
[align=left] [/align]
[align=left] publicfloat getBalance() {[/align]
[align=left] returnbalance;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicvoid setBalance(float balance) {[/align]
[align=left] this.balance = balance;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] /**[/align]
[align=left] *取款的方法需要同步[/align]
[align=left] *@parammoney[/align]
[align=left] */[/align]
[align=left] publicsynchronizedvoid withdrawals(float money)[/align]
[align=left] {[/align]
[align=left] if(balance>=money)[/align]
[align=left] {[/align]
[align=left] System.out.println("被取走"+money+"元!");[/align]
[align=left] try {[/align]
[align=left] Thread.sleep(1000);[/align]
[align=left] } catch (InterruptedException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] balance-=money;[/align]
[align=left] }[/align]
[align=left] else[/align]
[align=left] {[/align]
[align=left] System.out.println("对不起,余额不足!");[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]
[align=left] [/align]
[align=left] /**[/align]
[align=left] *@authorleno[/align]
[align=left] *银行卡[/align]
[align=left] */[/align]
[align=left]class TestAccount1 extends Thread {[/align]
[align=left] [/align]
[align=left] private Account account;[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] public TestAccount1(Account account) {[/align]
[align=left] this.account = account;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] @Override[/align]
[align=left] publicvoid run() {[/align]
[align=left] account.withdrawals(800);[/align]
[align=left] System.out.println("余额为:"+account.getBalance()+"元!");[/align]
[align=left] } [/align]
[align=left]}[/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *存折[/align]
[align=left] */[/align]
[align=left] class TestAccount2 extends Thread {[/align]
[align=left] [/align]
[align=left] private Account account;[/align]
[align=left] public TestAccount2(Account account) {[/align]
[align=left] this.account = account;[/align]
[align=left] }[/align]
[align=left] @Override[/align]
[align=left] publicvoid run() {[/align]
[align=left] account.withdrawals(700);[/align]
[align=left] System.out.println("余额为:"+account.getBalance()+"元!");[/align]
[align=left] } [/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]publicclass Test[/align]
[align=left]{[/align]
[align=left] publicstaticvoid main(String[] args) {[/align]
[align=left] Account account = new Account();[/align]
[align=left] TestAccount1 testAccount1 = new TestAccount1(account);[/align]
[align=left] testAccount1.start();[/align]
[align=left] TestAccount2 testAccount2 = new TestAccount2(account);[/align]
[align=left] testAccount2.start();[/align]
[align=left] }[/align]
[align=left]}[/align]
21.用JAVA中的多线程示例火车站售票问题
[align=left]package com.softeem.demo;[/align]
[align=left] [/align]
[align=left]/**[/align]
[align=left] *@authorleno[/align]
[align=left] *售票类[/align]
[align=left] */[/align]
[align=left]class SaleTicket implements Runnable {[/align]
[align=left] inttickets = 100;[/align]
[align=left] [/align]
[align=left] publicvoid run() {[/align]
[align=left] while (tickets > 0) {[/align]
[align=left] sale();[/align]
[align=left]//或者下面这样实现[/align]
[align=left]// synchronized (this) {[/align]
[align=left]// if (tickets > 0) {[/align]
[align=left]// System.out.println(Thread.currentThread().getName() + "卖第"[/align]
[align=left]// + (100 - tickets + 1) + "张票");[/align]
[align=left]// tickets--;[/align]
[align=left]// }[/align]
[align=left]// }[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicsynchronizedvoid sale() {[/align]
[align=left] if (tickets > 0) {[/align]
[align=left] System.out.println(Thread.currentThread().getName() + "卖第"[/align]
[align=left] + (100 - tickets + 1) + "张票");[/align]
[align=left] tickets--;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]publicclass TestSaleTicket {[/align]
[align=left] [/align]
[align=left] publicstaticvoid main(String[] args) {[/align]
[align=left] SaleTicket st = new SaleTicket();[/align]
[align=left] new Thread(st, "一号窗口").start();[/align]
[align=left] new Thread(st, "二号窗口").start();[/align]
[align=left] new Thread(st, "三号窗口").start();[/align]
[align=left] new Thread(st, "四号窗口").start();[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left]}[/align]
22.用JAVA中的多线程示例生产者和消费者问题
[align=left]package com.softeem.demo;[/align]
[align=left] [/align]
[align=left]class Producer implements Runnable[/align]
[align=left]{[/align]
[align=left]private SyncStack stack;[/align]
[align=left] [/align]
[align=left] public Producer(SyncStack stack) {[/align]
[align=left] this.stack = stack;[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left] publicvoid run() {[/align]
[align=left] for (int i = 0; i < stack.getProducts().length; i++) {[/align]
[align=left] String product = "产品"+i;[/align]
[align=left] stack.push(product);[/align]
[align=left] System.out.println("生产了: "+product);[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] Thread.sleep(200);[/align]
[align=left] }[/align]
[align=left] catch(InterruptedException e)[/align]
[align=left] {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]class Consumer implements Runnable[/align]
[align=left]{[/align]
[align=left] private SyncStack stack;[/align]
[align=left] [/align]
[align=left] public Consumer(SyncStack stack) {[/align]
[align=left] this.stack = stack;[/align]
[align=left]}[/align]
[align=left] publicvoid run() {[/align]
[align=left] for(int i=0;i<stack.getProducts().length;i++)[/align]
[align=left] {[/align]
[align=left] String product =stack.pop();[/align]
[align=left] System.out.println("消费了: "+product);[/align]
[align=left] try[/align]
[align=left] {[/align]
[align=left] Thread.sleep(1000);[/align]
[align=left] }[/align]
[align=left] catch(InterruptedException e)[/align]
[align=left] {[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left]class SyncStack[/align]
[align=left]{[/align]
[align=left] private String[] products = new String[10];[/align]
[align=left] privateintindex;[/align]
[align=left] publicsynchronizedvoid push(String product)[/align]
[align=left] {[/align]
[align=left] if(index==product.length())[/align]
[align=left] {[/align]
[align=left] try {[/align]
[align=left] wait();[/align]
[align=left] } catch (InterruptedException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] notify();[/align]
[align=left] products[index]=product;[/align]
[align=left] index++;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] publicsynchronized String pop()[/align]
[align=left] {[/align]
[align=left] if(index==0)[/align]
[align=left] {[/align]
[align=left] try {[/align]
[align=left] wait();[/align]
[align=left] } catch (InterruptedException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] notify();[/align]
[align=left] index--;[/align]
[align=left] String product = products[index];[/align]
[align=left] return product;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public String[] getProducts() {[/align]
[align=left] returnproducts;[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]}[/align]
[align=left]publicclass TestProducerConsumer {[/align]
[align=left] [/align]
[align=left] publicstaticvoid main(String[] args) {[/align]
[align=left] SyncStack stack=new SyncStack();[/align]
[align=left] Producer p=new Producer(stack);[/align]
[align=left] Consumer c=new Consumer(stack);[/align]
[align=left] [/align]
[align=left] new Thread(p).start();[/align]
[align=left] new Thread(c).start();[/align]
[align=left] }[/align]
[align=left] }[/align]
23.编程实现序列化的Student(sno,sname)对象在网络上的传输
package com.softeem.demo;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.ServerSocket;
import java.net.Socket;
class Student implements Serializable {
private int sno;
private String sname;
public Student(int sno, String sname) {
this.sno = sno;
this.sname = sname;
}
public int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
@Override
public String toString() {
return "学号:" + sno + ";姓名:" + sname;
}
}
class MyClient extends Thread {
@Override
public void run() {
try {
Socket s = new Socket("localhost", 9999);
ObjectInputStream ois = new ObjectInputStream(s.getInputStream());
Student stu = (Student) ois.readObject();
System.out.println("客户端程序收到服务器端程序传输过来的学生对象>> " + stu);
ois.close();
s.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class MyServer extends Thread {
@Override
public void run() {
try {
ServerSocket ss = new ServerSocket(9999);
Socket s = ss.accept();
ObjectOutputStream ops = new ObjectOutputStream(s.getOutputStream());
Student stu = new Student(1, "赵本山");
ops.writeObject(stu);
ops.close();
s.close();
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class TestTransfer {
public static void main(String[] args) {
new MyServer().start();
new MyClient().start();
}
}
l JDBC
24.用dom4j组件解析如下XML格式的文件:
<?xml version="1.0" encoding="UTF-8"?>
<generator>
<table name="login" operation="1">
<column name="username" handle="0">aaa</column>
<column name="password" handle="0">123</column>
</table>
<table name="login" operation="2">
<column name="id" handle="1">1</column>
<column name="username" handle="0">bbb</column>
<column name="password" handle="0">444</column>
</table>
<table name="login" operation="3">
<column name="id" handle="1">4</column>
</table>
</generator>
规则:<table>operation 1表insert,2表update,3表delete.
<column>handle 1表作为where条件,0表作为操作字段。
要求:按照规则生成三条SQL语句!(即做一个方法解析xml文件生成一个含有三条SQL语句的字符串)
[align=left]/**[/align]
[align=left] *解析XML文件生成一个含有可执行SQL语句的字符串[/align]
[align=left] *@paramxmlFileName[/align]
[align=left] *@returnSQL[/align]
[align=left] */[/align]
[align=left] public String parseXmltoSQL(String xmlFileName) {[/align]
[align=left] StringBuffer sbsql = new StringBuffer();[/align]
[align=left] SAXReader reader = new SAXReader();[/align]
[align=left] try {[/align]
[align=left] Document document = reader.read(new File(xmlFileName));[/align]
[align=left] Element element = document.getRootElement();[/align]
[align=left] Iterator it = element.elementIterator("table");[/align]
[align=left] while (it.hasNext()) {[/align]
[align=left] element = (Element) it.next();[/align]
[align=left] //获得对表的操作[/align]
[align=left] String oper = element.attributeValue("operation");[/align]
[align=left] //获得表名[/align]
[align=left] String tableName = element.attributeValue("name");[/align]
[align=left] if ("1".equals(oper)) {[/align]
[align=left] sbsql.append("insert into ").append(tableName);[/align]
[align=left] Iterator it2 = element.elementIterator("column");[/align]
[align=left] String columnName1 = null;[/align]
[align=left] String columnValue1 = null;[/align]
[align=left] String columnName2 = null;[/align]
[align=left] String columnValue2 = null;[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName1 = element.attributeValue("name");[/align]
[align=left] columnValue1 = element.getText();[/align]
[align=left] }[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName2 = element.attributeValue("name");[/align]
[align=left] columnValue2 = element.getText();[/align]
[align=left] }[/align]
[align=left] sbsql.append("("+columnName1+","+columnName2+")"+" values('"+columnValue1+"','"+columnValue2+"')/n");[/align]
[align=left] [/align]
[align=left] } elseif ("2".equals(oper)) {[/align]
[align=left] sbsql.append("update ").append(tableName);[/align]
[align=left] Iterator it2 = element.elementIterator("column");[/align]
[align=left] String columnName1 = null;[/align]
[align=left] String columnValue1 = null;[/align]
[align=left] String columnName2 = null;[/align]
[align=left] String columnValue2 = null;[/align]
[align=left] String columnName3 = null;[/align]
[align=left] String columnValue3 = null;[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName1 = element.attributeValue("name");[/align]
[align=left] columnValue1 = element.getText();[/align]
[align=left] }[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName2 = element.attributeValue("name");[/align]
[align=left] columnValue2 = element.getText();[/align]
[align=left] }[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName3 = element.attributeValue("name");[/align]
[align=left] columnValue3 = element.getText();[/align]
[align=left] }[/align]
[align=left] sbsql.append(" set "+columnName2+"='"+columnValue2+"',"+columnName3+"='"+columnValue3+"' where "+columnName1+"="+columnValue1+"/n");[/align]
[align=left] [/align]
[align=left] }elseif ("3".equals(oper)) {[/align]
[align=left] sbsql.append("delete from ").append(tableName);[/align]
[align=left] Iterator it2 = element.elementIterator("column");[/align]
[align=left] String columnName1 = null;[/align]
[align=left] String columnValue1 = null;[/align]
[align=left] if (it2.hasNext()) {[/align]
[align=left] element = (Element) it2.next();[/align]
[align=left] columnName1 = element.attributeValue("name");[/align]
[align=left] columnValue1 = element.getText();[/align]
[align=left] }[/align]
[align=left] sbsql.append(" where "+columnName1+"="+columnValue1);[/align]
[align=left] [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] } catch (DocumentException e) {[/align]
[align=left] // TODO Auto-generated catch block[/align]
[align=left] e.printStackTrace();[/align]
[align=left] }[/align]
[align=left] return sbsql.toString();[/align]
}
l JSP/SERVLET
25.写出JSP的内置对象并说明他们的作用
request:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header数据的有用的方法。 response:response表示HttpServletResponse对象,并提供了几个用于设置送回 浏览器的响应的方法(如cookies,头信息等) out:out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。 pageContext:pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。 session:session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息 application:applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息 config:config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 page:page表示从该页面产生的一个servlet实例。
exception: exception对象是一个例外对象,当一个页面在运行过程中发生了例外,就产生这个对象。如果一个JSP页面要应用此对象,就必须把isErrorPage设为true,否则无法编译。他实际上是java.lang.Throwable的对象
相关文章推荐
- Java面试中遇到的一些经典算法题目
- java经典面试题目
- java基础黑马程序员经典题目
- 你感觉你是个JAVA高手吗,那么就来挑战一下吧,下面可是ACM一道很经典的题目,试一吧!
- Java经典题目
- [Java经典题目]利用if语句判断分数等级
- java经典题目2
- 面向对象题目,经典点的(java的 也可以用c#做下)
- Java面试经典,小题目大学问
- java经典题目(转)
- JAVA32道经典算法题目
- 分享Java面试中遇到的一些经典算法题目
- Java经典题目 06 07
- java经典题目-1
- Java经典题目
- Java 经典题目【转载】
- java经典题目_完数
- java经典题目_球自由落体
- java多线程经典题目
- java经典题目---1(转贴)