美文网首页
JAVA-(数组,类,属性,对象,public,private,

JAVA-(数组,类,属性,对象,public,private,

作者: 宁晓鸯 | 来源:发表于2019-08-06 20:53 被阅读0次

    心得体会

    • 今天对Java有了更深一步的了解,从类、属性、对象,再到方法,用JAVA编写猜数字的demo,给了我与c语言不一样的体会,也感受到了很大的困难,但再难也要克服,我会尽我最大努力去对待我的学习的。

    今日所学

    1.数组的使用

    • 1.数组的两种定义方式
    • 2.遍历数组的三种方式
    • 3..数组定义之后在内存中的表现形式
    • 4.Java实现猜数字游戏

    2.类和对象

    • 1.类和对象的定义
    • 2.创建对象的内存表现
    • 3.成员方法的声明和访问
    • 4.方法的使用
    • 5.封装

    具体操作

    1.数组的使用

    • 1.数组的两种定义方式
    //静态
     int[] score = {1, 2, 3};
     String[] names = {"jack", "merry"};
    
    //动态内容添加
     float[] height = new float[5];
            height[0] = 165.5f;
            height[1] = 170f;
    
    • 如果在定义前就已经确定了数组的内容,那就用静态的定义
    • 如果在定义的时候还不确定数组的具体内容,但是知道数组的大小,就用动态的方式创建
    • 2..数组定义之后在内存中的表现形式
      image.png
    • 通常局部变量在栈里面被申请
    QQ截图20190806203025.png
    • 3.遍历数组的三种方式
     Random r = new Random();
            //尽量不要扩大变量的作用域
            int count[]=new int [10];
            for(int i=0;i<10;i++){
              count[i]=r.nextInt(100);
    
            }
            for(int i=0;i<10;i++){
              System.out.print(count[i]+" ");//第一种
            }
            System.out.println();
            for(int temp:count){
              System.out.print(temp+" ");//第二种
            }
             System .out.println();
        System.out.println(Arrays.toString(count));//第三种
        }
    }
    
    QQ截图20190806180450.png

    由上图可知,数组的第三种遍历方式会把结果用中括号括起来,如果只需考虑结果,不用考虑i的大小,可以采用第三种方法


    • 4.Java实现猜数字游戏
    class GuessNumber{
       public static void main(String[] arg){
           //保存原始数据
           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();
               }
              for(int i=0;i<4;i++){
                 boolean result = contains(guess,org[i]);
                 if(result){
                     //数字存在
                     //判断位置是否相同
                   int index=  indexof(guess,org[i]);
                   if(index==i){
                       countA++;
                   }else{
                       countB++;
                   }
                 }
              }
              if(countA==4){
                  System.out.print("恭喜答对");
                  break;
              }else{
                  System.out.println(countA+"A"+countB+"B");
              }
           }
       }
    //在一个数组里面查找某个对象的索引值
        public static int indexof(int[] val, int obj){
           for(int i=0;i<val.length;i++){
               if(val[i]==obj){
                   return i;
               }
           }
           return -1;
        }
    

    20190806_181459.gif

    2.类和对象

    1.类和对象的定义
    a..类(Contact:)

    • 类是抽象的 ,不实际存在的 描述同一类实物(具有共同的属性和方法)
    • 类就是封装
    • 通常情况下一个文件对应一个类
    • 例如:人类是一个概念 ,它是抽象的 ,不能完成具体的事情
      b.对象
    • 对象:具体的,实际存在的,某一类的实例化(对象都是new出来的)
    • 例如: 小王:是一个对象,它是 具体存在并可以使用的

    c.对象的创建

    对象一旦创建 属性变量有初值

    属性变量 初值
    char ‘ ’
    int/long/short 0
    boolean false
    byte 0
    引用数据 类型:对象类型的变量 null
     Person xw=new Person();
     Person zs=new Person();
    //给对象相应的属性赋值
     xw.name="小王";
     xw.age=20;
     xw.score=86.5f;
     System.out.println(xw.name);
     System.out.println(xw.age);
     System.out.println(xw.score);
    

    Person类里面有 xw和zs两个对象,它们没有任何关系

    d.类和对象的关系

    • java里面除了8大基本类型之外,都是对象(对象都是new出来的)
    • 同一个类可以有多个对象,每个对象 的内存空间都是独立的(对象之间没有任何关系)
    • 例:汽车是抽象的,它是一个类,但兰博基尼确是一个对象,它是具体的,汽车的品牌不止一种,还有其它的,这就类似于>同一个类可以有多个对象
    • Person xw=new Person();
      Person zs=new Person();
      //这里xw 和 zs 是在同一个Person类下创建的两个不同的对象,它们没有任何关系,对xw属性进行操作,不会影响zx

    • 2.创建对象的内存表现
      QQ截图20190806203920.png

    1.类class Person编译后就加载到方法区里面,计算对象要占多少的内存空间,堆里面分配内存空间,然后赋初值,这样对象创建就结束了
    2.xw这个内存在栈上面,对象创建完毕后给xw
    3.动态分配的内存在堆上面,局部 变量的内存在栈上面,方法的内存 就在方法区里面

    • 3.成员方法的声明和访问
      a.方法的定义

    public static final private

    public void test(){
            System.out.print("没返回值 没参数的方法");
        }
        public void test2(){
             
            test();
           //this.test();
        }
        //没有返回值,接受一个参数
        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;
        }
    }
    
    • 4.方法的使用
    • 在类里面可以直接调用自己的方法
    • 在外部必须通过对象来调用
            Random random=new Random();
            random.nextInt();
            Person lisi=new Person();
            lisi.test();
            //匿名对象->作为一个参数传递
            int i= lisi.test6(new int[]{1, 2, 3, 4, 5});
            System.out.print(i);
    
    public void test(){
            System.out.print("没返回值 没参数的方法");
        }
    

    注意!!!
    Person lisi=new Person();
    lisi.test();
    此处调用了test方法,由于该调用在Person类外部,所以它创建了一个lisi对象,如果不创建对象,就无法调用类外部的方法


    • 5.封装
      封装: 访问权限:public private protected
    • public:公共的 想用就用(内部可以用,外部也可以用)
    • private:私有的 只能自己使用 外部无法访问
    • protected:受保护的 外部(同一个包里可以使用)把私有的东西封装起来 不让外部使用, 需要给外部用 就暴露起来

    相关文章

      网友评论

          本文标题:JAVA-(数组,类,属性,对象,public,private,

          本文链接:https://www.haomeiwen.com/subject/ggrwdctx.html