當前位置:首頁 » 編程語言 » 案例java

案例java

發布時間: 2023-09-12 14:51:06

java經典編程案例有哪些

  1. java編程的記事本:

    import java.util.*;
    public class JieChengExample
    {
    public static void main(String args[])
    {
    Scanner input=new Scanner(System.in);
    int n,sum;
    Jiecheng jie=new Jiecheng();
    System.out.print("輸入n的值:");//輸入有幾個階乘相加
    n=input.nextInt();
    sum=0;
    for(int i=1;i<=n;i++)
    {
    sum=sum+jie.jiecheng(i);//這是n個階乘相加
    }
    System.out.println("1!+2!+3!+....+n!的和是:"+sum);
    }
    }
    class Jiecheng
    {
    public int jiecheng(int temp)//算階乘的方法
    {
    int sum=1;
    for(int i=1;i<=temp;i++)
    {
    sum=sum*i; //計算階乘
    }
    return sum;//將一個階乘返回
    }
    }

2.java賽馬游戲:

import java.util.Random;
public class Test {
public static void main(String[] args) {
Competition c = new Competition();
Thread T = new Thread(c);
T.start();
}
}
class Competition implements Runnable{
int red = 0;
int green = 0;
int Speed [] = new int [2];
Competition(){

}
public void run(){
Random r = new Random();
for(int a= 0;a<500;a++){
for(int j = 0;j<2;j++){
Speed[j] = r.nextInt(2);
red = red + Speed[j];
Speed[j] = r.nextInt(2);
green = green + Speed[j];
}
System.out.println("red的速度為"+red);
System.out.println("green的速度為"+green);
while(red >=500 || green>=500){
if(red >=500){
System.out.println("red先抵達終點線");
}
if(green >= 500){
System.out.println("green先抵達終點線");
}
if(green ==500 && red ==500 ){
System.out.println("兩個同時到達");
}
return;
}
}
/* if(red >green){
System.out.println("Redwin"+red);
}
if(red<green){
S...import java.util.Random;
public class Test {
public static void main(String[] args) {
Competition c = new Competition();
Thread T = new Thread(c);
T.start();
}
}
class Competition implements Runnable{
int red = 0;
int green = 0;
int Speed [] = new int [2];
Competition(){

}
public void run(){
Random r = new Random();
for(int a= 0;a<500;a++){
for(int j = 0;j<2;j++){
Speed[j] = r.nextInt(2);
red = red + Speed[j];
Speed[j] = r.nextInt(2);
green = green + Speed[j];
}
System.out.println("red的速度為"+red);
System.out.println("green的速度為"+green);
while(red >=500 || green>=500){
if(red >=500){
System.out.println("red先抵達終點線");
}
if(green >= 500){
System.out.println("green先抵達終點線");
}
if(green ==500 && red ==500 ){
System.out.println("兩個同時到達");
}
return;
}
}
/* if(red >green){
System.out.println("Redwin"+red);
}
if(red<green){
System.out.println("Greenwin"+green);
}
if(red == green){
System.out.println("equal");*/

JAVA的介紹:

Java是一種可以撰寫跨平台應用程序的面向對象的程序設計語言。Java技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。

❷ 誰能跟我說幾個JAVA多態,在現實生活中應用的例子,不要說代碼和概念,就只說案例

有一個比較經典的多態實例:有一個Animal類,它有Cat,和Dog兩個子類,在Animal中有個say方法,當Cat調用這個方法的時候輸出的是「小貓喵喵喵」,這就是Java多態的實現。

1、定義一種動物,該類型的動物有叫的屬性。

2、分別定義貓,狗,鳥,都繼承於該動物,都有叫的屬性。

3、分別表示出各個具體小動物的叫聲,例如貓的叫聲:喵、狗的叫聲:汪、鳥的叫聲:咻,點是叫聲,實現各個具體小動物用的叫聲的方法是用的同一個函數名稱,就是動物的叫聲函數。

JRE

是個運行環境,JDK是個開發環境。因此寫Java程序的時候需要JDK,而運行Java程序的時候就需要JRE。而JDK裡面已經包含了JRE,因此只要安裝了JDK,就可以編輯Java程序,也可以正常運行Java程序。但由於JDK包含了許多與運行無關的內容,佔用的空間較大,因此運行普通的Java程序無須安裝JDK,而只需要安裝JRE即可。

❸ Java如何獲取資料庫中的數據·案例

下面是一個從 mysql 數據獲取用戶數據的案例,可以參考一下:

importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.List;

//用戶類,存儲單個用戶信息
classUser{

privateintid;

privateStringname;

publicUser(intid,Stringname){
this.id=id;
this.name=name;
}

publicintgetId(){
returnid;
}

publicvoidsetId(intid){
this.id=id;
}

publicStringgetName(){
returnname;
}

publicvoidsetName(Stringname){
this.name=name;
}

@Override
publicStringtoString(){
return"User[id="+id+",name="+name+"]";
}
}

publicclassDemo1{

publicstaticvoidmain(String[]args)throwsClassNotFoundException,SQLException{

//本例使用mysql資料庫,演示將資料庫test的tb_users表中的用戶信息
//放到List中

//載入數據驅動
Class.forName("com.mysql.jdbc.Driver");

//資料庫連接字元串,此例資料庫為test
Stringurl="jdbc:mysql://localhost:3306/test";
Stringuser="root"; //資料庫用戶名
Stringpassword=""; //資料庫密碼

//打開一個數據連接
Connectionconn=DriverManager.getConnection(url,user,password);

Statementstmt=conn.createStatement();

//獲取表tb_users所有用戶信息到結果集中
ResultSetrs=stmt.executeQuery("SELECTid,nameFROMtb_users");

//定義一個存放用戶信息的List
List<User>users=newArrayList<>();

//提取用戶信息,並將用戶信息放入List
while(rs.next()){

//獲取用戶ID
intid=rs.getInt(1);

//獲取用戶名
Stringname=rs.getString(2);

users.add(newUser(id,name));
}

rs.close();
stmt.close();
conn.close();

//顯示用戶信息

for(Useru:users){
System.out.println(u);
}
}
}

❹ java nio 開發實例

首先了解下所謂的java nio是個什麼東西!

傳統的並發型伺服器設計是利用阻塞型網路I/O 以多線程的模式來實現的 然而由

於系統常常在進行網路讀寫時處於阻塞狀態 會大大影響系統的性能 自Java 開始引入

了NIO(新I/O) API 通過使用非阻塞型I/O 實現流暢的網路讀寫操作 為開發高性能並發

型伺服器程序提供了一個很好的解決方案 這就是java nio

首先來看下傳統的阻塞型網路 I/O的不足

Java 平台傳統的I/O 系統都是基於Byte(位元組)和Stream(數據流)的 相應的I/O 操

作都是阻塞型的 所以伺服器程序也採用阻塞型I/O 進行數據的讀 寫操作 本文以TCP

長連接模式來討論並發型伺服器的相關設計 為了實現伺服器程序的並發性要求 系統由一

個單獨的主線程來監聽用戶發起的連接請求 一直處於阻塞狀態 當有用戶連接請求到來時

程序都會啟一個新的線程來統一處理用戶數據的讀 寫操作

這種模式的優點是簡單 實用 易管理 然而缺點也是顯而易見的 由於是為每一個客

戶端分配一個線程來處理輸入 輸出數據 其線程與客戶機的比例近似為 隨著線程

數量的不斷增加 伺服器啟動了大量的並發線程 會大大加大系統對線程的管理開銷 這將

成為吞吐量瓶頸的主要原因 其次由於底層的I/O 操作採用的同步模式 I/O 操作的阻塞管

理粒度是以服務於請求的線程為單位的 有可能大量的線程會閑置 處於盲等狀態 造成I/O

資源利用率不高 影響整個系統的性能

對於並發型伺服器 系統用在阻塞型I/O 等待和線程間切換的時間遠遠多於CPU 在內

存中處理數據的時間 因此傳統的阻塞型I/O 已經成為制約系統性能的瓶頸 Java 版本

後推出的NIO 工具包 提供了非阻塞型I/O 的非同步輸入輸出機制 為提高系統的性能提供

了可實現的基礎機制

NIO 包及工作原理

針對傳統I/O 工作模式的不足 NIO 工具包提出了基於Buffer(緩沖區) Channel(通

道) Selector(選擇器)的新模式 Selector(選擇器) 可選擇的Channel(通道)和

SelectionKey(選擇鍵)配合起來使用 可以實現並發的非阻塞型I/O 能力

NIO 工具包的成員

Buffer(緩沖器)

Buffer 類是一個抽象類 它有 個子類分別對應於七種基本的數據類型 ByteBuffer

CharBuffer DoubleBuffer FloatBuffer IntBuffer LongBuffer 和ShortBuffer 每一個Buffer

對象相當於一個數據容器 可以把它看作內存中的一個大的數組 用來存儲和提取所有基本

類型(boolean 型除外)的數據 Buffer 類的核心是一塊內存區 可以直接對其執行與內存有關

的操作 利用操作系統特性和能力提高和改善Java 傳統I/O 的性能

Channel(通道)

Channel 被認為是NIO 工具包的一大創新點 是(Buffer)緩沖器和I/O 服務之間的通道

具有雙向性 既可以讀入也可以寫出 可以更高效的傳遞數據 我們這里主要討論

ServerSocketChannel 和SocketChannel 它們都繼承了SelectableChannel 是可選擇的通道

分別可以工作在同步和非同步兩種方式下(這里的可選擇不是指可以選擇兩種工作方式 而是

指可以有選擇的注冊自己感興趣的事件) 當通道工作在同步方式時 它的功能和編程方法

與傳統的ServerSocket Socket 對象相似 當通道工作在非同步工作方式時 進行輸入輸出處

理不必等到輸入輸出完畢才返回 並且可以將其感興趣的(如 接受操作 連接操作 讀出

操作 寫入操作)事件注冊到Selector 對象上 與Selector 對象協同工作可以更有效率的支

持和管理並發的網路套接字連接

Selector(選擇器)和SelectionKey(選擇鍵)

各類 Buffer 是數據的容器對象 各類Channel 實現在各類Buffer 與各類I/O 服務間傳輸

數據 Selector 是實現並發型非阻塞I/O 的核心 各種可選擇的通道將其感興趣的事件注冊

到Selector 對象上 Selector 在一個循環中不斷輪循監視這各些注冊在其上的Socket 通道

SelectionKey 類則封裝了SelectableChannel 對象在Selector 中的注冊信息 當Selector 監測

到在某個注冊的SelectableChannel 上發生了感興趣的事件時 自動激活產生一個SelectionKey

對象 在這個對象中記錄了哪一個SelectableChannel 上發生了哪種事件 通過對被激活的

SelectionKey 的分析 外界可以知道每個SelectableChannel 發生的具體事件類型 進行相應的

處理

NIO 工作原理

通過上面的討論 我們可以看出在並發型伺服器程序中使用NIO 實際上是通過網路事

件驅動模型實現的 我們應用Select 機制 不用為每一個客戶端連接新啟線程處理 而是將

其注冊到特定的Selector 對象上 這就可以在單線程中利用Selector 對象管理大量並發的網

絡連接 更好的利用了系統資源 採用非阻塞I/O 的通信方式 不要求阻塞等待I/O 操作完

成即可返回 從而減少了管理I/O 連接導致的系統開銷 大幅度提高了系統性能

當有讀或寫等任何注冊的事件發生時 可以從Selector 中獲得相應的

SelectionKey 從SelectionKey 中可以找到發生的事件和該事件所發生的具體的

SelectableChannel 以獲得客戶端發送過來的數據 由於在非阻塞網路I/O 中採用了事件觸

發機制 處理程序可以得到系統的主動通知 從而可以實現底層網路I/O 無阻塞 流暢地讀

寫 而不像在原來的阻塞模式下處理程序需要不斷循環等待 使用NIO 可以編寫出性能更

好 更易擴展的並發型伺服器程序

並發型伺服器程序的實現代碼

應用 NIO 工具包 基於非阻塞網路I/O 設計的並發型伺服器程序與以往基於阻塞I/O 的

實現程序有很大不同 在使用非阻塞網路I/O 的情況下 程序讀取數據和寫入數據的時機不

是由程序員控制的 而是Selector 決定的 下面便給出基於非阻塞網路I/O 的並發型伺服器

程序的核心代碼片段

import java io * //引入Java io包

import * //引入包

import java nio channels * //引入Java nio channels包

import java util * //引入Java util包

public class TestServer implements Runnable

{

/**

* 伺服器Channel對象 負責接受用戶連接

*/

private ServerSocketChannel server

/**

* Selector對象 負責監控所有的連接到伺服器的網路事件的發生

*/

private Selector selector

/**

* 總的活動連接數

*/

private int activeSockets

/**

* 伺服器Channel綁定的埠號

*/

private int port

/**

*

* 構造函數

*/

public TestServer()throws IOException

{

activeSockets=

port= //初始化伺服器Channel綁定的埠號為

selector= Selector open() //初始化Selector對象

server=ServerSocketChannel open() //初始化伺服器Channel對象

ServerSocket socket=server socket() //獲取伺服器Channel對應的//ServerSocket對象

socket bind(new InetSocketAddress(port)) //把Socket綁定到監聽埠 上

nfigureBlocking(false) //將伺服器Channel設置為非阻塞模式

server register(selector SelectionKey OP_ACCEPT) //將伺服器Channel注冊到

Selector對象 並指出伺服器Channel所感興趣的事件為可接受請求操作

}

public void run()

{

while(true)

{

try

{

/**

*應用Select機制輪循是否有用戶感興趣的新的網路事件發生 當沒有

* 新的網路事件發生時 此方法會阻塞 直到有新的網路事件發生為止

*/

selector select()

}

catch(IOException e)

{

continue //當有異常發生時 繼續進行循環操作

}

/**

* 得到活動的網路連接選擇鍵的集合

*/

Set<SelectionKey> keys=selector selectedKeys()

activeSockets=keys size() //獲取活動連接的數目

if(activeSockets== )

{

continue //如果連接數為 則繼續進行循環操作

}

/**

/**

* 應用For—Each循環遍歷整個選擇鍵集合

*/

for(SelectionKey key :keys)

{

/**

* 如果關鍵字狀態是為可接受 則接受連接 注冊通道 以接受更多的*

事件 進行相關的伺服器程序處理

*/

if(key isAcceptable())

{

doServerSocketEvent(key)

continue

}

/**

* 如果關鍵字狀態為可讀 則說明Channel是一個客戶端的連接通道

* 進行相應的讀取客戶端數據的操作

*/

if(key isReadable())

{

doClientReadEvent(key)

continue

}

/**

* 如果關鍵字狀態為可寫 則也說明Channel是一個客戶端的連接通道

* 進行相應的向客戶端寫數據的操作

*/

if(key isWritable())

{

doClinetWriteEvent(key)

continue

}

}

}

}

/**

* 處理伺服器事件操作

* @param key 伺服器選擇鍵對象

*/

private void doServerSocketEvent(SelectionKey key)

{

SocketChannel client=null

try

{

ServerSocketChannel server=(ServerSocketChannel)key channel()

client=server accept()

if(client==null)

{

return

}

nfigureBlocking(false) //將客戶端Channel設置為非阻塞型

/**

/**

* 將客戶端Channel注冊到Selector對象上 並且指出客戶端Channel所感

* 興趣的事件為可讀和可寫

*/

client register(selector SelectionKey OP_READ|SelectionKey OP_READ)

}catch(IOException e)

{

try

{

client close()

}catch(IOException e ){}

}

}

/**

* 進行向客戶端寫數據操作

* @param key 客戶端選擇鍵對象

*/

private void doClinetWriteEvent(SelectionKey key)

{

代碼實現略

}

/**

* 進行讀取客戶短數據操作

* @param key 客戶端選擇鍵對象

*/

private void doClientReadEvent(SelectionKey key)

{

代碼實現略

}

}

從上面對代碼可以看出 使用非阻塞性I/O進行並發型伺服器程序設計分三個部分

向Selector對象注冊感興趣的事件 從Selector中獲取所感興趣的事件 根據不同的事件進

行相應的處理

結語

通過使用NIO 工具包進行並發型伺服器程序設計 一個或者很少幾個Socket 線程就可

以處理成千上萬個活動的Socket 連接 大大降低了伺服器端程序的開銷 同時網路I/O 採取

非阻塞模式 線程不再在讀或寫時阻塞 操作系統可以更流暢的讀寫數據並可以更有效地向

CPU 傳遞數據進行處理 以便更有效地提高系統的性能

看到這里相信你看了不止 分鍾了吧 我說 分鍾其實就是想讓大家能夠輕松的讀下去(雞蛋 )

好了 到這里大家應該對java nio有個初步的了解了吧~~~

lishixin/Article/program/Java/hx/201311/27190

❺ java基礎案例教程第一版與第二版區別

java基礎案例教程第一培如版與第二版區別內容更新、布局結構、編輯方式、適應性不同。內容更新:Java基礎案例教程第一慧燃版的原始出版日期為2004年,因此沒有包括JavaSE8和JavaSE9等最新版本的特性和使用方式。Java基礎案例教程第二版更新了最新版本的JavaSE8和JavaSE9等特性和使用方式,體現了Java技術的最新發展。
1、布局結構:Java基礎案例教程第一版的書籍布局結構較為傳統,注重對理論知識的呈現和闡述,對實踐案例和項目實踐尚未有很多的涉及。Java基礎案例教程第二版的書籍布局結構更加合理,注重對實踐案例和項目實踐的闡述和應用。
2、編輯方式:Java基礎案例教程第一版的編寫方式和方法也較為傳統,注重理論知識的呈現和解釋,缺少實踐案例的講解和運用。Java基礎案例教程第二版的編寫方式和方法更加註重實踐,強調在理論知識講解的同時,結合實際應用情況進行詳細的講前中虛解和演示。
3、適應性:Java基礎案例教程第一版主要面向Java初學者,由於缺少實踐案例和項目實踐的涉及,對於中級和高級開發者的學習和應用幫助不是很大。Java基礎案例教程第二版適用於不同層次開發人員進行學習和應用,除了Java初學者之外,中級和高級開發者也可以從中獲取到很多有價值的知識和經驗。

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:432
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:743
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:146
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:233
java駝峰 發布:2025-02-02 09:13:26 瀏覽:651
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:532
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726