java物件導向程式設計的基本知識

小科學家發表於2009-04-11

1.列舉出 10個JAVA語言的優勢
a:免費,開源,跨平臺(平臺獨立性),簡單易用,功能完善,物件導向,健壯性,多執行緒,結構中立,企業應用的成熟平臺, 無線應用
2.列舉出JAVA中10個物件導向程式設計的術語
a:包,類,介面,物件,屬性,方法,構造器,繼承,封裝,多型,抽象,範型
3.列舉出JAVA中6個比較常用的包
Java.lang;java.util;java.io;java.sql;java.awt;java.net;java.applet;javax.swing
4.JAVA中的識別符號有什麼作用和特點
作用:識別符號用作給變數、類和方法命名
特點:可以以字母、下劃線“_”和”$”符開頭
首字元外,可以跟上字母、下劃線“_”和”$”符或數字
Java是大小寫敏感的,識別符號也不例外
5.JAVA中的關鍵字有什麼特點,列舉出至少20個關鍵字
Java中一些賦以特定的含義、並用做專門用途的單詞稱為關鍵字(keyword)
所有Java關鍵字都是小寫的,TURE、FALSE、NULL等都不是Java關鍵字 ;
goto和const 雖然從未被使用,但也作為Java關鍵字保留;
•          中一共有51個關鍵字Java
abstract assert boolean break byte continue
case catch char class const double
default do extends else final float
for goto long if implements import
native new null instanceof int interface
package private protected public return short
static strictfp super switch synchronized this
while void throw throws transient try
volatile         

        6.JAVA中資料型別如何分類?

可分為簡單資料型別和引用資料型別:
簡單資料型別:數值型(byte,short,int,long,float double),字元型(char),布林型(boolean);
引用資料型別:類,介面,陣列.
7.JAVA中運算子的分類及舉例
•          分割符:,,;,[],()
•          算術運算子: +,―,*,/,%,++,――
•          關係運算子: >, =, <=,==,!=
•          布林邏輯運算子: !,& , | , ^ , &&,||
•          位運算子: &,|,^,~ , >>, < >>
•          賦值運算子: = 擴充套件賦值運算子:+=,―=,*=,/=
•          字串連線運算子: +
•          造型操作符:()

8.super,this關鍵字的作用及用法
•          在Java類中使用super來引用父類的成分
–        可用於訪問父類中定義的屬性super
–        可用於呼叫父類中定義的成員方法super
–        可用於在子類構造器中呼叫父類的構造器super
–        的追溯不僅於直接父類super
•          中為解決變數的命名衝突和不確定性問題,引入關鍵字“this”代表其所在方法的當前物件。Java
–        構造器中指該構造器所建立的新物件
–        方法中指呼叫該方法的物件
•          關鍵字的用法this
–        在類本身的方法或構造器中引用該類的例項變數和方法
–        將當前物件作為引數傳遞給其它方法或構造器
–        用來呼叫其他的過載的構造器

9.什麼是JAVA中的表示式?有什麼作用?
•          表示式是運算子和運算元的結合,它是任何一門程式語言的關鍵組成部分
•          表示式允許程式設計師進行數學計算、值的比較、邏輯操作以及在Java中進行物件的操作。
•          一些表示式的例子:
–        X
–        X+10
–        Y=x+10
–        Arr[10]
–        student.geName()

10.做表列出JAVA中所有修飾符和他們的適用範圍(能不能修飾構造器,屬性,自由塊等)
  class 屬性 方法 構建器 自由塊 內部類
public Y Y Y Y  Y
protected    Y Y Y  Y
(Default) Y Y Y Y Y Y
private  Y Y Y  Y
final Y Y Y    Y
abstract Y  Y    Y
static    Y  Y Y


11.寫一個方法,用一個for迴圈列印九九乘法表
    /**
    *一個for迴圈列印九九乘法表
    */
    publicvoid nineNineMultiTable()
    {
      for (int i = 1,j = 1; j <= 9; i++) {
          System.out.print(i+"*"+j+"="+i*j+" ");
          if(i==j)
          {
              i=0;
              j++;
              System.out.println();
          }
      }
    }
12.給定一個java.util.Date物件,如何轉化為”2007-3-22 20:23:22”格式的字串
/**
    *將某個日期以固定格式轉化成字串
   
*@paramdate
   
*@returnstr
    */
    public String dateToStr(java.util.Date date)
    {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
      String str = sdf.format(date);
      return str;
    }
