【Java学习】数组的使用|类的定义|对象|匿名函数|封装

心得感悟

今天的内容也大多都是概念文字,要消化和领悟还是要靠自己多多思考,还好在我多次百度+问老师后,我终于还是理解了。虽然我学习东西没有其他人那么快,多花点时间还是能赶得上的。复习完回过头再看今天的内容,又觉得简单了许多。在计算机这条学习路上,我的心真是起起落落落落落落落落落落落落起,但世上无难事,只怕有心人,还是加油吧!


1. 目的

  • 一、加深数组和类的使用熟练度
  • 二、了解类和对象
  • 三、了解对象的内存表现
  • 四、了解成员方法
  • 五、通过知识点讲解和编程,领悟C语言和Java的区别

2. 内容简概

  • ⼀、数组的两种定义⽅式
  • ⼆、数组定义之后在内存中的表现形式
  • 三、数组的基本使⽤
  • 四、遍历数组的三种⽅式
  • 五、使⽤数组实现猜数字
  • 六、类和对象的概念
  • 七、类的定义
  • 八、对象的创建
  • 九、创建对象的内存表现
  • 十、成员⽅法的声明和访问
  • 十一、匿名对象
  • 十二、封装

3. 具体内容

  • ⼀、数组的两种定义⽅式

① 静态:定义时直接赋值

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

②动态:先定义,内容可以动态添加

float[] height = new float[5];
height[0] = 165.5f;
height[1] = 170f;
  • ⼆、数组定义之后在内存中的表现形式
其实有一点俄罗斯套娃的感觉
  • 三、数组的基本使⽤
Random r = new Random();
int[] count = new int[10];   
for (int i = 0;i < 10;i++){
    count[i] = r.nextInt(100);
}
  • 四、遍历数组的三种⽅式
        //数组输出方式1
        for (int i = 0;i < count.length;i++){
            System.out.print(count[i]+" ");
        }
        System.out.print("\n");
        //数组输出方式2
        for (int temp: count){
            System.out.print(temp + " ");
        }
        System.out.print("\n");
        //数组输出方式3
        System.out.println(Arrays.toString(count));
三种方式的数组输出效果
  • 五、使⽤数组实现猜数字

1.代码示范

class GuessNumber{
    public static void main(String[] args){
        //保存原始数字
        int[] org = new int[4];
        //保存用户猜测数字
        int[] guess = new int[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--;
            }else{
               org[i] = temp;
            }
        }
        //排序
        Arrays.sort(org);
        System.out.println(Arrays.toString(org));

        //开始游戏
        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){
                    //数字存在
                    //判断位置是否相同
                    int index = indexOf(guess,org[i]);

                    if (index == i){
                        //数字位置都相同
                        countA++;
                    }else {
                        countB++;
                    }
                }
            }
            if (countA ==4){
                System.out.println("恭喜答对!");
                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;
    }

    //自己写一个方法判断某个数组里是否包含某个值
    public static boolean contains(int[] val,int obj) {
        for (int i = 0; i < val.length; i++) {
            if (val[i] == obj) {
                //重复了
                return true;
            }
        }
        return false;
    }
}

2.程序运行效果

Java版猜数字游戏.gif

  • 六、类和对象的概念

简单的说,类就是一个概念,是抽象的。而对象是具体的某一个事物。举个例子,我们说的“人类”就是一个类,它是我们规定的一个概念,而“王小明”就是一个对象,他是一个具体的事物。

一个类中可以有多个方法,方法外的变量有“类变量”和“成员变量”,方法中的变量有“局部变量”,“成员变量”一般定义在类的最上面。而方法操作对象,一个类中可以有多个对象。类其实就是封装,把方法对象打包起来。

变量类型 定义
局部变量 在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁
成员变量 成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问
类变量 类变量也声明在类中,方法体之外,但必须声明为static类型
  • 七、类的定义

通常情况下,一个文件夹对应一个类,以下为定义类的格式:

修饰符  class  类名{
        这个类的一些属性:成员变量
        这个类的功能:方法
}

修饰符用来定义类、方法或者变量,通常放在语句的最前端。在此只讲解访问控制修饰符,类型及定义如下:

类型 定义
public 公有的,对所有类可见
private 私有的,只能自己使用,外部无法访问(同一类中可见)
protected 受保护的,对同一包内的类和所有子类可见
default (即默认,什么也不写)在同一包内可见,不使用任何修饰符
  • 八、对象的创建

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

1. 声明:声明一个对象,类名+对象名,如下:

public class Puppy{
    public static void main(String args[]){
          Puppy myPuppy;   //对象声明
    }
}

2. 实例化:使用关键字new来创建一个对象。
3. 初始化:使用new创建对象时,会调用构造方法初始化对象。

      myPuppy = new Puppy(); //创建并初始化对象
数据类型 char float double int long short byte boolean
初始化的值 ' ' 0.0 0.0 0 0 0 0 false
  • 九、创建对象的内存表现
如图
  • 十、成员⽅法的声明和访问

1. 方法的定义 public static final private
语法格式:
    权限修饰符 返回值类型 方法名(参数类型 参数名) {
      // 方法
      // 返回值
    }

public void test(){
        System.out.println("没有返回值,没有方法");
    }
    public void test2(){
        //在自己的类里面可以调用这个类里的所有资源
        //this.test();不建议这么写
        test();
    }

2. 方法的访问

//没有返回值 接收一个参数
    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;
    }
}
  • 十一、匿名对象

1. 定义:没有名字的对象,如:

class TestClass{
      new test().age = 10;  //匿名对象
      public int test(){
            int age;
      }
}

2.匿名对象的用法
①只使用对象一次
②作为参数传递

show(new Car());
  • 十二、封装

1. 定义:把私有的东西包装、隐藏起来,不让外部使用
2. 优点:
①良好的封装能够减少耦合。
②类内部的结构可以自由修改。
③ 可以对成员变量进行更精确的控制。
④ 隐藏信息,实现细节。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容