IDEA
main:psvm
输出:sout
Ctrl Alt space:补全
Ctrl /:单行注释,再来一次取消
Ctrl shift /:多行注释,再来一次取消
Ctrl Alt L:格式化
数组
数组格式:
1)数据类型[] 变量名
int[] arr:定义了一个int类型的数组,数组名是arr。
2)数据类型 变量名[]
int arr[]:定义了一个int类型的变量,变量名是arr数组。
数组动态初始化:
初始化时只指定数组长度,由系统为数组分配初始值。格式如下:
数据类型[] 变量名 = new 数据类型[数组长度];
数组静态初始化:
初始化时指定每个数组元素的初始值,由系统决定数组长度。
格式如下:
数据类型[] 变量名 = new 数据类型[] {数据1,数据2,……};
数据类型[] 变量名 = {数据1,数据2,……};
数组在初始化时会为存储空间添加默认值。
1)整数:默认值0
2)浮点数:默认值0.0
3)布尔值:默认值false
4)字符:默认值是空字符
5)引用数据类型:默认值是null
Java中的内存分配:
1)栈内存:存储局部变量,定义在方法中的变量,使用完毕,立即消失。
2)堆内存:存储new出来的内容(实体,对象),每一个new出来的东西都有一个地址值,使用完会在垃圾回收器空闲时被回收。
(关于内存分配的视频P61-P64)
索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题。
空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常。
方法
方法(method):是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集。方法必须先定义后调用,否则程序将报错。
方法定义:方法必须先创建才可以使用,该过称为方法定义。格式如下:
public static 数据类型 方法名(数据类型 变量名1,数据类型 变量名2,……){
//方法体
return 数据;
}
方法调用:方法创建后并不直接运行,需要手动使用后才执行,该过程称为方法调用。格式如下:
数据类型 变量名 = 方法名(变量名1/常量值1,变量名2/常量值2,……);
形参和实参:
1)形参:方法定义中的参数,等同于变量定义格式,由数据类型和变量名构成。
2)实参:方法调用中的参数,不带数据类型,是一个常量值或一个变量名。
方法的注意事项:
1)方法不能嵌套定义。
2)void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据。
方法的参数传递:
1)基本类型:对于基本数据类型的参数,形式参数的改变,不影响实际参数的值。
2)引用类型:对于引用类型的参数,形式参数的改变,影响实际参数的值。
方法重载:
方法重载指同一个类中定义的多个方法之间的联系,满足下列条件的多个方法相互构成重载:
1)多个方法在同一个类中。
2)多个方法具有相同的方法名。
3)多个方法的参数不相同,类型不同或者数量不同。
重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式。
重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判断两个方法是否相互构成重载。
重载的作用(上网搜的)
- 方法重载的主要好处就是不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数表,即参数的个数或(和)数据类型可以不同,调用的时候,虽然方法名字相同,但根据参数表可以自动调用对应的函数。如果我们使用reflector去查看微软写的.net的基类库的话,我们可以发现他使用很多的方法重载,这样我们在调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器会明确的知道我们调用了哪一个方法。重载比if…else要优雅,减少了if…else部分的代码。
- 重载的最直接作用是方便了程序员可以根据不同的参数个数,顺序,类型,自动匹配方法,减少写过个函数名或方法名的重复步骤。
类和对象
对象:是能看得到摸得着的真实存在实体。
对象的属性:对象具有的各种特征,每个对象的每个属性都拥有特定的值。
对象的行为:对象能够执行的行为。
类:类是对现实世界中一类具有共同属性和行为的事务的抽象。是Java程序的基本组成单位。
类的特点:
1)类是对象的数据类型。
2)是具有相同属性和行为的一组对象集合。
类和对象的关系:
类是对象的抽象,对象是类的实体。
类的定义:
属性:在类中通过成员变量来体现(类中方法外的变量)。
行为:在类中通过成员方法来体现(和前面的方法相比去掉static关键字)。
类的定义步骤:
1)定义类。
2)编写类的成员变量。
3)编写类的成员方法。
对象的使用:
1)创建对象:
格式:类名 对象名 = new 类名();
2)使用对象:
使用成员变量格式:对象名.变量名
使用成员方法格式:对象名.方法名()
(对象内存图 P103-105)
成员变量和局部变量:
1)成员变量:类中方法外的变量。
2)局部变量:方法中的变量。
封装:
private关键字:
1)是一个权限修饰符。
2)可以修饰成员(成员变量和成员方法)。
3)作用是保护成员不被别的类使用,被 private 修饰的成员只在本类中才能访问。
针对 private 修饰的成员变量,如果需要被其他类使用,提供相应的操作:
1)提供“ get 变量名()”方法,用于获取成员变量的值,方法用 public 修饰。
2)提供“ set 变量名(参数)”方法,用于设置成员变量的值,方法用 public 修饰。
this关键字:
1)this修饰的变量用于指代成员变量。
方法的形参如果与成员变量同名,不带this修饰的变量指的是形参,而不是成员变量。
方法的形参没有与成员变量同名,不带this修饰的变量指的是成员变量。
2)this用于解决局部变量隐藏成员变量的问题。
3)this代表所在类的对象引用。
方法被哪个对象调用,this就代表哪个对象。
封装概述:
是面向对象三大特征之一(封装、继承、多态)。是面向对象编程语言对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界是无法直接操作的。
封装原则:
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
成员变量private,提供对应的getXxx()/setXxx()方法。
封装好处:
1)通过方法来控制成员变量的操作,提高了代码的安全性。
2)把代码用方法进行封装,提高了代码的复用性。
构造方法:
构造方法是一种特殊的方法。
作用:创建对象。
格式:
public class 类名{
修饰符 类名(参数){
}
}
功能:主要是完成对象数据的初始化。
注意事项:
1)构造方法的创建
如果没有定义构造方法,系统将给出一个默认的无参数构造方法。
如果定义了构造方法,系统将不再提供默认的构造方法。
2)构造方法的重载
如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法。
3)推荐的使用方式
无论是否使用,都手工书写无参数构造方法。
标准类制作:
1)成员变量使用private修饰。
2)构造方法
提供一个无参构造方法。
提供一个带多个参数的构造方法。
3)成员方法
提供每一个成员变量对应的getXxx()/setXxx()。
提供一个显示对象信息的show()。
4)创建对象并为其成员变量赋值的两种方式:无参构造方法创建对象后使用setXxx()赋值。使用带参构造方法直接创建带有属性值的对象。