Java经典题Word文件下载.docx
《Java经典题Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java经典题Word文件下载.docx(23页珍藏版)》请在冰豆网上搜索。
![Java经典题Word文件下载.docx](https://file1.bdocx.com/fileroot1/2023-2/2/df690346-4c22-4af3-a872-301a5d2cdb14/df690346-4c22-4af3-a872-301a5d2cdb141.gif)
简单数据类型:
数值型(byte,short,int,long,floatdouble),字符型(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属性方法构建器自由块内部类
publicYYYYY
protectedYYYY
(Default)YYYYYY
privateYYYY
finalYYYY
abstractYYY
staticYYY
11.写一个方法,用一个for循环打印九九乘法表
/**
*一个for循环打印九九乘法表
*/
publicvoidnineNineMultiTable()
{
for(inti=1,j=1;
j<
=9;
i++){
System.out.print(i+"
*"
+j+"
="
+i*j+"
"
);
if(i==j)
i=0;
j++;
System.out.println();
}
12.给定一个java.util.Date对象,如何转化为”2007-3-2220:
23:
22”格式的字符串
*将某个日期以固定格式转化成字符串
*@paramdate
*@returnstr
publicStringdateToStr(java.util.Datedate)
SimpleDateFormatsdf=newSimpleDateFormat("
yyyy-MM-ddHH:
mm:
ss"
Stringstr=sdf.format(date);
returnstr;
13.写一个方法,能够判断任意一个整数是否素数
*判断任意一个整数是否素数
*@paramn
*@returnboolean
publicbooleanisPrimes(intn)
for(inti=2;
i<
=Math.sqrt(n);
if(n%i==0)
returnfalse;
returntrue;
14.写一个方法,输入任意一个整数,返回它的阶乘
*获得任意一个整数的阶乘
*@returnn!
publicintfactorial(intn)
//递归
if(n==1)
return1;
returnn*factorial(n-1);
//非递归
//intmulti=1;
//for(inti=2;
=n;
//multi*=i;
//}
//returnmulti;
15.写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1
*二分查找特定整数在整型数组中的位置(递归)
*@paramdataset
*@paramdata
*@parambeginIndex
*@paramendIndex
*@returnindex
publicintbinarySearch(int[]dataset,intdata,intbeginIndex,intendIndex)
intmidIndex=(beginIndex+endIndex)/2;
if(data<
dataset[beginIndex]||data>
dataset[endIndex]||beginIndex>
endIndex)return-1;
dataset[midIndex])
returnbinarySearch(dataset,data,beginIndex,midIndex-1);
}elseif(data>
returnbinarySearch(dataset,data,midIndex+1,endIndex);
}else
returnmidIndex;
*二分查找特定整数在整型数组中的位置(非递归)
publicintbinarySearch(int[]dataset,intdata)
intbeginIndex=0;
intendIndex=dataset.length-1;
intmidIndex=-1;
while(beginIndex<
=endIndex){
midIndex=(beginIndex+endIndex)/2;
dataset[midIndex]){
endIndex=midIndex-1;
}elseif(data>
beginIndex=midIndex+1;
return-1;
16.做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处
packagecom.softeem.demo;
*@authorleno
*动物的接口
interfaceAnimal
publicvoideat(Foodfood);
*一种动物类:
猫
classCatimplementsAnimal
publicvoideat(Foodfood)
System.out.println("
小猫吃"
+food.getName());
狗
classDogimplementsAnimal
小狗啃"
*食物抽象类
abstractclassFood
protectedStringname;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
this.name=name;
*一种食物类:
鱼
classFishextendsFood
publicFish(Stringname){
骨头
classBoneextendsFood
{
publicBone(Stringname){
*饲养员类
*
classFeeder
*饲养员给某种动物喂某种食物
*@paramanimal
*@paramfood
publicvoidfeed(Animalanimal,Foodfood)
animal.eat(food);
*测试饲养员给动物喂食物
publicclassTestFeeder{
publicstaticvoidmain(String[]args){
Feederfeeder=newFeeder();
Animalanimal=newDog();
Foodfood=newBone("
肉骨头"
feeder.feed(animal,food);
//给狗喂肉骨头
animal=newCat();
food=newFish("
鱼"
//给猫喂鱼
17.描述JAVA中异常处理的机制
•程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。
•当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。
•如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。
•程序员通常只能处理违例(Exception),而对错误(Error)无能为力。
2.18.做一个单子模式的类,只加载一次属性文件
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.IOException;
importjava.io.InputStream;
importjava.util.Properties;
*单子模式,保证在整个应用期间只加载一次配置属性文件
publicclassSingleton{
privatestaticSingletoninstance;
privatestaticfinalStringCONFIG_FILE_PATH="
E:
\\config.properties"
privatePropertiesconfig;
privateSingleton()
config=newProperties();
InputStreamis;
try{
is=newFileInputStream(CONFIG_FILE_PATH);
config.load(is);
is.close();
}catch(FileNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
publicstaticSingletongetInstance()
if(instance==null)
instance=newSingleton();
returninstance;
publicPropertiesgetConfig(){
returnconfig;
publicvoidsetConfig(Propertiesconfig){
this.config=config;
lJ2SE
19.拷贝一个目录(文件)到指定路径
*拷贝一个目录或者文件到指定路径下
*@paramsource
*@paramtarget
publicvoidcopy(Filesource,Filetarget)
Filetarpath=newFile(target,source.getName());
if(source.isDirectory())
tarpath.mkdir();
File[]dir=source.listFiles();
for(inti=0;
dir.length;
copy(dir[i],tarpath);
InputStreamis=newFileInputStream(source);
OutputStreamos=newFileOutputStream(tarpath);
byte[]buf=newbyte[1024];
intlen=0;
while((len=is.read(buf))!
=-1)
os.write(buf,0,len);
os.close();
20.用JAVA中的多线程示例银行取款问题
packagecom.softeem.demo;
*账户类
*默认有余额,可以取款
classAccount{
privatefloatbalance=1000;
publicfloatgetBalance(){
returnbalance;
publicvoidsetBalance(floatbalance){
this.balance=balance;
*取款的方法需要同步
*@parammoney
publicsynchronizedvoidwithdrawals(floatmoney)
if(balance>
=money)
被取走"
+money+"
元!
"
Thread.sleep(1000);
}catch(InterruptedExceptione){
balance-=money;
else
对不起,余额不足!
*银行卡
classTestAccount1extendsThread{
privateAccountaccount;
publicTestAccount1(Accountaccount){
this.account=account;
@Override
publicvoidrun(){
account.withdrawals(800);
余额为:
+account.getBalance()+"
}
*存折
classTestAccount2extendsThread{
publicTestAccount2(Accountaccount){
account.withdrawals(700);
publicclassTest
Accountaccount=newAccount();
TestAccount1testAccount1=newTestAccount1(account);
testAccount1.start();
TestAccount2testAccount2=newTestAccount2(account);
testAccount2.start();
21.用JAVA中的多线程示例火车站售票问题
*售票类
classSaleTicketimplementsRunnable{
inttickets=100;
while(tickets>
0){
sale();
//或者下面这样实现
//synchronized(this){
//if(tickets>
//System.out.println(Thread.currentThread().getName()+"
卖第"
//+(100-tickets+1)+"
张票"
//tickets--;
publicsynchronizedvoidsale(){
if(tickets>
System.out.println(Thread.currentThread().getName()+"
+(100-tickets+1)+"
tickets--;
publicclassTestSaleTicket{
SaleTicketst=newSaleTicket();
newThread(st,"
一号窗口"
).start();
二号窗口"
三号窗口"
四号窗口"
22.用JAVA中的多线程示例生产者和消费者问题
classProducerimplementsRunnable
privateSyncStackstack;
publicProducer(SyncStackstack){
this.stack=stack;
stack.getProducts().length;
Stringproduct="
产品"
+i;
stack.push(product);
生产了:
+product);
t