扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
你说的java源代码是指编译成的class文件前的java文件。
在成都做网站、成都网站建设中从网站色彩、结构布局、栏目设置、关键词群组等细微处着手,突出企业的产品/服务/品牌,帮助企业锁定精准用户,提高在线咨询和转化,使成都网站营销成为有效果、有回报的无锡营销推广。创新互联专业成都网站建设十多年了,客户满意度97.8%,欢迎成都创新互联客户联系。
当我们运行.java文件时,它会被系统编译成.class文件,例如Test.java编译之后就是Test.class,
源文件就是指Test.java文件,
一般部署项目时,有.class文件就可以发布运行了,但是如果想修改这个系统,.class是不能修改的,要有.java文件才能修改
也可以上网去下反编译软件,就是能把.class文件大部分还原成.java文件的工具,但不是100%还原,而且如果不是正版的,小心有毒啊,什么的。
。。。 ,你没看那是.class文件不是.java文件吗,那是编译后生成的文件自然不能编辑。
这些东西都是你classpath下面java文件自动编译生成的,或者就是你项目的一些依赖包里面的东西。
你要编辑就自己拿出来在外面其他工具里面自己改。
你要是想学jdk自己的一些东西,你去网上找jdk源码下,是java文件的那种。
Java程序的运行需要经历三个步骤:
编辑
编译
运行
其中,编辑是编写源码的过程,编译是将源码编译成.class文件。运行时,找的就是.class文件,运行程序时,以main函数为入口,开始执行程序,重点是,下次程序运行时,JVM虚拟机不会再次编译源码,而是直接寻找对应的.class文件,从而运行程序。
所以,编译源码后,如果有新的修改,需要重新编译,生成.class文件,然后,才会执行。
修改源码后若不编译便直接运行,JVM使用的仍然是上一次运行的.class文件。
interface Poker{
int ACE = 1;
int JACK = 11;
int QUEEN = 12;
int KING = 13;
int CLUBS = 1; //草花最小
int DIAMONDS = 2; //方块
int HEARTS = 3; //红桃
int SPADES = 4; //黑桃最大
public int rank();
public String toString();
}
class Card implements Poker{
private int value; //value表示牌值:1--13
private int suit; //suit表示花色:1--4
public Card(int v,int s) //构造方法:设置牌值和花色
{ value = v; suit = s; }
public int getValue() //返回牌值
{ return value; }
public int getSuit() //返回花色
{ return suit; }
public int rank() //返回牌的排序
{ return 4*(value-1) +suit; }
public String toString() //将牌值和花色转换成字符串
{ String v;
String s;
if (value == ACE) v="A";
else if (value == JACK) v= "J";
else if (value == QUEEN) v="Q";
else if (value == KING) v="K";
else v=String.valueOf(value);
if (suit == CLUBS) s = "草花";
else if (suit == DIAMONDS) s = "方块";
else if (suit == HEARTS) s = "红桃";
else s = "黑桃";
return s + " "+v;
}
}
class CardDeck {
private Card deck []; //deck[]存放一付牌
private int cards; //cards表示还剩几张牌
public CardDeck() //构造方法:创建52张牌,填上牌值和花色,洗牌
{ deck = new Card[52]; //创建52张牌
fill(); //填上牌值和花色
shuffle(); //洗牌
}
public void fill() //填上牌值和花色
{ int i; int j;
for (i =1; i = 13; i++)
for (j = 1; j = 4; j++)
deck[4*(i-1) + j - 1]= new Card(i,j);
// deck[0]=草花A,deck[1]=方块A,deck[2]=红桃A,deck[3]=黑桃A,deck[4]=草花2...
cards = 52; //开始有52张牌
}
public void shuffle() //洗牌
{
int next;
for (next = 0 ; next cards-1; next++) {
int r=(int) (Math.random()*52);
//随机生成0--51的一个数
Card temp = deck [next]; //两张牌交换位置
deck[next] = deck[r];
deck[r] = temp;
}
}
public Card draw() //发一张牌
{
if (cards == 0) return null;
cards--;
return deck[cards];
}
}
class CardDeck2 extends CardDeck{
public CardDeck2(){
super();
}
public void shuffle(){
for(int i = 0; i 10; i ++){
super.shuffle();
}
}
public Card[] draw2(){
Card[] card = new Card[2];
for(int i = 0; i 2; i ++){
card[i] = super.draw();
}
return card;
}
public boolean compare(Card[] yours, Card[] mine){
int valuecountyou = 0;
int valuecountmine = 0;
int colorcountyou = 0;
int colorcountmine = 0;
for(int i = 0; i yours.length; i ++){
valuecountyou += yours[i].getValue();
valuecountmine += mine[i].getValue();
colorcountyou += yours[i].getSuit();
colorcountmine += mine[i].getSuit();
}
if(valuecountyou valuecountmine){
return true;
}else if(valuecountyou valuecountmine){
return false;
}else{
if(colorcountyou colorcountmine){
return true;
}else
return false;
}
}
}
public class Test2 {
public static void main(String args[]){
CardDeck2 d = new CardDeck2();
int i;
int wins = 0; //wins表示你赢的次数
int rounds = 10; //rounds表示玩牌次数
for (i =1; i=rounds; i++){
Card[] yours = d.draw2();
System.out.print("您的牌是: " + yours[0]+" ," + yours[1] + " ,");
Card[] mine = d.draw2();
System.out.print("我的牌是:" + mine[0]+" 。 " + mine[1]+" 。 ");
if (d.compare(yours, mine)){
System.out.println("恭喜,您赢了!");
wins++;
}else{
System.out.println("抱歉,我赢了。");
}
}
System.out.println("您总共赢了:"+ wins+" 次");
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流