一丶方法
1.1 方法:
方法概述就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。 当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象。(方法就是完成特定功能的代码块)
方法的定义格式:
修饰符 返回值类型 方法名 (参数列表){
代码(方法体)… return ; }
方法的注意事项:
方法不调用不执行
方法与方法是平级关系,不能嵌套定义
方法定义的时候参数之间用逗号隔开
方法调用的时候不用在传递数据类型
如果方法有明确的返回值,一定要有return带回一个值
1.2方法的重载:
方法重载概述:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
方法重载的特点:返回值类型无关,只看方法名和参数列表
在调用时,虚拟机通过参数列表的不同来区分同名方法
二丶数组
1.1数组
数组的概述:数组是存储多个变量(元素)的东西(容器)
这多个变量的数据类型要一致
数组的概念:
数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
数组既可以存储基本数据类型,也可以存储引用数据类型。
数组的定义格式:
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[];
注意:这两种定义做完了,数组中是没有元素值的。
1.2数组的初始化:
数组的初始化概述:Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
初始化方式:
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。
三丶java 内存分配
Java 程序在运行时,需要在内存中的分配空间。为了提高运算效率,就对空间进行了不同区域的划分,
因为每一片区域都有特定的处理数据方式和内存管理方式。
栈 存储局部变量
堆 存储new出来的东西
方法区(面向对象部分讲)
本地方法区(和系统相关)
寄存器(给CPU使用)
三丶二维数组
3.1 二维数组概述
Java基础班每个班有很多个学生,所以,可以用数组来存储,而我们又同时有很多个Java基础班。这个也应该用一
个数组来存储。如何来表示这样的数据呢?Java就提供了二维数组供我们使用。 由此可见:其实二维数组其实就是
一个元素为一维数组的数组。
二维数组的定义格式:
1).数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组 n表示每一个一维数组的元素个数
例:int[][] arr = new int[3][2];
2).数据类型[][] 变量名 = new 数据类型[m][];
例: int[][] arr = new int[3][]
3).数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}}; 简化版格式: 数据类型[][] 变量名 = {{元素…},{元素…},{元素…}}; 举例: int[][] arr = {{1,2,3},{4,6},{6}};
四丶面向对象
1. 面向对象思想概述
当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。可随着需求的更改,功能的增多,发现
需要面对每一个步骤很麻烦了,这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,
进行不同的封装,功能类似的封装在一起。这样结构就清晰了很多。用的时候,找到对应的类就可以了。这就是面
向对象的思想。接下来我们看看面向对象到底是什么?
面向对象思想概述以及特点面向对象是基于面向过程的编程思想
特点:
- 是一种更符合我们思想习惯的思想
- 可以将复杂的事情简单化
- 将我们从执行者变成了指挥者角色发生了转换
面向对象开发 就是不断的创建对象,使用对象,指挥对象做事情。 面向对象设计 其实就是在管理和维护对象之间
的关系。 面向对象特征 封装(encapsulation) 继承(inheritance) 多态(polymorphism)
2 .类与对象关系
类:是一组相关的属性和行为的集合 对象:是该类事物的具体体现 举例: 类 学生 对象 班长就是一个对象
类:可以理解为构造对象的一个蓝图或者模版,是抽象的概念 对象:是以类为模型创建的具体实例,是对类
的一种具体化。
3.成员变量和局部变量的区别
在类中的位置不同
成员变量 类中方法外
局部变量 方法内或者方法声明上
在内存中的位置不同
成员变量 堆内存
局部变量 栈内存
生命周期不同
成员变量 随着对象的存在而存在,随着对象的消失而消失
局部变量 随着方法的调用而存在,随着方法的调用完毕而消失
初始化值不同
成员变量 有默认的初始化值
局部变量 没有默认的初始化值,必须先定义,赋值,才能使用。
4.形式参数
基本类型作为形式参数
引用类型作为形式参数
class Demo { public int getSum(int a,int b) { return a + b; } }class Test { public static void main(String[] args) { Demo d = new Demo(); System.out.println(d.getSum(10,20)); } }
5. 匿名对象
匿名对象:就是没有名字的对象。
是对象的一种简化表示形式
匿名对象的两种使用情况
对象调用方法仅仅一次的时候
作为实际参数传递
6. 封装概述
封装概述
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
隐藏实现细节,提供公共的访问方式
提高了代码的复用性
提高安全性。
封装原则:将不需要对外提供的内容都隐藏起来。把属性隐藏,提供公共方法对其访问。
7.private关键字
private关键字:是一个权限修饰符。
可以修饰成员(成员变量和成员方法) 被private修饰的成员只在本类中才能访问。
private最常见的应用:
把成员变量用private修饰
提供对应的getXxx()/setXxx()方法
一个标准的案例的使用
1:这个时候写例子,局部变量名称不要和成员变量名称一致
2:private仅仅是封装的一种体现,类和方法其实也是封装体
8. this关s键字*
this:代表所在类的对象引用
记住:方法被哪个对象调用,this就代表那个对象
9.构造方法作用概述
给对象的数据进行初始化
构造方法格式
方法名与类名相同
没有返回值类型,连void都没有
没有具体的返回值
构造方法注意事项
如果你不提供构造方法,系统会给出默认构造方法
如果你提供了构造方法,系统将不再提供
构造方法也是可以重载的,虽然构造方法没有返回值,但是也可以写一个return,在最后写return;这种做法在任何void类
型的方法最后都是没有问题的。
10.类的成员方法
方法具体划分:
根据返回值
有明确返回值方法
返回void类型的方法
根据形式参数
无参方法
带参方法
一个基本类的标准写法
类
成员变量
构造方法
无参构造方法
带参构造方法
成员方法
getXxx()
setXxx()
给成员变量赋值的方式
无参构造方法+setXxx()
带参构造方法
11.类的初始化过程
Student s = new Student();在内存中做了哪些事情? 加载Student.class文件进内存
在栈内存为s开辟空间 在堆内存为学生对象开辟空间 对学生对象的成员变量进行默认初始化 对学生对象的成员变量进行显示初始化 通过构造方法对学生对象的成员变量赋值 学生对象初始化完毕,把对象地址赋值给s变量
12.static
可以修饰成员变量和成员方法 static关键字特点 随着类的加载而加载 优先于对象存在 被类的所有对象共享 这也是我们判断是否使用静态关键字的条件 可以通过类名调用 static关键字注意事项 在静态方法中是没有this关键字的 静态方法只能访问静态的成员变量和静态的成员方法
13.静态变量和成员变量的区别
所属不同静态变量属于类,所以也称为为类变量 成员变量属于对象,所以也称为实例变量(对象变量) 内存中位置不同 静态变量存储于方法区的静态区 成员变量存储于堆内存 内存出现时间不同 静态变量随着类的加载而加载,随着类的消失而消失 成员变量随着对象的创建而存在,随着对象的消失而消失 调用不同静态变量可以通过类名调用,也可以通过对象调用 成员变量只能通过对象名调用