为了账号安全,请及时绑定邮箱和手机立即绑定

Java入门第三季

难度入门
时长 5小时 0分
学习人数
综合评分9.50
1125人评价 查看评价
9.7 内容实用
9.4 简洁易懂
9.4 逻辑清晰
  • java当中的栈和堆:基本数据类型、局部变量都是存放在栈内存中的,用完就消失。
    new创建的实例化对象及数组,是存放在堆内存中的,用完之后靠垃圾回收机制不定期自动消除。

    栈:

    函数中定义的基本类型变量,对象的引用变量都在函数的栈内存中分配。
    栈内存特点,数数据一执行完毕,变量会立即释放,节约内存空间。
    栈内存中的数据,没有默认初始化值,需要手动设置。

    堆:

    堆内存用来存放new创建的对象和数组。
    堆内存中所有的实体都有内存地址值。
    堆内存中的实体是用来封装数据的,这些数据都有默认初始化值。
    堆内存中的实体不再被指向时,JVM启动垃圾回收机制,自动清除,这也是JAVA优于C++的表现之一(C++中需要程序员手动清除)。


    查看全部
  • Java集合框架的主要成员https://img1.sycdn.imooc.com//5bd192f40001e85803740352.jpg

    查看全部
  • 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()

    查看全部
  • 迭代器 Iteratorhttps://img1.sycdn.imooc.com//5bcefaad0001d05704770175.jpg

    查看全部
  • https://img1.sycdn.imooc.com//5bcef056000159c505370089.jpg

    通过Arrays.asList()将course数组转化成List,并由addall添加入表


    查看全部
  • List是一个接口不能实例化,通过其实现类来实现https://img1.sycdn.imooc.com//5bceed8500011ab203600197.jpg


    查看全部

举报

0/150
提交
取消
课程须知
此部分为 Java 课程的进阶内容,适合具有一定 Java 基础的伙伴们学习,如果您是新手,建议您移步 《Java入门第一季》 和 《Java入门第二季》,在理解并掌握面向对象相关知识后再回来进修。
老师告诉你能学到什么?
本课程将学习 Java 中的异常处理、集合框架、字符串、常用类等,逐步学习掌握 Java 高级技术。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!