仓酷云
标题:
JAVA网站制作之JAVA相干基本常识(7)
[打印本页]
作者:
若天明
时间:
2015-1-18 11:46
标题:
JAVA网站制作之JAVA相干基本常识(7)
最后我再次声明,我并没有说不看好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的区别。
作者:
乐观
时间:
2015-1-21 14:08
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
作者:
老尸
时间:
2015-1-24 17:41
是一种突破用户端机器环境和CPU
作者:
冷月葬花魂
时间:
2015-1-25 14:00
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者:
小妖女
时间:
2015-2-2 22:18
Java 编程语言的风格十分接近C、C++语言。
作者:
小魔女
时间:
2015-2-3 22:03
是一种为 Internet发展的计算机语言
作者:
第二个灵魂
时间:
2015-2-4 09:21
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者:
精灵巫婆
时间:
2015-2-7 05:51
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
作者:
再现理想
时间:
2015-2-9 23:26
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
作者:
莫相离
时间:
2015-2-16 09:04
当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢?
作者:
活着的死人
时间:
2015-3-6 20:51
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
作者:
海妖
时间:
2015-3-13 06:19
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
作者:
简单生活
时间:
2015-3-20 15:02
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
作者:
若相依
时间:
2015-3-22 22:26
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
作者:
不帅
时间:
2015-3-26 20:06
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
作者:
只想知道
时间:
2015-3-31 05:32
你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。
作者:
若天明
时间:
2015-4-11 09:25
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
作者:
飘飘悠悠
时间:
2015-4-14 06:38
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
作者:
因胸联盟
时间:
2015-4-15 04:10
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
作者:
愤怒的大鸟
时间:
2015-4-27 13:30
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2