Java 数组的使用||类||对象

一、目的

1.创建快捷键并熟练使用
2.学习Java中数组、类、对象的定义以及使用
3.能够在Java中熟练使用系统的方法,如果系统没有的在自己定义

二、知识

1.

在File --Settings--Keymap--Editor进行设置
ctrl+P上一行( -Move Up and Scroll)
ctrl+N下一行(-Move Down and Scroll)
ctrl+B后移back( -Left)
ctrl+F前移forward( -Right)
ctrl+A跳到行首ahead( Move Caret to Line Start)
ctrl+E跳到行尾end (-Move Caret to Line End)
ctrl+W扩大当前界面(File --Settings--Keymap--Main menu-Window-Active Tool Window-Hide All Tool Windows)
ctrl+D复制(-Duplicate Line or Selection)
alt+ctrl+上下键当前行上下移

2.数组

定义数组的两种方式

 //引用类型:除了上面的所有类型都是引用类型
        //数组一旦被定义 打小就确定了 无法更改
        //静态
        int [] score = {1,2,3};
        String[] name={"Jack","Marry"};
        //动态
        float[] height = new float[5];
        height[0] = 165.4f;
        height[1] = 39f;

数组的基本使用

//计算器 长什么样子 能做什么 概念  类
        //有一个计算器在手上 具象  对象
        Random r = new Random();
        //尽量不要扩大变量的作用域
        //
        int [] count = new int[10];
        for (int i = 0; i < 10;i++){
           count[i] =  r.nextInt(100);//限定100内的随机数
        }

数组的三种输出方式

 //数组输出方式1
        for(int i = 0;i<10;i++){
            System.out.print(count[i]+" ");
        }
        System.out.println();
        //数组输出方式2
        for(int temp:count){
            System.out.print(temp+"  ");
        }
        System.out.println();
        //数组输出方式3
        System.out.println(Arrays.toString(count));
2.类

类和对象的概念

类:Contact :【姓名 地址 Email 电话号】
     Byte char boolean short int long double float
     Java 里除了8大基本数据类型之外都是对象
     抽象的 不存在的 描述同一事物(具有共同的属性和方法)
     人类 :概念 抽象 不能完成具体的事情
     小王:对象 具体存在 可以使用
 
   对象:
     具体的 实际存在的 某一类的实例化
     对象都是new出来的
     可以完成具体事情 有内存空间的
     同一个类可以有多个对象

定义一个类

**
 * 定义一个类 通常情况下一个文件对应一个类
 * 修饰符 class 类名(首字母大写){
 *     这个类的一些属性:成员变量(通常在类的最上方)
 *     这个类的一些功能:方法
 * }
 * 修饰符:(可无)
 *   public static final private
 *   封装:
*        把私有的东西封装起来不让外部使用,
*        需要给外部使用就暴露出来
*       访问权限: public private protected
 *       public:公共的想用就用(内部可以用外部*       也可以使用)
*        private:私有只能自己使用外部无法访问
*        protected:受保护的外部(同一个包)可以访问

 *   继承
 *   多态
 */

class Person{
    String name;
    int age;
    float score;
}

成员方法的声明和访问

