Java100行以上源代码,至少五个class以及一个interface , 可以简单点?下面是一个可能的Java源代码,它包含了一个接口(Shape)和五个类(Circle, Rectangle, Triangle, Square 和 Main) 。它的功能是计算不同形状的面积和周长 。
//定义一个接口Shape,有两个抽象方法:getArea()和getPerimeter()interface Shape {double getArea();double getPerimeter();
}//定义一个类Circle , 实现Shape接口class Circle implements Shape {//定义一个私有属性radius,表示圆的半径
private double radius;//定义一个公有构造方法,用于初始化radius
public Circle(double radius) {this.radius = radius;
}//实现getArea()方法,返回圆的面积
public double getArea() {return Math.PI * radius * radius;
}//实现getPerimeter()方法,返回圆的周长
public double getPerimeter() {return Math.PI * radius * 2;
}
}//定义一个类Rectangle,实现Shape接口class Rectangle implements Shape {//定义两个私有属性width和height,表示矩形的宽度和高度
private double width;private double height;//定义一个公有构造方法 , 用于初始化width和height
public Rectangle(double width, double height) {this.width = width;this.height = height;
}//实现getArea()方法 , 返回矩形的面积
public double getArea() {return width * height;
}//实现getPerimeter()方法 , 返回矩形的周长
public double getPerimeter() {return (widthheight) *2;
}
}//定义一个类Triangle , 实现Shape接口class Triangle implements Shape {//定义三个私有属性a,b,c表示三角形的三条边长
private double a;private double b;private double c;//定义一个公有构造方法 , 用于初始化a,b,c,并检查是否满足三角形条件(任意两边之和大于第三边)
public Triangle(double a, double b, double c) throws Exception{if (abcacbbca) {
this.a = a;this.b = b;
this.c = c;
} else {
throw new Exception("Invalid triangle");
}
}//实现getArea()方法 , 返回三角形的面积(使用海伦公式)
public double getArea() {//计算半周长p
double p = (abc) /2;//计算并返回面积s(使用Math.sqrt()函数求平方根)
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}//实现getPerimeter()方法,返回三角形的周长
public double getPerimeter(){return abc;
}
}//定义一个类Square , 继承Rectangle类,并重写构造方法和toString()方法class Square extends Rectangle {//重写构造方法,在调用父类构造方法时传入相同的参数side作为width和height
public Square(double side){super(side, side);
}//重写toString()方法,在原来基础上加上"Square:"前缀 , 并只显示side属性而不显示width和height属性(使用String.format()函数格式化字符串)
@Override
public String toString(){return String.format("Square: side=%.2f", super.width);/* 或者直接使用super.getPerimeter()/4作为side */
/* return String.format("Square: side=%.2f", super.getPerimeter()/4); */
/* 注意:不能直接访问super.side属性,
求:用JAVA语言编写的银行家算法的源代码import java.util.*;
class ThreadTest {
static int type = 4, num = 10; //定义资源数目和线程数目
static int[] resource = new int[type]; //系统资源总数
//static int[] copyResource = new int[type]; //副本
static Random rand = new Random();
static Bank[] bank = new Bank[num]; //线程组
Bank temp = new Bank();
public void init() {
//初始化组中每个线程,随机填充系统资源总数
for(int i = 0; itype; i)
resource[i] = rand.nextInt(10)80;
System.out.print("Resource:");
for(int i = 0; itype; i)
System.out.print(" "resource[i]);
System.out.println("");
for(int i = 0; ibank.length; i)
bank[i] = new Bank("#"i);
}
public ThreadTest4() {
init();
}
class Bank extends Thread {
//银行家算法避免死锁
public int[]
max = new int[type], //总共需求量
need = new int[type], //尚需资源量
allocation = new int[type]; //已分配量
private int[]
request = new int[type], //申请资源量
copyResource = new int[type]; //资源副本
private boolean isFinish = false; //线程是否完成
int[][] table = new int[bank.length][type*4]; //二维资源分配表
private void init() {
// 随机填充总共、尚需、已分配量
synchronized(resource) {
for(int i = 0; itype; i) {
max[i] = rand.nextInt(5)10;
need[i] = rand.nextInt(10);
allocation[i] = max[i] - need[i];
resource[i] -= allocation[i]; //从系统资源中减去已分配的
}
printer();
for(int i = 0; itype; i) {
if(resource[i]0) {
//若出现已分配量超出系统资源总数的错误则退出
System.out.println("The summation of Threads' allocations is out of range!");
System.exit(1);
}
}
}
}
public Bank(String s) {
setName(s);
init();
start();
}
public Bank() {
//none
}
public void run() {
try {
sleep(rand.nextInt(2000));
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
while(true) {
//程序没有完成时一直不断申请资源
if(askFor() == false) {
try {
sleep(1000);
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
}
else
tryRequest();
if(noNeed() == true)
break;
}
//休眠一段时间模拟程序运行
try {
sleep(1000);
}
catch(InterruptedException e) {
throw new RuntimeException(e);
}
System.out.println(getName()" finish!");
synchronized(resource) {
//运行结束释放占有资源
for(int i = 0; itype; i) {
resource[i]= allocation[i];
need[i] = allocation[i] = max[i] = 0;
}
}
}
private void printer() {
//打印当前资源信息
System.out.print(getName()" Max:");
for(int i = 0; itype; i)
System.out.print(" "max[i]);
System.out.print(" Allocation:");
for(int i = 0; itype; i)
System.out.print(" "allocation[i]);
System.out.print(" Need:");
for(int i = 0; itype; i)
System.out.print(" "need[i]);
System.out.print(" Available:");
for(int i = 0; itype; i)
System.out.print(" "resource[i]);
System.out.println("");
}
private boolean askFor() {
//随机产生申请资源量并检测是否超标
boolean canAsk = false;
for(int i = 0; itype; i) {
request[i] = rand.nextInt(20);
//防止申请量超过所需量
if(request[i]need[i])
request[i] = need[i];
}
【金融java源代码 java源代码分析】for(int i = 0; itype; i) //防止随机申请资源全为0
if(request[i]0)
canAsk = true;
synchronized(resource) {
//锁住可供资源检查是否超标
for(int i = 0; itype; i) {
if(request[i]resource[i])
//如果申请资源超过可供资源则等待一段时间后重新申请
return false;
}
}
return canAsk;
}
private void tryRequest() {
//创建副本尝试分配请求
synchronized(resource) {
for(int i = 0; itype; i)
//依然要防止请求量超出范围
if(request[i]resource[i])
return;
for(int i = 0; itype; i) {
//复制资源量并减去需求量到一个副本上
copyResource[i] = resource[i];
copyResource[i] -= request[i];
}
System.out.print(getName()" ask for:");
for(int i = 0; itype; i)
System.out.print(" "request[i]);
System.out.println("");
if(checkSafe() == true) {
//如果检查安全则将副本值赋给资源量并修改占有量和需求量
for(int i = 0; itype; i) {
resource[i] = copyResource[i];
allocation[i]= request[i];
need[i] -= request[i];
}
System.out.println(getName()" request succeed!");
}
else
System.out.println(getName()" request fail!");
}
}
private boolean checkSafe() {
//银行家算法检查安全性
synchronized(bank) {
//将线程资源信息放入二维资源分配表检查安全性,0~type可用资源/type~type*2所需资源/type*2~type*3占有资源/type*3~-1可用 占用资源
for(int i = 0; ibank.length; i) {
for(int j = type; jtype*2; j) {
table[i][j] = bank[i].need[j%type];
}
for(int j = type*2; jtype*3; j) {
table[i][j] = bank[i].allocation[j%type];
}
}
//冒泡排序按需求资源从小到大排
for(int i = 0; ibank.length; i) {
for(int j = i; jbank.length-1; j) {
sort(j, 4);
}
}
//进行此时刻的安全性检查
for(int i = 0; itype; i) {
table[0][i] = copyResource[i];
table[0][i type*3] = table[0][i]table[0][i type*2];
if(table[0][i type*3]table[1][i type])
return false;
}
for(int j = 1; jbank.length-1; j) {
for(int k = 0; ktype; k) {
table[j][k] = table[j-1][k type*3];
table[j][k type*3] = table[j][k]table[j][k type*2];
if(table[j][k type*3]table[j 1][k type])
return false;
}
}
}
return true;
}
private void sort(int j, int k) {
//递归冒泡排序
int tempNum;
if(table[j][k]table[j 1][k]) {
for(int i = type; itype*2; i) {
tempNum = table[j][i];
table[j][i] = table[j 1][i];
table[j 1][i] = tempNum;
}
/*temp = bank[j];
bank[j] = bank[j 1];
bank[j 1] = temp;*/
}
else if(table[j][k] == table[j 1][k]ktype*2) //此资源量相同时递归下一个资源量排序并且防止超出范围
sort(j, k 1);
}
private boolean noNeed() {
//是否还需要资源
boolean finish = true;
for(int i = 0; itype; i) {
if(need[i] != 0) {
finish = false;
break;
}
}
return finish;
}
}
public static void main(String[] args) {
ThreadTest t = new ThreadTest();
//后台线程,设定程序运行多长时间后自动结束
new Timeout(30000, "---Stop!!!---");
}
}
Java到底能做什么事情呢?Java是一种高级的面向对象的编程语言 , 也是一个平台 。Java程序可以在有JVM的任何系统上运行,这是Java的核心优势,因此Java的应用范围很广 。
学会Java可以从事的工作有:
可以做Android:Android手机 , 随便打开一个APP应用,他们就是用的Java语言 。从Android刚刚起步,到今天许多的Android应用都是由Java程序员开发的 。虽然Android运用了不同的JVM以及不同的封装方式 , 但是代码还是用Java语言所编写的 。
可以编写游戏:很多耳熟能详的游戏都是通过Java语言编写的,并且Java不仅仅是在手机端游戏中应用广泛,同样在电脑端也体现了Java语言的强大功能 。
可以做Hadoop大数据开发:稍微有点实力的企业都在上大数据项目,而Hadoop本身又是Java开发的,再加上Hadoop工程师薪资普遍比纯Java开发要高3000以上,所以有很多搞Java的都在往Hadoop大数据方向转 。
可以做服务器程序:Java在金融服务业的应用非常广泛 。许多银行都用Java来编写前台和后台的电子交易系统,结算和确认系统,数据处理项目以及其他项目 。
可以做嵌入式领域:Java在嵌入式领域发展空间很大 。在这个平台上,你只需要130KB就能够使用Java技术(在智能卡或者传感器上) 。最初 , Java被设计用来在嵌入式设备上工作 。事实上,这只是其中的一个领域 。
可以做网站领域:Java在电子商务领域以及网站开发领域占据着大部分席位 。
除了以上这些 , Java在科学应用等领域都有不错的发展前景 。想了解更多有关JAVA的相关信息 , 可以咨询北大青鸟 。
祝你学有所成,望采纳 。
关于金融java源代码和java源代码分析的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。
推荐阅读
- 才艺直播要什么主题好,才艺主播的直播内容
- 腾讯qq游戏角色扮演,腾讯角色扮演手游
- java如何自学代码 初学者java代码
- corona用什么cpu,corona电脑配置
- 神州战神怎么安装u盘系统,神州战神怎么装win10
- 制作网站开发,开发网站教程
- java线程停止代码 java线程如何停止
- ibmw500怎么卸硬盘,ibm 380ed拆硬盘
- allinone选择什么cpu,alluxio 性能