Java经典题.docx

上传人:b****8 文档编号:9095201 上传时间:2023-02-03 格式:DOCX 页数:23 大小:22.33KB
下载 相关 举报
Java经典题.docx_第1页
第1页 / 共23页
Java经典题.docx_第2页
第2页 / 共23页
Java经典题.docx_第3页
第3页 / 共23页
Java经典题.docx_第4页
第4页 / 共23页
Java经典题.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

Java经典题.docx

《Java经典题.docx》由会员分享,可在线阅读,更多相关《Java经典题.docx(23页珍藏版)》请在冰豆网上搜索。

Java经典题.docx

Java经典题

Java经典题

1.列举出10个JAVA语言的优势

a:

免费,开源,跨平台(平台独立性),简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台,无线应用

2.列举出JAVA中10个面向对象编程的术语

a:

包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型

3.列举出JAVA中6个比较常用的包

Java.lang;java.util;java.io;java.sql;java.awt;;java.applet;javax.swing

4.JAVA中的标识符有什么作用和特点

作用:

标识符用作给变量、类和方法命名

特点:

可以以字母、下划线“_”和”$”符开头

首字符外,可以跟上字母、下划线“_”和”$”符或数字

Java是大小写敏感的,标识符也不例外

5.JAVA中的关键字有什么特点,列举出至少20个关键字

Java中一些赋以特定的含义、并用做专门用途的单词称为关键字(keyword)

所有Java关键字都是小写的,TURE、FALSE、NULL等都不是Java关键字;

goto和const虽然从未被使用,但也作为Java关键字保留;

•中一共有51个关键字Java

abstractassertbooleanbreakbytecontinue

casecatchcharclassconstdouble

defaultdoextendselsefinalfloat

forgotolongifimplementsimport

nativenewnullinstanceofintinterface

packageprivateprotectedpublicreturnshort

staticstrictfpsuperswitchsynchronizedthis

whilevoidthrowthrowstransienttry

volatile

6.JAVA中数据类型如何分类?

可分为简单数据类型和引用数据类型:

简单数据类型:

数值型(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);i++){

if(n%i==0)

{

returnfalse;

}

}

returntrue;

}

14.写一个方法,输入任意一个整数,返回它的阶乘

/**

*获得任意一个整数的阶乘

*@paramn

*@returnn!

*/

publicintfactorial(intn)

{

//递归

if(n==1)

{

return1;

}

returnn*factorial(n-1);

//非递归

//intmulti=1;

//for(inti=2;i<=n;i++){

//multi*=i;

//}

//returnmulti;

}

15.写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1

/**

*二分查找特定整数在整型数组中的位置(递归)

*@paramdataset

*@paramdata

*@parambeginIndex

*@paramendIndex

*@returnindex

*/

publicintbinarySearch(int[]dataset,intdata,intbeginIndex,intendIndex)

{

intmidIndex=(beginIndex+endIndex)/2;

if(datadataset[endIndex]||beginIndex>endIndex)return-1;

if(data

{

returnbinarySearch(dataset,data,beginIndex,midIndex-1);

}elseif(data>dataset[midIndex])

{

returnbinarySearch(dataset,data,midIndex+1,endIndex);

}else

{

returnmidIndex;

}

}

/**

*二分查找特定整数在整型数组中的位置(非递归)

*@paramdataset

*@paramdata

*@returnindex

*/

publicintbinarySearch(int[]dataset,intdata)

{

intbeginIndex=0;

intendIndex=dataset.length-1;

intmidIndex=-1;

if(datadataset[endIndex]||beginIndex>endIndex)return-1;

while(beginIndex<=endIndex){

midIndex=(beginIndex+endIndex)/2;

if(data

endIndex=midIndex-1;

}elseif(data>dataset[midIndex]){

beginIndex=midIndex+1;

}else

{

returnmidIndex;

}

}

return-1;

}

16.做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处

packagecom.softeem.demo;

/**

*@authorleno

*动物的接口

*/

interfaceAnimal

{

publicvoideat(Foodfood);

}

/**

*@authorleno

*一种动物类:

*/

classCatimplementsAnimal

{

publicvoideat(Foodfood)

{

System.out.println("小猫吃"+food.getName());

}

}

/**

*@authorleno

*一种动物类:

*/

classDogimplementsAnimal

{

publicvoideat(Foodfood)

{

System.out.println("小狗啃"+food.getName());

}

}

/**

*@authorleno

*食物抽象类

*/

abstractclassFood

{

protectedStringname;

publicStringgetName(){

returnname;

}

publicvoidsetName(Stringname){

this.name=name;

}

}

/**

*@authorleno

*一种食物类:

*/

classFishextendsFood

{

publicFish(Stringname){

this.name=name;

}

}

/**

*@authorleno

*一种食物类:

骨头

*/

classBoneextendsFood

{

publicBone(Stringname){

this.name=name;

}

}

/**

*@authorleno

*饲养员类

*

*/

classFeeder

{

/**

*饲养员给某种动物喂某种食物

*@paramanimal

*@paramfood

*/

publicvoidfeed(Animalanimal,Foodfood)

{

animal.eat(food);

}

}

/**

*@authorleno

*测试饲养员给动物喂食物

*/

publicclassTestFeeder{

publicstaticvoidmain(String[]args){

Feederfeeder=newFeeder();

Animalanimal=newDog();

Foodfood=newBone("肉骨头");

feeder.feed(animal,food);//给狗喂肉骨头

animal=newCat();

food=newFish("鱼");

feeder.feed(animal,food);//给猫喂鱼

}

}

17.描述JAVA中异常处理的机制

•程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。

Java

•当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。

•如果Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序也将退出。

•程序员通常只能处理违例(Exception),而对错误(Error)无能为力。

2.18.做一个单子模式的类,只加载一次属性文件

packagecom.softeem.demo;

importjava.io.FileInputStream;

importjava.io.FileNotFoundException;

importjava.io.IOException;

importjava.io.InputStream;

importjava.util.Properties;

/**

*@authorleno

*单子模式,保证在整个应用期间只加载一次配置属性文件

*/

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){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

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;i

copy(dir[i],tarpath);

}

}else

