Java第二天基础语法

本章内容

目录

方法

数组

面向对象 

抽象类概述

接口概述 

包的概述 

导包的概述

内部类概述 

 总结


  • 方法

概述:假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹(植物大战僵尸)。发射炮弹的动作需要编写100行的代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序会变得很臃肿,可读性也非常差。为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可以了。上述过程中,所提取出来的代码可以被看作是程序中定义的一个方法,程序在需要发射炮弹时调用该方法即可

简单来说:方法就是完成特定功能代码块

在很多语言中都有函数的定义

函数在JAVA中被称为方法

 

方法格式解释:

修饰符比较多,后面会详细介绍,目前是public static

返回值的类型:用于限定返回值的数据类型。

方法名一个名称:为了方便我们调用方法

参数类型:限定调用方法时传入参数的数据类型

参数名 是一个变量,接收调用方法时传入的参数

方法体:完成功能的代码。

return: 结束方法以及返回方法指定类型的值

返回值:程序被return带回的结果,返回给调用者。

 

方法注意事项

  • 方法不调用不执行
  • 方法与方法是评级关系,不能嵌套定义
  • 方法定义的时候参数之间用逗号隔开
  • 方法调用的时候,不用再传递数据类型
  • 如果方法有明确的返回值,一定要有return带回一个值

没有明确返回值的函数调用:

其实就是void类型的方法调用。只能单独调用

方法重载

概述: 

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可

特点:

与返回值类型无关,只看方法名和参数列表

在调用时,虚拟机通过参数列表的不同来区分同名方法

  • 数组

数组概述

需求:现在需要统计某公司员工的工资情况,例如计算平均工资、找到最高工资等。假设该公司有80名员工,用前面所学的知识,程序首先需要声明80个变量来分别记住每位员工的工资,然后在进行操作,这样做会显得很麻烦。为了解决这种问题,Java就提供了数组供我们使用。 那么数组到底是什么呢?有什么特点呢?通过上面的分析:

我们可以得到如下两句话: 数组是存储多个变量(元素)的东西(容器) 这多个变量的数据类型要一致

概念:

存储在同一种数据类型多个元素的集合,也可以看成一个容器。

数组即可以存储基本数据类型,也可以存储引用数据类型

数组的定义格式

  1. 格式1:数据类型[] 数组名;
  2. 格式2:数据类型 数组名[];
  3. 注意:这两种定义做完了,数组中是没有元素值的。                    
  4.  如何对数组的元素进行初始化呢?

数组初始化概述:

Java中的数组必须先初始化,然后才能使用。

所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值

数组初始化方式:

动态初始化:初始化时只指定数组长度,由系统为数组分配初始值

静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

Java程序在运行时,需要在内存中分配空间,为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。 

  • 栈:存储局部变量
  • 堆:存储new出来的东西
  • 方法区
  • 本地方法区
  • 寄存器。

数组操作常见的两个小问题:数组索引越界、空指针异常。 

二维数组概述

我们传智播客的Java基础班每个班有很多个学生,所以,可以用数组来存储,而我们又同时有很多个Java基础班。这个也应该用一个数组来存储。如何来表示这样的数据呢?Java就提供了二维数组供我们使用。 由此可见:其实二维数组其实就是一个元素为一维数组的数组。 

其实通俗地来讲,二维数组就是存储一维数组的数组

 

 

面向对象 

  1. 面向对象思想

我们来回想一下,这几天我们完成一个需求的步骤:首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再代码体现。一步一步去实现,而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。 在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。 那么什么是面向过程开发呢? 面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。 面向过程的代表语言:C语言

需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了,这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装功能类似的封装在一起。这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面向对象的思想。接下来我们看看面向对象到底是什么?

面向对象思想概述:面向对象基于面向过程的编程思想。

面向对象思想特点:

是一种更符合我们思想习惯的思想 可以将复杂的事情简单化 将我们从执行者变成了指挥者 角色发生了转换。

面向对象开发:

就是不断地创建对象、使用对象,指挥对象做事情。 

面向对象设计:其实就是在管理和维护对象之间的关系

面向对象特征:封装、继承、多态

类:是一组相关属性和行为的集合。 

对象:是该类事物的具体体现

 

 

 

 

 

 

封装概述

是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。 

好处:

隐藏实现细节,提供公共的访问方式 提高了代码的复用性 提高安全性

封装原则:

不需要对外提供的内容都隐藏起来。 把属性隐藏,提供公共方法对其访问

Private关键字

是一个权限修饰符。 可以修饰成员(成员变量和成员方法) 被private修饰的成员只在本类中才能访问

