zoukankan      html  css  js  c++  java
  • 斗地主,,,Java中final、finalize()、finally三者的区别

    package com.orcal.demo01;
    
    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.Map;
    
    public class doudizhu {
    public static void main(String[] args) {
        //创建扑克牌map和装有key值得集合
        Map<Integer, String> pooker=new HashMap<Integer, String>();
        ArrayList<Integer> pookerNumber=new ArrayList<Integer>();
        //封装Map
        String[] color={"","","",""};
        String[] number={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
        int index=2;
        for(String n:number){
            for(String c:color){
                //封装map
                pooker.put(index, c+n);
                //封装集合
                pookerNumber.add(index);
                index++;
            }
        }
        //封装大小王
        pooker.put(0, "大王");
        pooker.put(1, "小王");
        
        //洗牌
        Collections.shuffle(pookerNumber);
        
        //创建四个容器
        ArrayList<Integer> player1=new ArrayList<Integer>();
        ArrayList<Integer> player2=new ArrayList<Integer>();
        ArrayList<Integer> player3=new ArrayList<Integer>();
        ArrayList<Integer> bottom=new ArrayList<Integer>();
        //发牌
        for(int i=0;i<pookerNumber.size();i++){
            if(i<3){
                bottom.add(pookerNumber.get(i));
            }else if(i%3==0){
                player1.add(pookerNumber.get(i));
            }else if(i%3==1){
                player2.add(pookerNumber.get(i));
            }else if(i%3==2){
                player3.add(pookerNumber.get(i));
            }
        }
    //给每个容器排序
        Collections.sort(player1);
        Collections.sort(player2);
        Collections.sort(player3);
        Collections.sort(bottom);
        look("玩家1",pooker,player1);
        look("玩家2",pooker,player2);
        look("玩家3",pooker,player3);
        look("底牌",pooker,bottom);
    }
    //看牌的方法
    public static void look(String name,Map<Integer, String> pooker,ArrayList<Integer> player){
        System.out.print(name+":");
        for(int num:player){
            System.out.print(pooker.get(num)+" ");
        }
        System.out.println();
    }
    }

    Java中final、finalize()、finally三者的区别

       

    Final是一个修饰符:

    当final修饰一个变量的时候,变量变成一个常量,它不能被二次赋值

    当final修饰的变量为静态变量(即由static修饰)时,必须在声明这个变量的时候给它赋值

    当final修饰方法时,该方法不能被重写

    当final修饰类时,该类不能被继承

    Final不能修饰抽象类,因为抽象类中会有需要子类实现的抽 象方法,(抽 象类中可以有抽象方法,也可以有普通方法,当一个抽象类中没有抽象方 法时,这个抽象类也就没有了它存在的必要)

    Final不能修饰接口,因为接口中有需要其实现类来实现的方法

    Finally:

    Finally只能与try/catch语句结合使用,finally语句块中的语句一定会执行, 并且会在return,continue,break关键字之前执行

    finalize:

    Finalize是一个方法,属于java.lang.Object类,finalize()方法是GC (garbage collector垃圾回收)运行机制的一部分,finalize()方法是在 GC清理它所从 属的对象时被调用的

    手动清理,sysytem.gc

  • 相关阅读:
    Microsoft 机器学习产品体系对比和介绍
    使用ANNdotNET进行情感分析
    使用.NET Hardware Intrinsics API加速机器学习场景
    关于ML.NET v0.6的发布说明
    强化学习的十大原则
    关于ML.NET v0.5的发布说明
    使用ML.NET实现基于RFM模型的客户价值分析
    使用ML.NET实现NBA得分预测
    Azure认知服务之Face API上手体验
    Orange——开源机器学习交互式数据分析工具
  • 原文地址:https://www.cnblogs.com/111wdh/p/13330617.html
Copyright © 2011-2022 走看看