//方法的定义
    public void test(){
        System.out.println("没返回值没参数的方法");
    }
    //没有返回值接收一个参数
    public void  test3(String name){

    }
    //有多个参数有一个返回值 每个参数用逗号隔开
    public int test4(String name,int age){
        return 0;
    }
    //可变参数  相当于一个数组
    public int test6(int ... count){
        int sum=0;
        for(int i = 0;i

对象的创建与使用

 public static void main(String[] args){
        //创建一个对象  new
        //使用对象 .
        //对象一旦创建 属性变量有初值
        // char ''  short long int 0
        // float double 0.0  boolean false  byte 0
        //引用数据类型:对象类型的变量  null
        Person xw=new Person();
        //给这个对象对应的属性赋值
        xw.age=0;
        xw.name ="小王";
        xw.score =140.5f;
        xw.test() ;//方法在外部:通过对象xw来调用test
        int result = xw.test6(new int[]{4, 5, 3, 6, 1, 8, 2, 7});//这个对象没有名字  叫匿名对象 作为一个参数传递
        System.out.println(result);
    }

三、应用:猜数字游戏的实现

代码:

class GuessNumber{
    public static void main(String[] args) {
        //保存原始数字
        int [] org = new int[4];
        //保存猜测的数字
        int[] guess=new int[4];
        //产生4个随机数
        Random random = new Random();
        for(int i = 0;i<4;i++){
            //产生一个随机数
            int temp = random.nextInt(10);
            //判断是否存在
            boolean result =contains(org,temp);//转换org为Arrays类型
            if(result){
                //确保i对应的位置产生一个不重复的随机数
                i--;
            }else {
                org[i] = temp;
            }

        }
        //排序
        Arrays.sort(org);
        System.out.println(Arrays.toString(org));

        //创建一个扫描仪对象Scanner
        Scanner scanner = new Scanner(System.in );
        //开始游戏
        while (true){
            int countA = 0;
            int countB = 0;
            System.out.print("请输入猜测的数字:");

            for(int i = 0;i<4;i++){
               guess[i]=scanner.nextInt();
            }
            //判断用户输入
           //判断是否存在
            for (int i = 0;i<4;i++){
                boolean result = contains(guess,org[i]);
                if(result == true){
                    //数字存在
                    //判断位置是否相同
                    int index = indexOf(guess, org[i]);

                    System.out.println("i:"+i+" index:"+index);
                    if (index == i){
                        //数字和位置都相同
                        countA++;
                    } else{
                        countB++;
                    }
                }
            }

            if (countA == 4){
                System.out.println("恭喜全对!");
                break;
            }else{
                System.out.println(countA+"A"+countB+"B");
            }
        }
    }


    /**
     * 在一个数组里面查找某个对象的索引值
     * @param val 数组
     * @param obj 查找的对象
     * @return 索引值
     */
    public static int indexOf(int[] val, int obj){
        for (int i = 0; i < val.length; i++){
            if (val[i] == obj){
                return i;
            }
        }
        return -1;
    }
public static boolean contains(int[] val,int obj){
        for(int i = 0;i

运行:(注意有些电脑上的Android stdio 不能在UTF-8的状态下运行此代码,可以将其改为GB2312)


Java 数组的使用||类||对象_第1张图片
Java 数组的使用||类||对象_第2张图片

四、附带扑克游戏

两个玩家一个房间,一人一张牌,比大小

class poker{
    public static void main(String[] args){
        System.out.println("*****************");
        System.out.println("欢迎来到扑克世界");
        System.out.println("*****************");
        System.out.println("游戏规则:每次游戏从您的账户分配100元进入房间,每次游戏底注为5,每次下注为5的整数倍");
        //钱
        int totalMoney=100;
        int tMoneyA=totalMoney;
        int tMoneyB=totalMoney;
        int basicMoney=5;
        //牌
        int A=0;
        int B=0;
        //下注金额
        int costA=0;
        int costB=0;

        Random random = new Random();
        //创建一个扫描仪对象Scanner
        Scanner scanner = new Scanner(System.in );


        while (true){
            //进房间缴费5
            System.out.println("您已进入房间,自动缴5元的底注");
            tMoneyA-=basicMoney;
            tMoneyB-=basicMoney;
            System.out.println("玩家A余额为:"+tMoneyA );
            System.out.println("玩家B余额为:"+tMoneyB );
            //选择
            int choiceA=0;
            int choiceB=0;
        //给两个玩家随机发牌 循环
        // 用二位数来代表数字和花色 十位表示数字 个为表花色(3:黑 2:红 1:梅0:方)
            int tempA1 = random.nextInt( 12)+2;
            int tempA2 = random.nextInt(3);
            //输出
            number(tempA1);
            sign(tempA2);
            A=tempA1*10+tempA2;
            int tempB1 = random.nextInt( 12)+2;
            int tempB2 = random.nextInt(3);
            //输出
            number(tempB1);
           sign(tempB2 );
            B=tempB1*10+tempB2;



            //玩家1、2先后选择
        //玩家1 弃牌 玩家2赢  下注(最低5注)

            System.out.println("请玩家A选择操作:1.弃牌 2.下注 :");
            choiceA=scanner.nextInt();
            if(choiceA==1){
                System.out.println("此局玩家B获胜");
                tMoneyA-=basicMoney;
                tMoneyB+=basicMoney;

            }else{
                System.out.print("请输入下注金额:");
                costA=scanner.nextInt();

            //玩家2选择 弃牌 玩家1赢
            System.out.println("请玩家A选择操作:1.弃牌 2.下注 :");
            choiceB=scanner.nextInt();
            if(choiceB==1){
                System.out.println("此局玩家A获胜");
                tMoneyA+=basicMoney;
                tMoneyB-=basicMoney;

            }else {
                System.out.print("请输入下注金额:");
                costB=scanner.nextInt();
                //下注开牌 根据牌来判断输赢
                if(AB){
                    System.out.println("此局玩家A获胜");
                    tMoneyA=tMoneyA+basicMoney*2+costB;
                    tMoneyB-=costB;

                }else{
                    System.out.println("平局");
                }

                ///输赢加减金额  直至金额为0/
                if(tMoneyA==0||tMoneyB==0){
                    break;
                }

            }
        }
        }
        if(tMoneyA==0){
            System.out.println("此次游戏玩家B获胜!!");
        }else{
            System.out.println("此次游戏玩家A获胜!!");
        }
    }
    public static void sign(int a){
        switch (a) {
            case 3:
                System.out.println("♠");
                break;
            case 2:
                System.out.println("♥");
                break;
            case 1:
                System.out.println("♣");
                break;
            default:
                System.out.println("♦");
                break;
        }
    }
    public static void number(int a){
        if(a==11){
            System.out.print("J");
        }
        if(a==12){
            System.out.print("Q");
        }
        if(a==13){
            System.out.print("K");
        }
        if(a==14){
            System.out.print("A");
        }
        if(a<11){
            System.out.print(a);
        }
    }
}

心得

Java中要实现一个功能,可以先在系统中查找有无对应的方法,有的话就可以调用,如果没有的也可以自己定义一个,非常方便。
另外,如果想程序写的快,要善用快捷键。

你可能感兴趣的:(Java 数组的使用||类||对象)