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

2019-08-06  本文已影响0人  宁晓鸯

心得体会


今日所学

1.数组的使用

2.类和对象


具体操作

1.数组的使用

//静态
 int[] score = {1, 2, 3};
 String[] names = {"jack", "merry"};
//动态内容添加
 float[] height = new float[5];
        height[0] = 165.5f;
        height[1] = 170f;
  • 如果在定义前就已经确定了数组的内容,那就用静态的定义
  • 如果在定义的时候还不确定数组的具体内容,但是知道数组的大小,就用动态的方式创建
  • 通常局部变量在栈里面被申请
QQ截图20190806203025.png
 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的大小,可以采用第三种方法


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

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

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;
    }
}
  • 在类里面可以直接调用自己的方法
  • 在外部必须通过对象来调用
        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对象,如果不创建对象,就无法调用类外部的方法


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

猜你喜欢

热点阅读