13.寫一個方法,能夠判斷任意一個整數是否素數
/**
    *判斷任意一個整數是否素數
   
*@paramn
   
*@returnboolean
    */
    publicboolean isPrimes(int n)
    {
      for (int i = 2; i <= Math.sqrt(n); i++) {
          if(n%i==0)
          {
              returnfalse;
          }
      }
      returntrue;
    }
14.寫一個方法,輸入任意一個整數,返回它的階乘
/**
    *獲得任意一個整數的階乘
   
*@paramn
   
*@returnn!
    */
    publicint factorial(int n)
    {
      //遞迴
      if(n==1)
      {
          return 1;
      }
      return n*factorial(n-1);
      //非遞迴
//    int multi = 1;
//    for (int i = 2; i <= n; i++) {
//        multi*=i;
//    }
//    return multi;
    }
15.寫一個方法,用二分查詢法判斷任意整數在任意整數陣列裡面是否存在,若存在就返回它在陣列中的索引位置,不存在返回-1
/**
    *二分查詢特定整數在整型陣列中的位置(遞迴)
   
*@paramdataset
   
*@paramdata
   
*@parambeginIndex
   
*@paramendIndex
   
*@returnindex
    */
    publicint binarySearch(int[] dataset,int data,int beginIndex,int endIndex)
    {
      int midIndex = (beginIndex+endIndex)/2;
      if(data dataset[endIndex]||beginIndex>endIndex)return -1;
      if(data       {
          return binarySearch(dataset,data,beginIndex,midIndex-1);
      }elseif(data>dataset[midIndex])
      {
          return binarySearch(dataset,data,midIndex+1,endIndex);
      }else
      {
          return midIndex;
      }
    }
   
    /**
    *二分查詢特定整數在整型陣列中的位置(非遞迴)
   
*@paramdataset
   
*@paramdata
   
*@returnindex
    */
    publicint binarySearch(int[] dataset ,int data)
    {
      int beginIndex = 0; 
      int endIndex = dataset.length - 1; 
      int midIndex = -1;
      if(data dataset[endIndex]||beginIndex>endIndex)return -1;
      while(beginIndex <= endIndex) {
          midIndex = (beginIndex+endIndex)/2;
          if(data           endIndex = midIndex-1; 
          } elseif(data>dataset[midIndex]) { 
          beginIndex = midIndex+1; 
          }else
          {
          return midIndex;
          }
      }
      return -1;
    }
16.做一個飼養員給動物餵食物的例子體現JAVA中的物件導向思想,介面(抽象類)的用處
package com.softeem.demo;

/**
*@authorleno
*動物的介面
*/
interface Animal
{
    publicvoid eat(Food food);
}
/**
*@authorleno
*一種動物類:貓
*/
class Cat implements Animal
{
    publicvoid eat(Food food)
    {
      System.out.println("小貓吃"+food.getName());
    }
}
/**
*@authorleno
*一種動物類:狗
*/
class Dog implements Animal
{
    publicvoid eat(Food food)
    {
      System.out.println("小狗啃"+food.getName());
    }
}

/**
*@authorleno
*食物抽象類
*/
abstractclass Food
{
    protected String name;
    public String getName() {
      returnname;
    }

    publicvoid setName(String name) {
      this.name = name;
    }
}

/**
*@authorleno
*一種食物類:魚
*/
class Fish extends Food
{
    public Fish(String name) {
      this.name = name;
    }
}
/**
*@authorleno
*一種食物類:骨頭
*/
class Bone extends Food

    public Bone(String name) {
      this.name = name;
    }
}

/**
*@authorleno
*飼養員類
*
*/
class Feeder
{
    /**
    *飼養員給某種動物喂某種食物
   
*@paramanimal
   
*@paramfood
    */
    publicvoid feed(Animal animal,Food food)
    {
      animal.eat(food);
    }
}

/**
*@authorleno
*測試飼養員給動物餵食物
*/
publicclass TestFeeder {

    publicstaticvoid main(String[] args) {
      Feeder feeder=new Feeder();
      Animal animal=new Dog();
      Food food=new Bone("肉骨頭");
      feeder.feed(animal,food); //給狗喂肉骨頭
      animal=new Cat();
      food=new Fish("魚");
      feeder.feed(animal,food); //給貓餵魚


    }
}
17.描述JAVA中異常處理的機制
•          程式的執行過程中如出現異常,會自動生成一個異常類物件,該異常物件將被提交給Java執行時系統,這個過程稱為丟擲(throw)異常。Java
•          當Java執行時系統接收到異常物件時,會尋找能處理這一異常的程式碼並把當前異常物件交給其處理,這一過程稱為捕獲(catch)異常。
•          如果Java執行時系統找不到可以捕獲異常的方法,則執行時系統將終止,相應的Java程式也將退出。
•          程式設計師通常只能處理違例(Exception),而對錯誤(Error)無能為力。


 
 
