-
java当中的栈和堆:基本数据类型、局部变量都是存放在栈内存中的,用完就消失。
new创建的实例化对象及数组,是存放在堆内存中的,用完之后靠垃圾回收机制不定期自动消除。栈:
函数中定义的基本类型变量,对象的引用变量都在函数的栈内存中分配。
栈内存特点,数数据一执行完毕,变量会立即释放,节约内存空间。
栈内存中的数据,没有默认初始化值,需要手动设置。堆:
堆内存用来存放new创建的对象和数组。
堆内存中所有的实体都有内存地址值。
堆内存中的实体是用来封装数据的,这些数据都有默认初始化值。
堆内存中的实体不再被指向时,JVM启动垃圾回收机制,自动清除,这也是JAVA优于C++的表现之一(C++中需要程序员手动清除)。查看全部 -
Java集合框架的主要成员
查看全部 -
indexOf:返回整个序列中元素出现第一次的位置(即使后面再次出现)
lastindexOf:返回整个序列中元素最后一次出现的位置(同上)
如果没有,结果返回-1
查看全部 -
方法里面调用成员变量时会默认有this.,若带参方法的参数名和成员变量名一样,必须加this.,不然调用的就不是成员变量了。
this:指代当前对象,哪个对象调方法指的就是哪个对象
只能用在方法中,方法中访问成员变量之前默认有个this.
this的用法:
1)this.成员变量名--------------访问成员变量
2)this.方法名()----------------调用方法(一般不用)
3)this()-----------------------调用构造方法
查看全部 -
List元素有序并且可以重复,称为序列
查看全部 -
字符串顺序对比
查看全部 -
java集合框架
查看全部 -
foreach用法:for(数据类型 元素变量:遍历对象){
循环体(操作的是元素变量)}
foreach适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,适用于只是进行集合或数组遍历,不能对数组或集合进行修改(添加删除操作),但是更为复杂的一些循环还是需要用到for循环效率更高。
查看全部 -
调用静态方法可以直接类.方法名
例如:Math.round();
查看全部 -
Poker.class(扑克对象)
package com.imooc.game;
public class Poker {
private String name;
private int num;
private String pkStyle;
private int numStyle;
public String getName() {
return name;
}
public String pkStyle() {
return pkStyle;
}
public int getNum() {
return num;
}
public void setNum(int num) {
if(num>10){
switch(num){
case 11:
this.num = num;
this.name = "J";
break;
case 12:
this.num = num;
this.name = "Q";
break;
case 13:
this.num = num;
this.name = "K";
break;
}
}else{
if(num==1){
this.num = num;
this.name ="A";
}else{
this.num = num;
this.name =num+"";
}
}
}
public int getNumStyle() {
return numStyle;
}
public void setNumStyle(int numStyle) {
switch(numStyle){
case 1:
this.numStyle = numStyle;
this.pkStyle = "方块";
break;
case 2:
this.numStyle = numStyle;
this.pkStyle = "梅花";
break;
case 3:
this.numStyle = numStyle;
this.pkStyle = "红桃";
break;
case 4:
this.numStyle = numStyle;
this.pkStyle = "黑桃";
break;
}
}
}
PokerList.class(扑克列表)
package com.imooc.game;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class PokerList{
public List<Poker> pklist=new ArrayList<Poker>();
public Object gamblerList;
/**
* 初始化扑克牌
* @param args
*/
public void pkLoad(){
System.out.println("初始化扑克牌:");
for(int i=0;i<13;i++){
for(int j=0;j<4;j++){
Poker pk=new Poker();
pk.setNum(i+1);
pk.setNumStyle(j+1);
pklist.add(pk);
}
}
System.out.println("初始化结束");
}
/**
* 打印扑克牌
* @param args
*/
public void showPokerList(){
System.out.print("【");
for(Poker pk:pklist){
System.out.print(pk.pkStyle()+"_"+pk.getName()+" ");
}
System.out.print("】\n");
}
/**
* 打乱扑克牌
* @param args
*/
public void upsetPokerList(){
System.out.println("洗牌开始:");
Random random=new Random();
for(int i=0;i<100;i++){
int pknum=random.nextInt(52);
int addNum=random.nextInt(52);
Poker pkObj=pklist.get(pknum);
pklist.remove(pknum);
pklist.add(addNum,pkObj);
}
System.out.println("洗牌结束");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
PokerList pokers=new PokerList();
//初始化扑克
pokers.pkLoad();
//打印扑克
pokers.showPokerList();
//打乱扑克
pokers.upsetPokerList();
//打印扑克
pokers.showPokerList();
}
}
Gambler.class(玩家)
package com.imooc.game;
import java.util.ArrayList;
import java.util.List;
public class Gambler {
private String id;
private String name;
public List<Poker> pk;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Gambler(){
pk=new ArrayList<Poker>();
}
}
GameControl.class(主函数)
package com.imooc.game;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class GameControl {
/**
* 创建赌徒列表
*/
public List<Gambler> gamblerList=new ArrayList<Gambler>();
/**
* 打印赌徒
* @param args
*/
public void showGamblerList(){
int i=1;
for(Gambler ga:gamblerList){
System.out.println("第"+i+"位赌徒:id:"+ga.getId()+"姓名:"+ga.getName());
i++;
}
System.out.println("共"+gamblerList.size()+"名玩家");
}
/**
* 发牌
* @param args
*/
public void allotPer(List pklist,int num){
System.out.println("开始发牌!");
for(int j=0;j<num;j++){
int i=0;
for(Gambler pp:gamblerList){
System.out.println("给"+pp.getName()+"发牌");
pp.pk.add((Poker)pklist.get(0));
pklist.remove(0);
}
}
System.out.println("发牌结束!");
}
/**
* 对赌出结果
* @param args
*/
public void comparisonSize(){
Gambler max=gamblerList.get(0);
Poker maxPk=gamblerList.get(0).pk.get(0);
for(Gambler gb:gamblerList ){
for(Poker pk:gb.pk){
int o=maxPk.getNum();
int n=pk.getNum();
if(o<n){
maxPk=pk;
max=gb;
}else if(o==n){
if(maxPk.getNumStyle()<pk.getNumStyle()){
maxPk=pk;
max=gb;
}
}
}
}
System.out.println("玩家:"+max.getName()+"胜出");
System.out.println("他的牌是"+maxPk.pkStyle()+maxPk.getName()+"是最大的");
}
/**
* 打印所有人的牌
* @param args
*/
public void showGamblerPklist(){
System.out.println("所有玩家的牌");
for(Gambler gb:gamblerList){
System.out.println("玩家:id:"+gb.getId()+"姓名:"+gb.getName()+"的牌为");
System.out.print("【");
for(Poker pk:gb.pk){
System.out.print(pk.pkStyle()+"_"+pk.getName()+" ");
}
System.out.print("】\n");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
PokerList pokers=new PokerList();
GameControl gameControl=new GameControl();
pokers.pkLoad();
int i=0;
while(true){
Scanner console=new Scanner(System.in);
System.out.println("是否新增赌徒y(是):n(否)");
if(console.next().equals("n")){
if(gameControl.gamblerList.size()>0){
System.out.println("游戏开始!");
gameControl.showGamblerList();
}else{
System.out.println("没有人参加游戏,游戏结束!");
}
break;
}
System.out.println("请输赌徒"+(i+1)+"Id!");
try{
int id=console.nextInt();
Gambler people=new Gambler();
people.setId(id+"");
System.out.println("请输入赌徒姓名!");
String name=console.next();
people.setName(name);
for(Gambler pp:gameControl.gamblerList){
if(pp.getId().equals(id+"")){
System.out.println("赌徒id有重复!");
continue;
}
}
gameControl.gamblerList.add(people);
i++;
}catch(Exception e){
System.out.println("请重新输入整数赌徒id!");
continue;
};
}
pokers.upsetPokerList();
gameControl.allotPer(pokers.pklist,2);
gameControl.comparisonSize();
gameControl.showGamblerPklist();
}
}
查看全部 -
colllect Map
查看全部 -
打印异常信息:e.printStackTrack()
查看全部 -
迭代器 Iterator
查看全部 -
通过Arrays.asList()将course数组转化成List,并由addall添加入表
查看全部 -
List是一个接口不能实例化,通过其实现类来实现
查看全部
举报