Android开发Day8(2019-8-06) Java数组、类和方法

目的:

熟练掌握Android Studio的快捷键,了解数组在Java中的用法,掌握数组的三种输出方式。了解Java中类和对象的概念,以及方法的定义和调用。清楚Java编程和C语言编程过程中的不同。

技术:

1.Android Studio的快捷键使用
2.Java中数组的两种定义方式
3.遍历数组的三种方式
4.类和对象的概念
5.成员方法的声明和访问

技术对应使用方法:

1.Android Studio的快捷键使用

快捷键:
ctrl+P(previous)   光标移到上一行
ctrl+N(next)      光标移到下一行

ctrl + B(back)   光标向左移动一个字符
ctrl + F(forward)  光标向右移动一个字符

ctrl + A(ahead)    光标跳到行首
ctrl + E(End)    光标跳到行末
 
ctrl + W(Windows)    窗口最大化
ctrl + D    复制上一行
Alt + shift+上下键    移动这一行

2.Java中数组的两种定义方式

  int[] score={1,2,3};
  String[] names={"jack","merry"};

  //动态 内容动态添加
  float[] height=new float[5];
  height[0]=165.5f;
  height[1]=170f;
数组定义之后在内存中的表现形式

3.遍历数组的三种方式

    数组输出方式1
    for (int i=0;i<10;i++){
        System.out.print(count[i]+" ");
    }

    数组输出方式2
    for (int temp:count){
       System.out.print(temp+" ");}

    数组输出方式3
    System.out.println(Arrays.toString(count));

4.类和对象的概念

Scanner
 * Random
 * Java实现一个通讯录
 * 1.索引->查找对应的字母下面的联系人
 * 2.添加联系人
 * 3.删除联系人
 *
 * OOP(Object oriented programming)
 *
 * 类 :Contact    【姓名 地址 email 电话号码】
 *      byte  char  boolean  short  int  long  double   float
 *      Java里面除了8大基本数据类型之外  都是对象
 *      抽象的  不实际存在  描述同一类实物
 *      人类:概念  抽象  不能完成具体的事情
 *      小王:对象 具体存在 可以使用的
 *
 *      车子:牌子 四个轮子 发动机 5个座位 不可以开
 *      宝马:BWM 四个轮子 发动机 5个座位  可以开
 *
 *      类就是封装
 *
 * 对象:
 *      具体的,实际存在的,某一类的实例化
 *      对象都是new出来的
 *      可以完成具体的事情,有内存空间的
 *      同一个类可以有多个对象
 * 属性
 * 方法
 * 构造函数
 */
class TestClass{
    public static void main(String[] args){
        /*
        创建Person类的一个对象 new
        使用 . 访问成员变量
        对象一旦创建  属性变量有初值
        char '' int long short byte 0
        float double 0.0
        boolean false
        引用数据类型:对象类型的变量 = null
         */
        Person xw=new Person();
        Person zs=new Person();
        /*
        同一个类可以创建多个对象
        每个对象的内存空间都是独立的 (对象之间没有任何关系)
        xw和zs除了都是通过一个类创建的之外 没有任何关系
        对xw的属性进行操作 不会影响zs
         */

        //给这个对象对应的属性赋值
        xw.name="小王";
        xw.age=20;
        xw.score=86.5f;
        zs.name="张三";

        System.out.println(xw.name);
        System.out.println(zs.name);
        System.out.println(xw.age);
        System.out.println(xw.score);

        /*
        方法的使用
        调用谁(哪个对象)的方法
        在类里面可以直接调用的自己的方法
        在外部必须通过对象来调用
         */

        //        Random random = new Random();
        //        random.nextInt();
        //
        //        Scanner scanner = new Scanner(System.in);
        //        scanner.nextInt();

        Person lisi = new Person();
        lisi.test();
        //匿名对象 -> 作为一个参数传递
        int result = lisi.test6(new int[]{1, 2, 3, 4, 5});
        System.out.println(result);
    }
}

/**
 *定义一个类  通常情况下一个文件对应一个类
 * 修饰符:public static final
 *
 * 修饰符 class 类名{
 *      这个类的一些属性:成员变量
 *      这个类的功能:方法
 * }
 */

/**
 * 1.存什么值:成员变量
 * 2.完成什么功能;方法
 *
 * 封装:
 *       把私有的东西封装起来  不让外部使用
 *       需要给外不用  就暴露出来
 *       访问权限:public private protected
 *       public:公共的  想用就用(内部可以用 外部也可以使用)
 *       private:私有 只能自己使用 外部无法访问
 *       protected:受保护的 外部(同一个包)可以访问
 * 继承
 * 多态
 */

5.成员方法的声明和访问

class Person{
    //成员变量  定义在类的最上面
    //default:public protected
    String name;
    int age;
    float score;
    String password;
    char choice;

    //方法的定义 public static final private
    public void test(){
        System.out.println("没返回值 没参数的方法");
    }
    public void test2(){
        //在自己的类里面可以调用这个类里面的所有资源
        //this.test();
        test();//自己的类里面可以不用加this
    }
    //没有返回值 接受一个参数
    public void test3(String name){

    }
    //有一个参数一个返回值
    public int test4(String name){
        return 0;
    }
    //有多个参数 每个参数用逗号隔开
    public int test5(String name,int age){
        return 0;
    }

    public int test6(int ... counts){
        int sum=0;
        for (int i=0;i<counts.length;i++){
            sum+=counts[i];
        }
        return sum;

    }
}

实际使用

用Java实现猜数字游戏:

游戏规则:
猜数字

随机产生4个不相同的数字(0-9) 从小到大排序
1 2 3 4
玩家开始输入
1 4 5 6
如果位置正确且数字正确用A输出
如果数字正确位置不正确用B输出
1A1B
1 2 4 5
2A1B
4A0B退出

Java代码:
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);

            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();
            }

            //判断用户输入
            //1.判断是否存在
            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 < val.length; i++){
            if (val[i] == obj){
                //重复了
                return true;
            }
        }
        return false;
    }
}

心得感悟:

今天我们学习了Java中数组的一些知识,了解了数组的定义与输出的方法。
也对Java中类和方法有了一定的认知。通过在Java中编写代码的过程中,也明确感受到了Java和C语言编程中的一些区别:C语言基本上需要自己从头写到尾,而在Java中很多都是现成的,只用把这些语句调出来就可以了。但是在实际操作中却可能遇到调用的语句并不满足自己想要的条件,这时可能就需要自己去编写或者仿照系统给出的代码写出符合自己心意的代码。总之,还需要多加练习来习惯Java与C之间的区别。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,792评论 0 17
  • 0参考代码 蓝牙(BLE)模块及协议.pdf:在电脑内,有助于理解ble BLE蓝牙在Android开发中的应用 ...
    kamin阅读 3,505评论 0 20
  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom阅读 2,747评论 0 3
  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,451评论 2 35
  • 了解我的人都知道我爱多想,这多想有时候可以给工作添彩,有时候也会给工作添堵。一个月以前就计划去拜访一个客户,因为是...
    水煮时间阅读 301评论 0 0