{

try{

InputStreamis=newFileInputStream(source);

OutputStreamos=newFileOutputStream(tarpath);

byte[]buf=newbyte[1024];

intlen=0;

while((len=is.read(buf))!

=-1)

{

os.write(buf,0,len);

}

is.close();

os.close();

}catch(FileNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(IOExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

}

}

20.用JAVA中的多线程示例银行取款问题

packagecom.softeem.demo;

/**

*@authorleno

*账户类

*默认有余额,可以取款

*/

classAccount{

privatefloatbalance=1000;

publicfloatgetBalance(){

returnbalance;

}

publicvoidsetBalance(floatbalance){

this.balance=balance;

}

/**

*取款的方法需要同步

*@parammoney

*/

publicsynchronizedvoidwithdrawals(floatmoney)

{

if(balance>=money)

{

System.out.println("被取走"+money+"元!

");

try{

Thread.sleep(1000);

}catch(InterruptedExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

balance-=money;

}

else

{

System.out.println("对不起,余额不足!

");

}

}

}

/**

*@authorleno

*银行卡

*/

classTestAccount1extendsThread{

privateAccountaccount;

publicTestAccount1(Accountaccount){

this.account=account;

}

@Override

publicvoidrun(){

account.withdrawals(800);

System.out.println("余额为:

"+account.getBalance()+"元!

");

}

}

/**

*@authorleno

*存折

*/

classTestAccount2extendsThread{

privateAccountaccount;

publicTestAccount2(Accountaccount){

this.account=account;

}

@Override

publicvoidrun(){

account.withdrawals(700);

System.out.println("余额为:

"+account.getBalance()+"元!

");

}

}

publicclassTest

{

publicstaticvoidmain(String[]args){

Accountaccount=newAccount();

TestAccount1testAccount1=newTestAccount1(account);

testAccount1.start();

TestAccount2testAccount2=newTestAccount2(account);

testAccount2.start();

}

}

21.用JAVA中的多线程示例火车站售票问题

packagecom.softeem.demo;

/**

*@authorleno

*售票类

*/

classSaleTicketimplementsRunnable{

inttickets=100;

publicvoidrun(){

while(tickets>0){

sale();

//或者下面这样实现

//synchronized(this){

//if(tickets>0){

//System.out.println(Thread.currentThread().getName()+"卖第"

//+(100-tickets+1)+"张票");

//tickets--;

//}

//}

}

}

publicsynchronizedvoidsale(){

if(tickets>0){

System.out.println(Thread.currentThread().getName()+"卖第"

+(100-tickets+1)+"张票");

tickets--;

}

}

}

publicclassTestSaleTicket{

publicstaticvoidmain(String[]args){

SaleTicketst=newSaleTicket();

newThread(st,"一号窗口").start();

newThread(st,"二号窗口").start();

newThread(st,"三号窗口").start();

newThread(st,"四号窗口").start();

}

}

22.用JAVA中的多线程示例生产者和消费者问题

packagecom.softeem.demo;

classProducerimplementsRunnable

{

privateSyncStackstack;

publicProducer(SyncStackstack){

this.stack=stack;

}

publicvoidrun(){

for(inti=0;i

Stringproduct="产品"+i;

stack.push(product);

System.out.println("生产了:

"+product);

t

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 自考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1