Private最常见的应用

成员变量用private修饰 提供对应的getXxx()/setXxx()方法 一个标准的案例的使用

this关键字

this:代表所在类的对象的引用。

构造方法

概述:给对象数据进行初始化。 

构造方法格式

方法名与类名相同 没有返回值类型,连void都没有 没有具体的返回值

构造方法注意事项

如果你不提供构造方法,系统会给出默认构造方法

如果你提供了构造方法,系统将不再提供

构造方法也是可以重载的

 

 

Static关键字

可以修饰成员变量和成员方法

static关键字特点

  1. 随着类的加载而加载 优先于对象存在
  2. 被类的所有对象共享 这也是我们判断是否使用静态关键字的条件
  3. 可以通过类名调用
  4. static关键字注意事项
  5. 在静态方法中是没有this关键字的 静态方法只能访问静态的成员变量和静态的成员方法 

静态的内存图:静态的内容存在于方法区的静态区

 

 

 

 根据位置和声明不同。可以分为局部代码块、构造代码块、静态代码块、同步代码块

局部代码块:在方法中出现;限定变量生命周期,及早释放,提高内存利用率。

构造代码块:在类中方法外出现:多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行

静态代码块

总结:不断的根据基础语法,看视频,做至少100到java编程题,将基础语法搞扎实,并且在B站上把视频(别人的思维给其搞透彻

面向对象下

继承概述

多个类中存在相同属性和行为时,将这些内容抽取到单独一个类中,那么多个类无需再定义这些属性和行为,只要继承那个类即可。 通过extends关键字可以实现类与类的继承 class 子类名 extends 父类名 {}   单独的这个类称为父类,基类或者超类;这多个类可以称为子类或者派生类。 有了继承以后,我们定义一个类的时候,可以在一个已经存在的类的基础上,还可以定义自己的新成员

继承的好处:

  • 提高了代码的复用性。
  • 提高了代码的维护性。
  • 让类与类之间产生关系,是多态的前提。

 只有一个父类,但是多层继承

 super:代表父类存储空间的标识

 

 

 

 

 

final关键字

 

 

多态的好处:

* 提高了程序的维护性(由继承保证)

提高了程序的扩展性(由多态保证) 

多态的弊端:不能访问子类特有功能

抽象类概述

回想前面我们的猫狗案例,提取出了一个动物类。并且我们在前面也创建过了动物对象,其实这是不对的。     为什么呢?因为,我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。 所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物。同理,我们也可以推想,不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给出具体体现,而是应该给出一个声明即可

回想前面我们的猫狗案例,提取出了一个动物类。并且我们在前面也创建过了动物对象,其实这是不对的。     为什么呢?因为,我说动物,你知道我说的是什么动物吗?只有看到了具体的动物,你才知道,这是什么动物。 所以说,动物本身并不是一个具体的事物,而是一个抽象的事物。只有真正的猫,狗才是具体的动物。同理,我们也可以推想,不同的动物吃的东西应该是不一样的,所以,我们不应该在动物类中给出具体体现,而是应该给出一个声明即可。在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类

 

接口概述 

继续回到我们的猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不。但是,现在有很多的驯养员或者是驯兽师,可以训练出:猫钻火圈,狗跳高,狗做计算等。而这些额外的动作,并不是所有猫或者狗一开始就具备的,这应该属于经过特殊的培训训练出来的,对不。所以,这些额外的动作定义到动物类中就不合适,也不适合直接定义到猫或者狗中,因为只有部分猫狗具备这些功能。所以,为了体现事物功能的扩展性,Java中就提供了接口来定义这些额外功能,并不给出具体实现,将来哪些猫狗需要被培训,只需要这部分猫狗把这些额外功能实现即可

 

 

 

包的概述 

 

 

与python中的库及其库的使用有很大的相似之处。 

导包的概述

 

 

内部类概述 

类定义在其他类的内部,这个类就被称为内部类。 举例:在类A中定义了一个类B,类B就是内部类。 内部类的访问特点: 内部类可以直接访问外部类的成员,包括私有。 外部类要访问内部类的成员,必须创建对象

 

 

 总结

根据所有基础知识,写代码时,一个一个将代码的注释啥的都标注出来,全部都将其搞定。

慢慢地都会把基础知识给其吃透,完全吃透。搞成一个好的编程思想。全部都将其搞定都行啦的样子与打算。

做到:想到知识点,都清楚基础语法是什么,怎么用。以及怎么实现基础语法的。全部都将其搞定都行啦的样子与打算。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

big_matster

您的鼓励,是给予我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值