問題點數:100 回覆次數:860 顯示所有回覆顯示星級回覆顯示樓主回覆 修改 刪除 舉報 引用 回覆  
 

 加為好友
傳送私信
線上聊天
 chaihuoniu
柴火妞
等級:
可用分等級:大地主
總技術分:0
總技術分排名:341575

 發表於:2008-06-17 15:26:551樓 得分:0
18.做一個單子模式的類,只載入一次屬性檔案
package com.softeem.demo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
*@authorleno
*單子模式,保證在整個應用期間只載入一次配置屬性檔案
*/
publicclass Singleton {

    privatestatic Singleton instance;
    privatestaticfinal String CONFIG_FILE_PATH = "E:\\config.properties";
    private Properties config;
    private Singleton()
    {
      config = new Properties();
      InputStream is;
      try {
          is = new FileInputStream(CONFIG_FILE_PATH);
          config.load(is);
          is.close();
      } catch (FileNotFoundException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
    }
    publicstatic Singleton getInstance()
    {
      if(instance==null)
      {
          instance = new Singleton();
      }
      returninstance;
    }
    public Properties getConfig() {
      returnconfig;
    }
    publicvoid setConfig(Properties config) {
      this.config = config;
    }
   
   

}
l    J2SE
19.拷貝一個目錄(檔案)到指定路徑
/**
    *拷貝一個目錄或者檔案到指定路徑下
   
*@paramsource
   
*@paramtarget
    */
    publicvoid copy(File source,File target)
    {
      File tarpath = new File(target,source.getName());
      if(source.isDirectory())
      {
          tarpath.mkdir();
          File[] dir = source.listFiles();
          for (int i = 0; i < dir.length; i++) {
              copy(dir[i],tarpath);
          }
      }else
      {
          try {
              InputStream is = new FileInputStream(source);
              OutputStream s = new FileOutputStream(tarpath);
              byte[] buf = newbyte[1024];
              int len = 0;
              while((len = is.read(buf))!=-1)
              {
                  os.write(buf,0,len);
              }
              is.close();
              os.close();
          } catch (FileNotFoundException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (IOException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
    }
20.用JAVA中的多執行緒示例銀行取款問題
packagecom.softeem.demo;

/**
*@authorleno
*賬戶類
*預設有餘額,可以取款
*/
class Account {
    privatefloatbalance = 1000;

    publicfloat getBalance() {
      returnbalance;
    }

    publicvoid setBalance(float balance) {
      this.balance = balance;
    }
   
    /**
    *取款的方法需要同步
   
*@parammoney
    */
    publicsynchronizedvoid withdrawals(float money)
    {
      if(balance>=money)
      {
          System.out.println("被取走"+money+"元!");
          try {
              Thread.sleep(1000);
          } catch (InterruptedException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
          balance-=money;
      }
      else
      {
          System.out.println("對不起,餘額不足!");
      }
    }
   
}

/**
*@authorleno
*銀行卡
*/
class TestAccount1 extends Thread {

    private Account account;
   
   
    public TestAccount1(Account account) {
      this.account = account;
    }


    @Override
    publicvoid run() {
      account.withdrawals(800);
      System.out.println("餘額為:"+account.getBalance()+"元!");
    } 
}
/**
*@authorleno
*存摺
*/
class TestAccount2 extends Thread {

    private Account account;
    public TestAccount2(Account account) {
          this.account = account;
      }
    @Override
    publicvoid run() {
      account.withdrawals(700);
      System.out.println("餘額為:"+account.getBalance()+"元!");
    } 
}

publicclass Test
{
    publicstaticvoid main(String[] args) {
      Account account = new Account();
      TestAccount1 testAccount1 = new TestAccount1(account);
      testAccount1.start();
      TestAccount2 testAccount2 = new TestAccount2(account);
      testAccount2.start();
    }
}
21.用JAVA中的多執行緒示例火車站售票問題
package com.softeem.demo;

/**
*@authorleno
*售票類
*/
class SaleTicket implements Runnable {
    inttickets = 100;

    publicvoid run() {
      while (tickets > 0) {
          sale();
//或者下面這樣實現
//        synchronized (this) {
//            if (tickets > 0) {
//                System.out.println(Thread.currentThread().getName() + "賣第"
//                      + (100 - tickets + 1) + "張票");
//                tickets--;
//            }
//        }
      }
    }

    publicsynchronizedvoid sale() {
      if (tickets > 0) {
          System.out.println(Thread.currentThread().getName() + "賣第"
                  + (100 - tickets + 1) + "張票");
          tickets--;
      }
    }

}

publicclass TestSaleTicket {

    publicstaticvoid main(String[] args) {
      SaleTicket st = new SaleTicket();
      new Thread(st, "一號視窗").start();
      new Thread(st, "二號視窗").start();
      new Thread(st, "三號視窗").start();
      new Thread(st, "四號視窗").start();

    }
}

22.用JAVA中的多執行緒示例生產者和消費者問題
package com.softeem.demo;

class Producer implements Runnable
{
private SyncStack stack;

    public Producer(SyncStack stack) {
    this.stack = stack;
}

    publicvoid run() {
      for (int i = 0; i < stack.getProducts().length; i++) {
          String product = "產品"+i;
          stack.push(product);
          System.out.println("生產了: "+product);
          try
          {
            Thread.sleep(200);
          }
          catch(InterruptedException e)
          {
            e.printStackTrace();
          }


      }
    }
   
}

class Consumer implements Runnable
{
    private SyncStack stack;

    public Consumer(SyncStack stack) {
    this.stack = stack;
}
    publicvoid run() {
      for(int i=0;i           {
          String product =stack.pop();
          System.out.println("消費了: "+product);
          try
          {
            Thread.sleep(1000);
          }
          catch(InterruptedException e)
          {
            e.printStackTrace();
          }

          }

     
    }
}

class SyncStack
{
    private String[] products = new String[10];
    privateintindex;
    publicsynchronizedvoid push(String product)
    {
      if(index==product.length())
      {
          try {
              wait();
          } catch (InterruptedException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
      notify();
      products[index]=product;
      index++;
    }
   
    publicsynchronized String pop()
    {
      if(index==0)
      {
          try {
              wait();
          } catch (InterruptedException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      }
      notify();
      index--;
      String product = products[index];
      return product;
    }

    public String[] getProducts() {
      returnproducts;
    }
   
   
}
publicclass TestProducerConsumer {
   
    publicstaticvoid main(String[] args) {
      SyncStack stack=new SyncStack();
      Producer p=new Producer(stack);
      Consumer c=new Consumer(stack);

      new Thread(p).start();
      new Thread(c).start();
      }
    }
 
 
修改 刪除 舉報 引用 回覆  
 
 加為好友
傳送私信
線上聊天
 youzy
獵人
等級:
可用分等級:富農
總技術分:439
總技術分排名:37726

 發表於:2008-06-17 15:27:122樓 得分:0
很好,頂
 
修改 刪除 舉報 引用 回覆  
 
 加為好友
傳送私信
線上聊天
 chaihuoniu
柴火妞
等級:
可用分等級:大地主
總技術分:0
總技術分排名:341575

 發表於:2008-06-17 15:27:193樓 得分:0
23.程式設計實現序列化的Student(sno,sname)物件在網路上的傳輸
package com.softeem.demo;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.ServerSocket;
import java.net.Socket;

class Student implements Serializable {
      private int sno;
      private String sname;

      public Student(int sno, String sname) {
              this.sno = sno;
              this.sname = sname;
      }

      public int getSno() {
              return sno;
      }

      public void setSno(int sno) {
              this.sno = sno;
      }

      public String getSname() {
              return sname;
      }

      public void setSname(String sname) {
              this.sname = sname;
      }

      @Override
      public String toString() {
              return "學號:" + sno + ";姓名:" + sname;
      }

}

class MyClient extends Thread {
      @Override
      public void run() {
              try {
                    Socket s = new Socket("localhost", 9999);
                    ObjectInputStream is = new ObjectInputStream(s.getInputStream());
                    Student stu = (Student) ois.readObject();
                    System.out.println("客戶端程式收到伺服器端程式傳輸過來的學生物件>> " + stu);
                    ois.close();
                    s.close();
              } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
              } catch (ClassNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
              }
      }
}

class MyServer extends Thread {

      @Override
      public void run() {
              try {
                    ServerSocket ss = new ServerSocket(9999);
                    Socket s = ss.accept();
                    ObjectOutputStream ps = new ObjectOutputStream(s.getOutputStream());
                    Student stu = new Student(1, "趙本山");
                    ops.writeObject(stu);
                    ops.close();
                    s.close();
                    ss.close();
              } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
              }
      }

}

public class TestTransfer {
      public static void main(String[] args) {
              new MyServer().start();
              new MyClient().start();
      }
}
l    JDBC
24.用dom4j元件解析如下XML格式的檔案:



      aaa
      123


      1
      bbb
      444


      4


規則: operation 1表insert,2表update,3表delete.
handle 1表作為where條件,0表作為操作欄位。
要求:按照規則生成三條SQL語句!(即做一個方法解析xml檔案生成一個含有三條SQL語句的字串)
/**
    *解析XML檔案生成一個含有可執行SQL語句的字串
    *@paramxmlFileName
   
*@returnSQL
    */
    public String parseXmltoSQL(String xmlFileName) {
      StringBuffer sbsql = new StringBuffer();
      SAXReader reader = new SAXReader();
      try {
          Document document = reader.read(new File(xmlFileName));
          Element element = document.getRootElement();
          Iterator it = element.elementIterator("table");
          while (it.hasNext()) {
              element = (Element) it.next();
              //獲得對錶的操作
              String per = element.attributeValue("operation");
              //獲得表名
              String tableName = element.attributeValue("name");
              if ("1".equals(oper)) {
                  sbsql.append("insert into ").append(tableName);
                  Iterator it2 = element.elementIterator("column");
                  String columnName1 = null;
                  String columnValue1 = null;
                  String columnName2 = null;
                  String columnValue2 = null;
                  if (it2.hasNext()) {
                    element = (Element) it2.next();
                      columnName1 = element.attributeValue("name");
                      columnValue1 = element.getText();
                  }
                  if (it2.hasNext()) {
                    element = (Element) it2.next();
                      columnName2 = element.attributeValue("name");
                      columnValue2 = element.getText();
                  }
                  sbsql.append("("+columnName1+","+columnName2+")"+" values('"+columnValue1+"','"+columnValue2+"')\n");
                 
              } elseif ("2".equals(oper)) {
                  sbsql.append("update ").append(tableName);
                  Iterator it2 = element.elementIterator("column");
                  String columnName1 = null;
                  String columnValue1 = null;
                  String columnName2 = null;
                  String columnValue2 = null;
                  String columnName3 = null;
                  String columnValue3 = null;
                  if (it2.hasNext()) {
                        element = (Element) it2.next();
                          columnName1 = element.attributeValue("name");
                          columnValue1 = element.getText();
                    }
                  if (it2.hasNext()) {
                    element = (Element) it2.next();
                      columnName2 = element.attributeValue("name");
                      columnValue2 = element.getText();
                  }
                  if (it2.hasNext()) {
                    element = (Element) it2.next();
                      columnName3 = element.attributeValue("name");
                      columnValue3 = element.getText();
                  }
                  sbsql.append(" set "+columnName2+"='"+columnValue2+"',"+columnName3+"='"+columnValue3+"' where "+columnName1+"="+columnValue1+"\n");
                 
              }elseif ("3".equals(oper)) {
                  sbsql.append("delete from ").append(tableName);
                  Iterator it2 = element.elementIterator("column");
                  String columnName1 = null;
                  String columnValue1 = null;
                  if (it2.hasNext()) {
                        element = (Element) it2.next();
                          columnName1 = element.attributeValue("name");
                          columnValue1 = element.getText();
                    }
                  sbsql.append(" where "+columnName1+"="+columnValue1);
                 
              }
          }
      } catch (DocumentException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }
      return sbsql.toString();
    }
l    JSP/SERVLET
25.寫出JSP的內建物件並說明他們的作用
request:request表示HttpServletRequest物件。它包含了有關瀏覽器請求的資訊,並且提供了幾個用於獲取cookie, header資料的有用的方法。 response:response表示HttpServletResponse物件,並提供了幾個用於設定送回 瀏覽器的響應的方法(如cookies,頭資訊等) out:out物件是javax.jsp.JspWriter的一個例項,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。 pageContext:pageContext表示一個javax.servlet.jsp.PageContext物件。它是用於方便存取各種範圍的名字空間、servlet相關的物件的API,並且包裝了通用的servlet相關功能的方法。 session:session表示一個請求的javax.servlet.http.HttpSession物件。Session可以存貯使用者的狀態資訊 application:applicaton 表示一個javax.servle.ServletContext物件。這有助於查詢有關servlet引擎和servlet環境的資訊 config:config表示一個javax.servlet.ServletConfig物件。該物件用於存取servlet例項的初始化引數。 page:page表示從該頁面產生的一個servlet例項。
exception: exception物件是一個例外物件,當一個頁面在執行過程中發生了例外,就產生這個物件。如果一個JSP頁面要應用此物件,就必須把isErrorPage設為true,否則無法編譯。他實際上是java.lang.Throwable的物件
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/21359667/viewspace-588694/,如需轉載,請註明出處,否則將追究法律責任。

java物件導向程式設計的基本知識
請登入後發表評論 登入
全部評論

相關文章