|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最后我再次声明,我并没有说不看好java,实际上我对java很乐观的,毕竟她正在不断改进中,我相信她总有一天会和.net并驾齐驱的
121、外部类能够援用他包括类的成员吗?有无甚么限定?
一个外部类对象能够会见创立它的内部类对象的内容
122、WEBSERVICE名词注释。JSWDL开辟包的先容。JAXP、JAXM的注释。SOAP、UDDI,WSDL注释。
WebServiceWebService是基于收集的、散布式的模块化组件,它实行特定的义务,恪守详细的手艺标准,这些标准使得WebService能与其他兼容的组件举行互操纵。
JAXP(JavaAPIforXMLParsing)界说了在Java中利用DOM,SAX,XSLT的通用的接口。如许在你的程序中你只需利用这些通用的接口,当你必要改动详细的完成时分也不必要修正代码。
JAXM(JavaAPIforXMLMessaging)是为SOAP通讯供应会见办法和传输机制的API。
WSDL是一种XML格局,用于将收集服务形貌为一组端点,这些端点对包括面向文档信息或面向历程信息的动静举行操纵。这类格局起首对操纵和动静举行笼统形貌,然后将其绑定到详细的收集协定和动静格局上以界说端点。相干的详细端点即组分解为笼统端点(服务)。
SOAP即复杂对象会见协定(SimpleObjectAccessProtocol),它是用于互换XML编码信息的轻量级协定。
UDDI的目标是为电子商务创建尺度;UDDI是一套基于Web的、散布式的、为WebService供应的、信息注册中央的完成尺度标准,同时也包括一组使企业能将本身供应的WebService注册,以使其余企业可以发明的会见协定的完成尺度。
JAVA代码查错
1.
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把abstract
method封闭起来呢?(同理,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;
publicvoiddoSomething(){
System.out.println("i="+i);
}
}
和下面一题只要一个中央分歧,就是多了一个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()returns"+s.doSomething());"。同理,staticmethod不克不及会见non-staticinstantvariable。
9.
此处,Something类的文件名叫OtherThing.java
classSomething{
privatestaticvoidmain(String[]something_to_do){
System.out.println("Dosomething...");
}
}
这个仿佛很分明。
谜底:准确。历来没有人说过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{
privateStringname;
publicStringgetName(){
returnname;
}
publicBall(Stringname){
this.name=name;
}
publicvoidplay(){
ball=newBall("Football");
System.out.println(ball.getName());
}
}
这个毛病不简单发明。
谜底:错。"interfaceRollableextendsPlayable,Bounceable"没有成绩。interface可承继多个interfaces,以是这里没错。成绩出在interfaceRollable里的"Ballball=newBall("PingPang");"。任安在interface里声明的interfacevariable(接口变量,也可称成员变量),默许为publicstaticfinal。也就是说"Ballball=newBall("PingPang");"实践上是"publicstaticfinalBallball=newBall("PingPang");"。在Ball类的Play()办法中,"ball=newBall("Football");"改动了ball的reference,而这里的ball来自Rollableinterface,Rollableinterface里的ball是publicstaticfinal的,final的object是不克不及被改动reference的。因而编译器将在"ball=newBall("Football");"这里显现有错。
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;i<s.length;i++){
ii[i]=Integer.parseInt(s[i]);
}
Arrays.sort(ii);
//asc
for(inti=0;i<s.length;i++){
System.out.println(ii[i]);
}
//desc
for(inti=(s.length-1);i>=0;i--){
System.out.println(ii[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);
chineseNumberMap.put("1",ONE);
chineseNumberMap.put("2",TWO);
chineseNumberMap.put("3",THREE);
chineseNumberMap.put("4",FOUR);
chineseNumberMap.put("5",FIVE);
chineseNumberMap.put("6",SIX);
chineseNumberMap.put("7",SEVEN);
chineseNumberMap.put("8",EIGHT);
chineseNumberMap.put("9",NINE);
chineseNumberMap.put(DOT,DOT);
chineseMoneyPattern.put("1",TEN);
chineseMoneyPattern.put("2",HUNDRED);
chineseMoneyPattern.put("3",THOUSAND);
chineseMoneyPattern.put("4",TEN_THOUSAND);
chineseMoneyPattern.put("5",TEN);
chineseMoneyPattern.put("6",HUNDRED);
chineseMoneyPattern.put("7",THOUSAND);
chineseMoneyPattern.put("8",HUNDRED_MILLION);
}
publicstaticSimpleMoneyFormatgetInstance(){
if(formatter==null)
formatter=newSimpleMoneyFormat();
returnformatter;
}
publicStringformat(StringmoneyStr){
checkPrecision(moneyStr);
Stringresult;
result=convertToChineseNumber(moneyStr);
result=addUnitsToChineseMoneyString(result);
returnresult;
}
publicStringformat(doublemoneyDouble){
returnformat(numberFormat.format(moneyDouble));
}
publicStringformat(intmoneyInt){
returnformat(numberFormat.format(moneyInt));
}
publicStringformat(longmoneyLong){
returnformat(numberFormat.format(moneyLong));
}
publicStringformat(NumbermoneyNum){
returnformat(numberFormat.format(moneyNum));
}
privateStringconvertToChineseNumber(StringmoneyStr){
Stringresult;
StringBuffercMoneyStringBuffer=newStringBuffer();
for(inti=0;i<moneyStr.length();i++){
cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(i,i+1)));
}
//拾佰仟万亿等都是汉字内里才有的单元,加上它们
intindexOfDot=cMoneyStringBuffer.indexOf(DOT);
intmoneyPatternCursor=1;
for(inti=indexOfDot-1;i>0;i--){
cMoneyStringBuffer.insert(i,chineseMoneyPattern.get(EMPTY+moneyPatternCursor));
moneyPatternCursor=moneyPatternCursor==8?1:moneyPatternCursor+1;
}
StringfractionPart=cMoneyStringBuffer.substring(cMoneyStringBuffer.indexOf("."));
cMoneyStringBuffer.delete(cMoneyStringBuffer.indexOf("."),cMoneyStringBuffer.length());
while(cMoneyStringBuffer.indexOf("零拾")!=-1){
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零拾"),cMoneyStringBuffer.indexOf("零拾")+2,ZERO);
}
while(cMoneyStringBuffer.indexOf("零佰")!=-1){
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零佰"),cMoneyStringBuffer.indexOf("零佰")+2,ZERO);
}
while(cMoneyStringBuffer.indexOf("零仟")!=-1){
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零仟"),cMoneyStringBuffer.indexOf("零仟")+2,ZERO);
}
while(cMoneyStringBuffer.indexOf("零万")!=-1){
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零万"),cMoneyStringBuffer.indexOf("零万")+2,TEN_THOUSAND);
}
while(cMoneyStringBuffer.indexOf("零亿")!=-1){
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零亿"),cMoneyStringBuffer.indexOf("零亿")+2,HUNDRED_MILLION);
}
while(cMoneyStringBuffer.indexOf("零零")!=-1){
cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf("零零"),cMoneyStringBuffer.indexOf("零零")+2,ZERO);
}
if(cMoneyStringBuffer.lastIndexOf(ZERO)==cMoneyStringBuffer.length()-1)
cMoneyStringBuffer.delete(cMoneyStringBuffer.length()-1,cMoneyStringBuffer.length());
cMoneyStringBuffer.append(fractionPart);
result=cMoneyStringBuffer.toString();
returnresult;
}
privateStringaddUnitsToChineseMoneyString(StringmoneyStr){
Stringresult;
StringBuffercMoneyStringBuffer=newStringBuffer(moneyStr);
intindexOfDot=cMoneyStringBuffer.indexOf(DOT);
cMoneyStringBuffer.replace(indexOfDot,indexOfDot+1,YUAN);
}
再举这样一个例子:如果你想对一个数字取绝对值,你会怎么做呢?java的做法是intc=Math.abs(-166);而ruby的做法是:c=-166.abs。呵呵,这就看出了java与ruby的区别。 |
|