编程思想,类与对象,它们之间的关系组成等,this关键字

复习

排序

冒泡排序

核心思想:相邻比较,交换位置

选择排序

核心思想:寻找最值位置与交换位置,进行交换

JDK提供的排序

核心思想:快速排序
类:Arrays
提供的方法:
    sort(数组);排序,默认从小到大
    toString(数组);将数组转换为字符串

查找

顺序查找

核心思想:逐个对比

二分查找

核心思想:折半法
注意:
    1.使用二分查找的数组必须是有序的

杨辉三角

1
1   1
1   2   1
1   3   3   1
1   4   6   4   1
1   5   10  10  5   1
...

算法刷题网站

牛客
力扣


今日

编程思想

面相过程

概述:按照事物的发展顺序思考问题
个人短见:就是以流程顺序为主,在代码中就是从上到下,没有变通可言.就如A吃了一碗饭,A放了一个屁,A吃了一碗饭.面相过程就是把其依次用代码表示出来.
​
将大象装进冰箱里
    1.打开冰箱门
    2.放入大象
    3.关闭冰箱门

面相对象

概念:先考虑事物中存在的对象有哪些,再建立对象与对象的关系
个人短见:会对需求进行细致的划分,目的是为以后出现相似的就可以用定义好的类来创建对象.就比如A吃饭放屁.面相对象就会找处其中的A(对象),A会吃饭放屁(方法),如果有姓名性别也会写进去(属性).
​
将大象装进冰箱里
    1.存在的对象有
        冰箱
        大象
    2.关系(事物发展顺序)
        冰箱开门
        放大象
        冰箱关门

对象

概念:万事万物皆对象
    生活中:有具体的指向性,真实存在(昨天下午开的会可以,明天开的会就不可以;张三这个具体的人就可以,男人这种泛指几不行)
    代码中:在代码中存在的事物

概念:多个对象抽取其相同点形成的概念
生活中:概念,如人类,狗类,飞机(没有具体指向,泛指)
代码中:创建对象的模版

类与对象的关系

生活中:先有对象,后有类
代码中:先有类,后有对象
    一个类可以有多个对象,多个对象可以属于同一个类

类的定义与组成

定义

语法:
    访问权限修饰符 class 类名{
    
    }
    访问权限修饰符:
        暂时使用public
    类名:
        1.同一个文件夹下,类名不能相同
        2.大驼峰命名(每个单词的首字母大写)
​
//如:
    //定义一个狗类
    public class Dog{
​
    }
    //定义一个人类
    public class Ren{
​
    }

组成

属性:
    别名:全局变量,成员变量
    如:人的姓名,性别,年龄,肤色等
    作用:描述事物的静态特征
    定义的位置:类中,方法以外
    语法格式:
        访问权限修饰符 数据类型 属性名;
        public int age;
​
    成员变量与局部变量的区别
        成员变量:
            声明在类中,方法外
            有默认值,基本数据类型默认为0;引用数据类型默认为null
            作用域:当前类中
            生命周期:随着所属的对象的创建而生成,随着所属的对象的销毁而销毁
        局部变量:
            方法中
            没有默认值
            作用域:当前代码块中
            生命周期:随着方法调用而生成,随着方法执行完毕而销毁
//定义一个人类
public class Person{
    //定义属性
    public String name;
    public char sex;
}
方法:
    作用:描述事物的动态特征
    位置:类中方法外
    语法格式:
        访问权限修饰符 修饰符 返回值类型 方法名(形参列表){
        方法体
        }
        public void fangFa(int a,double b){
            方法体
        }
        修饰符:暂时不写
    别名:函数,成员函数,成员方法
​
构造函数:
    本质:特殊的方法
    作用:创建该类对象
    位置:类中方法外
    语法:
        访问权限修饰符 构造函数名(形参列表){
            方法体
        }
​
    注意:
        1.构造函数没有返回值类型
        2.构造函数中没有返回值
        3.构造函数名必须与类名一致☆
        4.使用new关键字调用
        5.如果一个类中有多个构造函数,那么这些构造函数绝对是重载关系
        6.一个类一定会有一个构造函数,如果没有定义构造函数,系统会为其提供一个无参构造,如果一个类中有构造函数,系统将不会提供无参构造.
        7.构造函数不能形成递归
​
    名词:
        1.无参构造:构造函数没有形参
        2.有参构造:构造函数有形参
        3.全参构造:构造函数的形参一一对应该类的属性
//定义人类的类
public class Person{
    //定义属性(可不定义)
    public String name;
    String sex;
    //可以不写public
    
    //定义无参构造
    public Person(){}
    //定义有参构造(属性全写就是全参构造)
    public Person(String name,String sex){
    
    }
}

对象的创建与使用

创建

语法:
    数据类型 对象名 = new 构造函数();
    数据类型:就是该对象所属类的类名,就是类名
    面试题:
        Cat cat = new Cat();做了什么
        步骤:
            1.使用new关键字在堆内存中开辟一片空间
            2.赋初值(就是默认值)
            3.执行构造函数中的代码
            4.将堆中的地址赋值给栈中的引用

使用

操作属性

获取属性值
    语法:
        对象名.属性名
修改属性值
    语法:
        对象名.属性名 = 值;

调用方法

语法
    对象名.方法名(实参列表);

this关键字

含义:谁调用this所在的方法,this就表示谁

场景1:当局部变量与成员变量名称相同时,使用this区分

成员变量(属性)
    this.属性名
