IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 面向对象编程的学习笔记(java) -> 正文阅读

[Java知识库]面向对象编程的学习笔记(java)

1.区别

面向过程

优点:容易理解

缺点:代码量越大越难维护

面向对象:

优点:可扩展性强,易维护

缺点:复杂,难理解

2.this关键字

(以下例子和部分截图均来自B站“老男孩IT教育”的视频)

  • main方法中默认把类的实例化对象传给了实例方法(run),在实例方法(run)中用this表示,打印对象c的地址和实例方法中打印this的地址是相同的。如下:

image-20211214152137586.png

  • 另外注意点:先赋值实例变量再调用方法?和?先调用方法再给实例变量赋值?结果是不一样的(效果如下图)。

image-20211214153241961.png

  • this可以帮我们区分实例变量和局部变量:

  • this省略不写时,先找方法里面的局部变量中同名的变量,方法中没有局部变量则默认是找实例变量

image-20211214154528328.png

image-20211214154621651.png

  • 所以,想明确调用实例变量时,应该得加上this更好,代码可读性也更好(易于区分局部变量和实例变量)

  • 另外,如果方法中不定义局部变量,而是在参数中传过来一个跟实例变量同名的变量,没有this时,则这个变量调用的是参数中的变量。(但是加上this的话他就是指向实例变量)

image-20211214155003975.png

3.构造方法

3.1新建构造方法

(用alt+insert?可以选择有参,无参构造方法)

实例化对象时(new 的时候)自动调用的方法

3.2语法特点:

public 同类名(传参(实例变量)){

? this.实例变量 = 参数;

? ...

}

3.3小提示:

(只有构造方法的public之后是不用指定返回类型的)

? java会自动为每个类建一个看不到的无参构造方法(只有编译之后打开class文件才能看到),如果自己建了一个有参构造方法,在new一个对象时,java则不会帮我们新建无参构造方法,可以自己手动创建。

3.4 重载,this()

  • 有参构造方法也是方法,它也可以重载

  • 当两个构造方法有很多相同参数时,可以在一个构造方法中调用另一个构造方法,用 this(参数) 就可以调用该类中其他构造方法。(如下图)

  • 而 this() 则是调用无参构造方法。

image-20211214165422454.png

4.static

4.1使用

  • static修饰的变量是类变量,修饰的方法就是类方法,修饰之后虽然可以用该类的对象来调用,修改其值,但是一般用?类名. 变量名/方法?来调用。(类名.变量名/方法 不能调用非static,会报错)

image-20211214173629918.png

  • tip:它在类加载的时候最先加载,所以它的加载会先于new类对象的加载

4.2总结static的特点

  • 数据共享,每个类对象都共用同一个static修饰的类变量/方法,

  • 属于类,不属于对象

  • 优先于非static变量/方法的加载,所以也优先于对象的产生。

  • static(static方法/static代码块/main方法)中都不能用"this." 来调用变量/方法

  • 在实例化一个类对象时以下三者的加载顺序:

    先加载static静态代码块(静态构造器) 、静态方法、静态变量

    再加载匿名代码块(通用构造器),如下格式:

    {

    ? ...(代码)...

    }

    后加载构造方法。

    tip:①在类加载全过程只执行一次,②和③会在每次new一个对象时执行。(效果如下图控制台输出)

image-20211214201428812.png

  • 因此,在static(静态)的代码块/方法(包括main方法)中不能调用this.非static的部分。(因为"this"关键字是在加载非静态资源的时候才有的,所以在还没加载出来的时候就去调用它肯定会报错)

image-20211214205112658.png

(在method2中则可以通过 类名.method1()或者 this.method1()或者method1()调用method1)

  • 若想在本类中调用static方法,可以直接写方法名,省略"this." 或者 "类名." ,但是想在其他类中的方法调用该类的static方法,则需要在其他类的方法中调用时加上该类的 "类名."(前提是方法有public修饰) 。所以,为了统一,一般在自己类调用自己的static方法时也用"类名." 或者"this."。

image-20211214220858573.png

因为疏忽,上图的

public static void method1(){
    method1();
}

会导致无限递归,不能这样写

5 持续更新中。。。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-12-15 18:08:21  更:2021-12-15 18:10:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:49:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码