代码与编程题.docx
《代码与编程题.docx》由会员分享,可在线阅读,更多相关《代码与编程题.docx(29页珍藏版)》请在冰豆网上搜索。
代码与编程题
代码与编程题
135、写一个Singleton出来
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式:
定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次
//使用时生成实例,提高了效率!
if (instance==null)
instance=new Singleton();
return instance; }
}
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些
136、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
答:
父类:
packagetest;
publicclass FatherClass
{
publicFatherClass()
{
System.out.println("FatherClassCreate");
}
}
子类:
packagetest;
importtest.FatherClass;
publicclass ChildClassextendsFatherClass
{
publicChildClass()
{
System.out.println("ChildClassCreate");
}
publicstaticvoidmain(String[]args)
{
FatherClassfc=newFatherClass();
ChildClasscc=newChildClass();
}
}
输出结果:
C:
\>javatest.ChildClass
FatherClassCreate
FatherClassCreate
ChildClassCreate137、内部类的实现方式?
答:
示例代码如下:
packagetest;
publicclass OuterClass
{
privateclassInterClass
{
publicInterClass()
{
System.out.println("InterClassCreate");
}
}
publicOuterClass()
{
InterClassic=newInterClass();
System.out.println("OuterClassCreate");
}
publicstaticvoidmain(String[]args)
{
OuterClassoc=newOuterClass();
}
}
输出结果:
C:
\>javatest/OuterClass
InterClassCreate
OuterClassCreate
再一个例题:
publicclassOuterClass{
privatedoubled1=1.0;
//insertcodehere
}
Youneedtoinsertaninnerclassdeclarationatline3.Whichtwoinnerclassdeclarationsarevalid?
(Choosetwo.)
A.classInnerOne{
publicstaticdoublemethoda(){returnd1;}
}
B.publicclassInnerOne{
staticdoublemethoda(){returnd1;}
}
C.privateclassInnerOne{
doublemethoda(){returnd1;}
}
D.staticclassInnerOne{
protecteddoublemethoda(){returnd1;}
}
E.abstractclassInnerOne{
publicabstractdoublemethoda();
}
说明如下:
一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。
故A、B错
二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;returnd1出错。
故D错
三.非静态内部类的非静态成员可以访问外部类的非静态变量。
故C正确
四.答案为C、E138、Java的通信编程,编程题(或问答),用JAVASOCKET编程,读服务器几个字符,再写入本地显示?
答:
Server端程序:
packagetest;
import.*;
importjava.io.*;publicclassServer
{
privateServerSocketss;
privateSocketsocket;
privateBufferedReaderin;
privatePrintWriterout;
publicServer()
{
try
{
ss=newServerSocket(10000);
while(true)
{
socket=ss.accept();
StringRemoteIP=socket.getInetAddress().getHostAddress();
StringRemotePort=":
"+socket.getLocalPort();
System.out.println("Aclientcomein!
IP:
"+RemoteIP+RemotePort);
in=newBufferedReader(newInputStreamReader(socket.getInputStream()));
Stringline=in.readLine();
System.out.println("Cleintsendis:
"+line);
out=newPrintWriter(socket.getOutputStream(),true);
out.println("YourMessageReceived!
");
out.close();
in.close();
socket.close();
}
}catch(IOExceptione)
{
out.println("wrong");
}
}
publicstaticvoidmain(String[]args)
{
newServer();
}
};
Client端程序:
packagetest;
importjava.io.*;
import.*;publicclassClient
{
Socketsocket;
BufferedReaderin;
PrintWriterout;
publicClient()
{
try
{
System.out.println("TrytoConnectto127.0.0.1:
10000");
socket=newSocket("127.0.0.1",10000);
System.out.println("TheServerConnected!
");
System.out.println("PleaseentersomeCharacter:
");
BufferedReaderline=newBufferedReader(newInputStreamReader(System.in));
out=newPrintWriter(socket.getOutputStream(),true);
out.println(line.readLine());
in=newBufferedReader(newInputStreamReader(socket.getInputStream()));
System.out.println(in.readLine());
out.close();
in.close();
socket.close();
}catch(IOExceptione)
{
out.println("Wrong");
}
}
publicstaticvoidmain(String[]args)
{
newClient();
}
};139、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?
如在COLLECTION框架中,实现比较要实现什么样的接口?
答:
用插入法进行排序代码如下
packagetest;
importjava.util.*;
class InsertSort
{
ArrayListal;
publicInsertSort(intnum,intmod)
{
al=newArrayList(num);
Randomrand=newRandom();
System.out.println("TheArrayListSortBefore:
");
for(inti=0;i {
al.add(newInteger(Math.abs(rand.nextInt())%mod+1));
System.out.println("al["+i+"]="+al.get(i));
}
}
publicvoidSortIt()
{
IntegertempInt;
intMaxSize=1;
for(inti=1;i {
tempInt=(Integer)al.remove(i);
if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
{
al.add(MaxSize,tempInt);
MaxSize++;
System.out.println(al.toString());
}else{
for(intj=0;j {
if(((Integer)al.get(j)).intValue()>=tempInt.intValue())
{
al.add(j,tempInt);
MaxSize++;
System.out.println(al.toString());
break;
}
}
}
}
System.out.println("TheArrayListSortAfter:
");
for(inti=0;i {
System.out.println("al["+i+"]="+al.get(i));
}
}
publicstaticvoidmain(String[]args)
{
InsertSortis=newInsertSort(10,100);
is.SortIt();
}
}
140、编程:
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
答:
代码如下:
packagetest;class SplitString
{
StringSplitStr;
intSplitByte;
publicSplitString(Stringstr,intbytes)
{
SplitStr=str;
SplitByte=bytes;
System.out.println("TheStringis:
'"+SplitStr+"';SplitBytes="+SplitByte);
}
publicvoidSplitIt()
{
intloopCount;
loopCount=(SplitStr.length()%SplitByte==0)?
(SplitStr.length()/SplitByte):
(SplitStr.length()/SplitByte+1);
System.out.println("WillSplitinto"+loopCount);
for(inti=1;i<=loopCount;i++)
{
if(i==loopCount){
System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
}else{
System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
}
}
}
publicstaticvoidmain(String[]args)
{
SplitStringss=newSplitString("test中dd文dsaf中男大3443n中国43中国人0ewldfls=103",4);
ss.SplitIt();
}
}141、JAVA多线程编程。
用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。
希望大家补上,谢谢142、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询.
答:
程序如下:
packagehello.ant;
importjava.sql.*;
publicclass jdbc
{
StringdbUrl="jdbc:
oracle:
thin:
@127.0.0.1:
1521:
orcl";
StringtheUser="admin";
StringthePw="manager";
Connectionc=null;
Statementconn;
ResultSetrs=null;
publicjdbc()
{
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
c=DriverManager.getConnection(dbUrl,theUser,thePw);
conn=c.createStatement();
}catch(Exceptione){
e.printStackTrace();
}
}
publicbooleanexecuteUpdate(Stringsql)
{
try
{
conn.executeUpdate(sql);
returntrue;
}
catch(SQLExceptione)
{
e.printStackTrace();
returnfalse;
}
}
publicResultSetexecuteQuery(Stringsql)
{
rs=null;
try
{
rs=conn.executeQuery(sql);
}
catch(SQLExceptione)
{
e.printStackTrace();
}
returnrs;
}
publicvoidclose()
{
try
{
conn.close();
c.close();
}
catch(Exceptione)
{
e.printStackTrace();
}
}
publicstaticvoidmain(String[]args)
{
ResultSetrs;
jdbcconn=newjdbc();
rs=conn.executeQuery("select*fromtest");
try{
while(rs.next())
{
System.out.println(rs.getString("id"));
System.out.println(rs.getString("name"));
}
}catch(Exceptione)
{
e.printStackTrace();
}
}
}143、ORACLE大数据量下的分页解决方法。
一般用截取ID方法,还有是三层嵌套方法。
答:
一种分页方法
<%
inti=1;
intnumPages=14;
Stringpages=request.getParameter("page");
intcurrentPage=1;
currentPage=(pages==null)?
(1):
{Integer.parseInt(pages)}
sql="selectcount(*)fromtables";
ResultSetrs=DBLink.executeQuery(sql);
while(rs.next())i=rs.getInt
(1);
intintPageCount=1;
intPageCount=(i%numPages==0)?
(i/numPages):
(i/numPages+1);
intnextPage;
intupPage;
nextPage=currentPage+1;
if(nextPage>=intPageCount)nextPage=intPageCount;
upPage=currentPage-1;
if(upPage<=1)upPage=1;
rs.close();
sql="select*fromtables";
rs=DBLink.executeQuery(sql);
i=0;
while((i%>
//输出内容
//输出翻页连接
合计:
<%=currentPage%>/<%=intPageCount%>page=1">第一页page=<%=upPage%>">上一页
<%
for(intj=1;j<=intPageCount;j++){
if(currentPage!
=j){
%>
page=<%=j%>">[<%=j%>]
<%
}else{
out.println(j);
}
}
%>
page=<%=nextPage%>">下一页page=<%=intPageCount%>">最后页144、用jdom解析xml文件时如何解决中文问题?
如何解析?
答:
看如下代码,用编码方式加以解决
packagetest;
importjava.io.*;
publicclassDOMTest
{
privateStringinFile="c:
\\people.xml";
privateStringoutFile="c:
\\people.xml";
publicstaticvoidmain(Stringargs[])
{
newDOMTest();
}
publicDOMTest()
{
try
{
javax.xml.parsers.DocumentBuilderbuilder=
javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
org.w3c.dom.Documentdoc=builder.newDocument();
org.w3c.dom.Elementroot=doc.createElement("老师");
org.w3c.dom.