3代码与编程题.docx

上传人:b****4 文档编号:24278433 上传时间:2023-05-26 格式:DOCX 页数:25 大小:24.76KB
下载 相关 举报
3代码与编程题.docx_第1页
第1页 / 共25页
3代码与编程题.docx_第2页
第2页 / 共25页
3代码与编程题.docx_第3页
第3页 / 共25页
3代码与编程题.docx_第4页
第4页 / 共25页
3代码与编程题.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

3代码与编程题.docx

《3代码与编程题.docx》由会员分享,可在线阅读,更多相关《3代码与编程题.docx(25页珍藏版)》请在冰豆网上搜索。

3代码与编程题.docx

3代码与编程题

代码与编程题

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

ChildClassCreate

137、内部类的实现方式?

答:

示例代码如下:

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.Whichtwoinnerclassdeclarationsare

valid?

(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、E

138、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(new

InputStreamReader(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(new

InputStreamReader(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()/Split

Byte+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">第一页

href="List.jsp?

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

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

当前位置:首页 > 解决方案 > 学习计划

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

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