引用传递:
数组上引用类型,用new创建,储存在堆里,每次传递的是数组在堆中的地址。
所以更改的都是堆中数组的内容,对数组本身操作不需要返回值
基本数据类型:
而基本数据类型传递都是对原参数空间内的数的复制,存到新开辟的存储空间中。原参数空间值不变
变量:
可以更改的量,方便操作,可以重复使用,有名字的内存空间
保存数据,操作数据
数据类型 变量名 = 值;
静态变量:
类体中使用static修饰
属于类级别变量,该类所有对象,值共享
基本类型
数值型
整数
Byte,short,int,long
浮点
Float,double
字符型
char
布尔型
boolean
引用类型:
类,数组,接口
成员变量:
类体中没有static 修饰
属于对象级别,对象之间变量值不共享,随对象的存在而存在,随对象的消失而消失。其值存储在对象实例中
局部变量:方法中声明的变量,随方法而存在,方法在变量在。
由于方法不调用不执行,调用才执行,并且执行完栈帧销毁,所以方法在栈内存是临
时性的,所以局部变量也是具有临时性的,不适合长期存储
另外局部变量的作用域只能在该方法中
局部变量没有默认值而静态变量和成员变量有默认值
静态变量:随类存在而存在,随类消失而消失。存储在静态区,经过方法访问改变静态变量值时,其值在静态区的值会改变。
静态变量:类名.静态变量名,当前类中可以直接写变量名调用。
成员变量: 对象引用.成员变量名,在成员方法中,调用当前对象中的成员变量可以直接写变量名调用
局部变量:只能在当前方法中,直接写局部变量名进行调用
如果局部变量和静态变量/成员变量同名,则局部变量优先级大于静态和成员
在方法中,可以使用类名区分同名的静态变量和局部变量
在成员方法中,可以使用this.区分同名的局部变量和成员变量
方法:一套命令的集合、局部的需要调用
修饰符列表 返回值类型 方法名 (参数列表) {方法体}
修饰符列表:可以有,可以没有,可以有多个
权限修饰: public protected private不写四选一
其他修饰: static , synchronized
abstract , final二选一...
返回值类型: 11种数据类型中的任意-种,如果不需要返回值则写void。
有返回值,必须有return且必须与数值类型一致。return有终止方法运行的功能
方法名:方法的名字,望文知义,驼峰命名法
参数列表:要做一件事,需要的必备条件,可以作为入参可以有多个,用逗号隔开比如inta, int b, int
重载 overload:
方法唯一性:方法名,参数类型
参数类型不同:个数不同,类型不同。
相同功能记住一个名字 名字相同。参数不同可以自动重载
数组:
数组特性: 内存中连续存储,并且下标从0开始(内存地址偏移)
数组长度一旦确定长度不能更改,也就意味着数组是不能添加和利除的
除非新建一个数组,把原数据复制到新数组中,在复制的过程当中可以进行添加和删除操作
所以数组的查询和更改效率是很高的,但是添加和删除效率较低
数组都有一个内置属性length保存了数组的长度
在java中有一个java.util.Arrays类提供了一-些数组操作
类:描述这一类事物的属性和特征,进行抽象出的模板。
对象就是 类的实现,保存了属性的值
如果对象和对象之间有 相同的属性 相同的值 就使用静态变量
如果对象和对象之间有 相同的属性 不同的值(也可以相同),就使用成员
成员方法:方法中需要使用成员属性的时候定义为成员方法
静态方法:方法中不需要使用成员属性的时候定义为静态方法
构造方法、成员方法:最主要的区别是有无 void 。
构造方法:new 新对象,开新空间时调用的方法,默认参数null,可以设置新的构造方法和参数
this就表示当前{对象}
1、在成员方法或者构造方法中,区分同名的成员变量和局部变量
this.xxx
2、用在构造方法中,重载调用当前类中其他构造方法但是必须写在构造方法第一
this.(xxx)
3、return this 返回当前的对象的内存地
this最简单理解,谁调用就是指向谁的堆地
this 不能出现在静态方法中
super:代表了父类的特征
1.用在成员方法和构造方法中 区分父子类之间的同名的方法和变量
super.xxx 使用父类时的前缀
2.在子类的构造方法中,调用指定的父类的构造方法
super();
super()和this()都必须在第一行,所以不能重复出现
覆写:写一个和父类一样的方法,但是功能不一样 父类无法满足子类需求
1.方法名 返回值 参数列表 和父类一致
‘
2.不能比原方法更低的访问权限
3.不能比原方法有更多的异常
只有成员方法可以覆写