//类
public class People{
    //属性
    public String name;
    //构造函数
    public People(String name){
        this.name = name;
        //前者指的是类中的属性name
        //后者是形参列表中的自定义变量名name
    }
}
public class People{
    public String name;
    public People(String name){
        name = name;
        //就近原则,第一个name是形参的,第二个也是形参的
    }
}

场景2:在本类方法中使用本类的属性或方法,默认用this调用,此时this可以忽略不写

public class People{
    public String name;
    public String sex;
    public People(String name){
        name = name;
        String a = sex;
        a = this.sex;//和上面一样
    }
}

场景3:在本类构造函数中调用本类其他构造函数

语法:
    this(实参列表);
注意:
    必须在构造函数第一行使用

练习

汤姆抓杰瑞,斯巴鲁说天经地义
    对象:
        汤姆
        杰瑞
        斯巴鲁
    类:
        猫类
            属性:
                姓名
                性别
            方法
                抓(老鼠)
        老鼠类
            属性:
                姓名
        狗类
            属性:
                姓名
            方法:
                说
        环境类
            main
                构造对象与对象的关系
小明坐公交车
    对象:
        小明
        公交车
    类:
        人类
            属性:
                姓名
            方法:
                上车
                坐车
                下车
            class Person{
                //属性
                //访问权限修饰符 数据类型 属性名;
                public String name;
                
                //构造函数
                //访问权限修饰符 构造函数名(形参列表){
                //  方法体
                //}
                public Person(){
                }
                public Person(String name){
                    this.name = name;
                }
                //方法
                //访问权限修饰符 返回值类型 方法名(形参列表){方法体}
                public void upCar(Car car){
                    System.out.println(name+"上"+car.type);
                }
                public void sitCar(Car car){
                    System.out.println(name+"坐"+car.type);
                }
                public void downCar(Car car){
                    System.out.println(name+"下"+car.type);
                }
            }
        车
            属性:
                类型
            方法:
                开
            class Car{
                public String type;
                public Car(){}
                public Car(String type){
                    this.type = type;
                }
                public void on(){
                System.out.println(type+"正在启动");
                }
            }
        环境类
            main
                创建小明
                创建公交车
                小明.上车
                小明.坐车
                车开
                小明.下车
                Person p = new Person("小明");
                Car c = new Car("公交车");
                
                p.upCar(c);
                p.sitCar(c);
                c.on();
                p.downCar(c);
定义一个矩形类
    要求:
        属性有,长,宽
        方法有,面积(那个矩形调用,就计算那个矩形的面积),周长(那个矩形调用,就计算那个矩形的周长)
        创建两个矩形,分别是长1,宽5.长2,宽3.
        计算长2宽3的面积,计算长1宽5的周长
    对象:
        矩形1:长1宽5
        矩形2:长2宽3
    类:
        矩形类
            属性
                长
                宽
            方法
                周长
                面积
                
            class Rect{
                public int len;
                public int wid;
                public Rect(){
                
                }
                public Rect(int len,int wid){
                    this.len = len;
                    this.wid = wid;
                }
                public int zhouChang(){
                    return (this.len + this.wid) * 2;
                }
                public int mianJi(){
                    return this.len * this.wid;
                }
            }
        环境类
            main
                创建矩形1
                Rect r1 = new Rect(1,5);
                创建矩形2
                Rect r2 = new Rect(2,3);
                矩形2.面积();
                int mj = r2.mianJi();
                System.out.println(mj);
                矩形1.周长();
                int zc = r1.zhouChang();
                System.out.println(zc);
​

作业

1,整理笔记
​
2,如何定义一个类?
    访问权限修饰符 class 类名{}
3,类的组成有哪些?有什么作用?定义的语法格式是什么?在哪定义?
    属性 方法 构造函数
4,如何创建一个对象?
    new 构造函数();
5,如何使用对象调用属性与方法☆
    
6,定义两个类,描述如下:
    1)定义一个人类Person: 
    1.1)定义一个方法sayHello(),可以向对方发出问候语“hello,my name is XXX”
    1.2)有三个属性:名字、年龄、体重 
    2)定义一个PersonCreate类: 
            2.1)创建两个对象,分别是zhangsan,33,173;lishi,44,174 
            2.2)分别调用对象的sayHello()方法。
​
7,创建一个Address 类,描述如下:
 该类有两个属性,
    1)String 类型的address,表示地址;2)String 类型
    的zipCode,表示邮编。
    2)定义成员方法:show方法,显示 address和邮信息
       例如:
          地址是: xxx
          邮编是:xxx
    3)定义AddressTest测试类,
         给成员变量赋值和测试成员方法
         
8,定义一个游戏类,
    包括游戏的属性包括:游戏名,类型,大小,星级, 介绍等,
    可以调用方法输出游戏的介绍。
    
9,编写 Car 类,属性有品牌(brand)和颜色(Color),
 定义 show 方法,打印所有属性。(还没有学习封装,现在都给成员变量不加入private)
 
10,编程题--->定义对应的类,提供成员变量和成员方法,在对应的测试类中测试
        成员方法--自己分析可以有返回值或者没有返回值直接输出都行
    1.学生事物
        属性:姓名,年龄,性别,发型
        行为:吃饭,抽烟,打游戏,学习Java
    2)手机事物
        属性:品牌,颜色,价格,内存
        行为:打电话,拍照,聊天
    3)键盘录入长方形的长和宽,长方形事物的行为 计算长方形的周长和面积,
    
    请使用面向对象的方式分别定义对应的类,然后再对应的xxxTest类中进行测试;分别完成上面三个小题
    
11,Student s = new Student();做了那些事情?
​
12,this的含义是什么?三种使用场景是什么?注意什么?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值