Java面试题编程题Word格式.docx
- 文档编号:17016330
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:33
- 大小:32.75KB
Java面试题编程题Word格式.docx
《Java面试题编程题Word格式.docx》由会员分享,可在线阅读,更多相关《Java面试题编程题Word格式.docx(33页珍藏版)》请在冰豆网上搜索。
i++){
68、我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
publicStringtranslate(Stringstr){
StringtempStr="
try{
tempStr=newString(str.getBytes("
ISO-8859-1"
),"
GBK"
);
tempStr=tempStr.trim();
}catch(Exceptione){
System.err.println(e.getMessage());
returntempStr;
28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。
写出程序。
以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。
publicclassThreadTest1{
privateintj;
publicstaticvoidmain(Stringargs[]){
ThreadTest1tt=newThreadTest1();
Incinc=tt.newInc();
Decdec=tt.newDec();
for(inti=0;
i<
2;
i++){
Threadt=newThread(inc);
t.start();
t=newThread(dec);
}
privatesynchronizedvoidinc(){
j++;
System.out.println(Thread.currentThread().getName()
+"
-inc:
+j);
privatesynchronizedvoiddec(){
j--;
System.out.println(Thread.currentThread().getName()
+"
-dec:
classIncimplementsRunnable{
publicvoidrun(){
for(inti=0;
100;
inc();
classDecimplementsRunnable{
dec();
JAVA代码查错
abstractclassName{
privateStringname;
publicabstractbooleanisStupidName(Stringname){}
大侠们,这有何错误?
答案:
错。
abstractmethod必须以分号结尾,且不带花括号。
2.publicclassSomething{
voiddoSomething(){
privateStrings="
intl=s.length();
有错吗?
局部变量前不能放置任何访问修饰符(private,public,和protected)。
final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。
3.abstractclassSomething{
privateabstractStringdoSomething();
这好像没什么错吧?
abstract的methods不能以private修饰。
abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstractmethod封锁起来呢?
(同理,abstractmethod前不能加final)。
4.publicclassSomething{
publicintaddOne(finalintx){
return++x;
这个比较明显。
intx被修饰成final,意味着x不能在addOnemethod中被修改。
5.publicclassSomething{
publicstaticvoidmain(String[]args){
Othero=newOther();
newSomething().addOne(o);
}
publicvoidaddOne(finalOthero){
o.i++;
classOther{
publicinti;
和上面的很相似,都是关于final的问题,这有错吗?
正确。
在addOnemethod中,参数o被修饰成final。
如果在addOnemethod里我们修改了o的reference,(比如:
o=newOther();
),那么如同上例这题也是错的。
但这里修改的是o的membervairable(成员变量),而o的reference并没有改变。
6.classSomething{
inti;
publicvoiddoSomething(){
System.out.println("
i="
+i);
有什么错呢?
看不出来啊。
输出的是"
i=0"
。
inti属於instantvariable(实例变量,或叫成员变量)。
instantvariable有defaultvalue。
int的defaultvalue是0。
7.classSomething{
finalinti;
和上面一题只有一个地方不同,就是多了一个final。
这难道就错了吗?
finalinti是个final的instantvariable(实例变量,或叫成员变量)。
final的instantvariable没有defaultvalue,必须在constructor(构造器)结束之前被赋予一个明确的值。
可以修改为"
finalinti=0;
8.publicclassSomething{
publicstaticvoidmain(String[]args){
Somethings=newSomething();
System.out.println("
s.doSomething()returns"
+doSomething());
}
publicStringdoSomething(){
return"
Dosomething..."
看上去很完美。
看上去在main里calldoSomething没有什么问题,毕竟两个methods都在同一个class里。
但仔细看,main是static的。
staticmethod不能直接callnon-staticmethods。
可改成"
System.out.println("
+s.doSomething());
同理,staticmethod不能访问non-staticinstantvariable。
9.此处,Something类的文件名叫OtherThing.java
classSomething{
privatestaticvoidmain(String[]something_to_do){
System.out.println("
这个好像很明显。
从来没有人说过Java的Class名字必须和其文件名相同。
但publicclass的名字必须和文件名相同。
10.interfaceA{
intx=0;
classB{
intx=1;
classCextendsBimplementsA{
publicvoidpX(){
System.out.println(x);
publicstaticvoidmain(String[]args){
newC().pX();
答案:
错误。
在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时importjava.util和java.sql两个包时直接声明Date一样)。
对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为publicstaticfinal.所以可以通过A.x来明确。
11.interfacePlayable{
voidplay();
interfaceBounceable{
voidplay();
interfaceRollableextendsPlayable,Bounceable{
Ballball=newBall("
PingPang"
classBallimplementsRollable{
publicStringgetName(){
returnname;
publicBall(Stringname){
this.name=name;
publicvoidplay(){
ball=newBall("
Football"
System.out.println(ball.getName());
这个错误不容易发现。
interfaceRollableextendsPlayable,Bounceable"
没有问题。
interface可继承多个interfaces,所以这里没错。
问题出在interfaceRollable里的"
Ballball=newBall("
任何在interface里声明的interfacevariable(接口变量,也可称成员变量),默认为publicstaticfinal。
也就是说"
实际上是"
publicstaticfinalBallball=newBall("
在Ball类的Play()方法中,"
ball=newBall("
改变了ball的reference,而这里的ball来自Rollableinterface,Rollableinterface里的ball是publicstaticfinal的,final的object是不能被改变reference的。
因此编译器将在"
这里显示有错。
10.写一个方法,实现字符串的反转,如:
输入abc,输出cba
publicstaticStringreverse(Strings){
intlength=s.length();
StringBufferresult=newStringBuffer(length);
for(inti=length-1;
i>
=0;
i--)
result.append(s.charAt(i));
returnresult.toString();
JAVA编程题
1.现在输入n个数字,以逗号,分开;
然后可选择升或者降序排序;
按提交键就在另一页面显示按什么排序,结果为,提供reset
importjava.util.*;
publicclassbycomma{
publicstaticString[]splitStringByComma(Stringsource){
if(source==null||source.trim().equals("
))
returnnull;
StringTokenizercommaToker=newStringTokenizer(source,"
"
String[]result=newString[commaToker.countTokens()];
inti=0;
while(commaToker.hasMoreTokens()){
result[i]=commaToker.nextToken();
i++;
returnresult;
publicstaticvoidmain(Stringargs[]){
String[]s=splitStringByComma("
5,8,7,4,3,9,1"
int[]ii=newint[s.length];
for(inti=0;
s.length;
i++){
ii[i]=Integer.parseInt(s[i]);
Arrays.sort(ii);
//asc
System.out.println(ii[i]);
}//desc
for(inti=(s.length-1);
i>
=0;
i--){
2.金额转换,阿拉伯数字的金额转换成中国传统的形式如:
(¥1011)->
(一千零一拾一元整)输出。
packagetest.format;
importjava.text.NumberFormat;
importjava.util.HashMap;
publicclassSimpleMoneyFormat{
publicstaticfinalStringEMPTY="
publicstaticfinalStringZERO="
零"
publicstaticfinalStringONE="
壹"
publicstaticfinalStringTWO="
贰"
publicstaticfinalStringTHREE="
叁"
publicstaticfinalStringFOUR="
肆"
publicstaticfinalStringFIVE="
伍"
publicstaticfinalStringSIX="
陆"
publicstaticfinalStringSEVEN="
柒"
publicstaticfinalStringEIGHT="
捌"
publicstaticfinalStringNINE="
玖"
publicstaticfinalStringTEN="
拾"
publicstaticfinalStringHUNDRED="
佰"
publicstaticfinalStringTHOUSAND="
仟"
publicstaticfinalStringTEN_THOUSAND="
万"
publicstaticfinalStringHUNDRED_MILLION="
亿"
publicstaticfinalStringYUAN="
元"
publicstaticfinalStringJIAO="
角"
publicstaticfinalStringFEN="
分"
publicstaticfinalStringDOT="
."
privatestaticSimpleMoneyFormatformatter=null;
privateHashMapchineseNumberMap=newHashMap();
privateHashMapchineseMoneyPattern=newHashMap();
privateNumberFormatnumberFormat=NumberFormat.getInstance();
privateSimpleMoneyFormat(){
numberFormat.setMaximumFractionDigits(4);
numberFormat.setMinimumFractionDigits
(2);
numberFormat.setGroupingUsed(false);
chineseNumberMap.put("
0"
ZERO);
1"
ONE);
2"
TWO);
3"
THREE);
4"
FOUR);
5"
FIVE);
6"
SIX);
7"
SEVEN);
8"
EIGHT);
9"
NINE);
chineseNumberMap.put(DOT,DOT);
chineseMoneyPattern.put("
TEN);
HUNDRED);
THOUSAND);
TEN_THOUSAND);
HUNDRED_MILLION);
publicstaticSimpleMoneyFormatgetInstance(){
if(formatter==null)
formatter=newSimpleMoneyFormat();
returnformatter;
publicStringformat(StringmoneyStr){
checkPrecision(moneyStr);
Stringresult;
result=convertToChineseNumber(moneyStr);
result=addUnitsToChineseMoneyString(result);
publicStringformat(doublemoneyDouble){
returnformat(numberFormat.format(moneyDouble));
publicStringformat(intmoneyInt){
returnformat(numberFormat.format(moneyInt));
publicStringformat(longmoneyLong){
returnformat(numberFormat.format(moneyLong));
publicStringformat(NumbermoneyNum){
returnfor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 试题 编程