//銀行卡類
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,做網(wǎng)站、成都網(wǎng)站設(shè)計,塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應(yīng)。
public class BanCard {
private Double money = 5000d;
public synchronized void drawMoney(double howMoney,String threadName){
try {
System.out.println(threadName+"進(jìn)入取錢操作!");
Thread.sleep(2000);//為了提前是一次只有一個線程進(jìn)入此方法,進(jìn)行了睡眠2秒
if(howMoneymoney){
System.out.println(threadName+"余額不足!");
return;
}
this.money-=howMoney;
System.out.println(threadName+"-原始余額:"+this.money+",取錢"+howMoney+"后,還剩余額"+this.money);
System.out.println(threadName+"結(jié)束取錢操作!");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
//線程類
public class ThreadDemo implements Runnable {
private BanCard banCard = new BanCard();
private double howMoney=0d;
public void run() {
banCard.drawMoney(this.howMoney,Thread.currentThread().getName());
}
public double getHowMoney() {
return howMoney;
}
public void setHowMoney(double howMoney) {
this.howMoney = howMoney;
}
}
//main所在類
public class Test1 {
public static void main(String[] args) {
ThreadDemo threadDemo = new ThreadDemo();
threadDemo.setHowMoney(3000d);//取款3000
Thread thread1 = new Thread(threadDemo);
thread1.start();
threadDemo.setHowMoney(4000d);//取款4000
Thread thread2 = new Thread(threadDemo);
thread2.start();
}
}
package threadgroup;
class ThreadDemo3 extends Thread {
private String name;
private int delay;
public ThreadDemo3(String sname, int i_delay) {
name = sname;
delay = i_delay;
}
public void run() {
try {
sleep(delay);
} catch (InterruptedException e) {
}
System.out.println("多線程測試!\n" + name + "\n" + delay);
}
}
public class testMyThread {
public static void main(String[] args) {
ThreadDemo3 th1,th2,th3;
th1 = new ThreadDemo3("線程1", (int) (Math.random() * 900));
th2 = new ThreadDemo3("線程2", (int) (Math.random() * 900));
th3 = new ThreadDemo3("線程3", (int) (Math.random() * 900));
th1.start();
th2.start();
th3.start();
}
}
package threadgroup;
public class threadDemo {
public static void main(String[] args) {
Thread t = Thread.currentThread();
t.setName("你好嗎?");
System.out.println("正在進(jìn)行的Thread是:" + t);
try {
for (int i = 0; i 5; i++) {
System.out.println("我不叫穆繼超" + i);
Thread.sleep(3000);
}
} catch (Exception e) {
// TODO: handle exception
System.out.println("Thread has wrong" + e.getMessage());
}
}
}
package threadgroup;
public class threadDemo2 implements Runnable {
public threadDemo2() {
Thread t1 = Thread.currentThread();
t1.setName("第一個主進(jìn)程");
System.out.println("正在運(yùn)行" + t1);
Thread t2 = new Thread(this, "");
System.out.println("在創(chuàng)建一個進(jìn)程");
t2.start();
try {
System.out.println("使他進(jìn)入第一個睡眠狀態(tài)");
Thread.sleep(2000);
} catch (InterruptedException e) {
System.out.println("Thread has wrong" + e.getMessage());
}
System.out.println("退出第一個進(jìn)程");
}
public void run() {
try {
for (int i = 0; i 5; i++) {
System.out.println("進(jìn)程" + i);
Thread.sleep(3000);
}
} catch (InterruptedException e) {
// TODO: handle exception
System.out.println("Thread has wrong" + e.getMessage());
}
System.out.println("退出第二個進(jìn)程");
}
public static void main(String[] args) {
new threadDemo2();
}
}
public class Monkey
{
public static void main(String[] args)
{
int sum=0,remain=1;
//每天吃剩的桃子加一個正好是前一天桃子的一半,每天桃子的總數(shù)就是前一天剩下桃子的數(shù)量
for(int day=9;day=1;day--)
{
sum=(remain+1)*2;
remain=sum;
System.out.println("第"+day+"天還剩"+remain+"個桃子");
}
System.out.println(sum);
}
}
1. 插入排序:插入排序基本操作就是將一個數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個新的、個數(shù)加一的有序數(shù)據(jù),算法適用于少量數(shù)據(jù)的排序,時間復(fù)雜度為O(n^2)。是穩(wěn)定的排序方法。插入排序的基本思想是:每步將一個待排序的紀(jì)錄,按其關(guān)鍵碼值的大小插入前面已經(jīng)排序的文件中適當(dāng)位置上,直到全部插入完為止。
2. 選擇排序:選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數(shù)據(jù)元素排完。 選擇排序是不穩(wěn)定的排序方法。
3. 冒泡排序:冒泡排序(Bubble Sort),是一種計算機(jī)科學(xué)領(lǐng)域的較簡單的排序算法。它重復(fù)地走訪過要排序的數(shù)列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數(shù)列的工作是重復(fù)地進(jìn)行直到?jīng)]有再需要交換,也就是說該數(shù)列已經(jīng)排序完成。這個算法的名字由來是因?yàn)樵酱蟮脑貢?jīng)由交換慢慢“浮”到數(shù)列的頂端。
4. 快速排序:快速排序(Quicksort)是對冒泡排序的一種改進(jìn)。它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨(dú)立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分?jǐn)?shù)據(jù)分別進(jìn)行快速排序,整個排序過程可以遞歸進(jìn)行,以此達(dá)到整個數(shù)據(jù)變成有序序列。
5. 歸并排序:歸并排序是建立在歸并操作上的一種有效的排序算法,該算法是采用分治法(Divide and Conquer)的一個非常典型的應(yīng)用。將已有序的子序列合并,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序。若將兩個有序表合并成一個有序表,稱為二路歸并。
6. 希爾排序:希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序算法的一種更高效的改進(jìn)版本。希爾排序是非穩(wěn)定排序算法。希爾排序是把記錄按下標(biāo)的一定增量分組,對每組使用直接插入排序算法排序;隨著增量逐漸減少,每組包含的關(guān)鍵詞越來越多,當(dāng)增量減至1時,整個文件恰被分成一組,算法便終止。
你看這個鏈接,網(wǎng)頁鏈接
希望可以幫到你,望采納~
這是斐波那契數(shù)列的問題
可以用遞歸,也可以用循環(huán)
遞歸:
public class Demo3 {
// 使用遞歸方法
private static int getFibo(int i) {
if (i == 1 || i == 2)
return 1;
else
return getFibo(i - 1) + getFibo(i - 2);
}
public static void main(String[] args) {
System.out.println("斐波那契數(shù)列的前20項(xiàng)為:");
for (int j = 1; j = 20; j++) {
System.out.print(getFibo(j) + "\t");
if (j % 5 == 0)
System.out.println();
}
}
}
循環(huán):
public class Demo2 {
// 定義數(shù)組方法
public static void main(String[] args) {
int arr[] = new int[20];
arr[0] = arr[1] = 1;
for (int i = 2; i arr.length; i++) {
arr[i] = arr[i - 1] + arr[i - 2];
}
System.out.println("斐波那契數(shù)列的前20項(xiàng)如下所示:");
for (int i = 0; i arr.length; i++) {
if (i % 5 == 0)
System.out.println();
System.out.print(arr[i] + "\t");
}
}
}
System.out.println("1--" + a1.show(b));
a1是A類引用指向A類對象,不存在多態(tài),一定調(diào)用A類方法。A類方法有兩個show(D)和show(A),b是B類引用無法轉(zhuǎn)換為D類引用,但可以轉(zhuǎn)換為A類引用,因此調(diào)用show(A),輸出A and A。
System.out.println("2--" + a1.show(c));
輸出A and A,原因同上。
System.out.println("3--" + a1.show(d));
調(diào)用show(D),輸出A and D。
System.out.println("4--" + a2.show(b));
a2是A類引用指向B類對象,可能存在多態(tài)。b是B類引用無法轉(zhuǎn)換為D類引用,但可以轉(zhuǎn)換為A類引用,因此調(diào)用show(A),而B類重寫了show(A),因此調(diào)用的是重寫后的show(A),輸出B and A。
System.out.println("5--" + a2.show(c));
同上,C類引用無法轉(zhuǎn)換為D類引用,但可以轉(zhuǎn)換為A類引用,因此調(diào)用show(A),輸出B and A。
System.out.println("6--" + a2.show(d));
調(diào)用show(D),show(D)又調(diào)用父類即A類的show(D),輸出A and D
System.out.println("7--" + b.show(b));
b是B類引用指向B類對象,不存在多態(tài),一定調(diào)用B類方法。B類一共有三個方法:重寫自A類的show(A)和show(D),以及新定義的show(B)。show(b)調(diào)用show(B)方法,輸出B and B
System.out.println("8--" + b.show(c));
C類繼承自B類,也調(diào)用show(B)方法,輸出B and B
System.out.println("9--" + b.show(d));
調(diào)用show(D),show(D)又調(diào)用父類即A類的show(D),輸出A and D