标签:one 方法 对象数组 double 空指针 内存溢出 2-2 虚拟机 bool
成员变量的默认值:
基本类型 | 整数(byte,short,int,long) | 0 |
浮点数(float,double) | 0.0 | |
字符(char) | ‘\u0000’ | |
布尔(boolean) | false | |
数据类型 | 默认值 | |
引用类型 | 数组,类,接口 | null |
成员变量的内存图:
区域名称 | 作用 |
程序计数器 | 程序计数器是CPU中的寄存器,它包含每一个线程下一条要执行的指令的地址 |
本地方法栈 | 当程序中调用了native的本地方法时,本地方法执行期间的内存区域 |
方法区 | 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据 |
堆内存 | 存储对象(包括数组对象),new来创建的,都存储在堆内存 |
虚拟机栈 | 用于存储正在执行的每个Java方法的局部变量表等。局部变量表存放了编译期可知长度的各种基本数据类型、对象引用,方法执行完,自动释放 |
方法也叫函数,是一个独立功能的定义,是一个类中最基本的功能单元
把一个功能封装为方法的目的是,可以实现代码重用,从而减少代码量
(1)必须先声明后使用
(2)不调用不执行,调用一次执行一次
(1)方法声明的位置必须在类中方法外
(2)语法格式:
【修饰符】 返回值类型 方法名(【参数列表:参数类型1 参数名1,参数类型2 参数名, ...... 】){
方法体;
【return 返回值;】
}
(1)实例方法
对象名.实例方法(【实参列表】) //必须通过对象来访问
(2)类方法
类名.类方法(【实参列表】) //推荐 对象名.类方法(【实参列表】) //不推荐
(1)调用时,需要传“实参”,实参的个数、类型、顺序要与形参列表一一对应
如果方法没有形参,就不需要也不能传实参
(2)调用时,如果方法有返回值,可以接收或处理返回值结果,当然也可以不接收,那么此时返回值就丢失了
如果方法的返回值类型是void,不需要也不能接收和处理返回值结果
直接用,不需要加“对象名.”和“类名.”
唯一例外:静态方法中不能直接访问本类的非静态的成员变量和成员方法
1 class Test{ 2 3 static void test(){ 4 System.out.println(""); 5 } 6 void method(){ 7 test(); 8 } 9 10 public static void main(String[] args){ 11 method();//错误 12 test();//正确 13 } 14 }
方法不调用不执行,调用一次执行一次,每次调用会在栈中有一个入栈的动作,即给当前方法开辟一块独立的内存区域,用于存储当前方法的局部变量的值,但方法执行结束后,会释放该内存,称为出栈。如果方法有返回值,就会把结果返回调用处;如果没有返回值,就直接结束,回到调用处继续执行下一条指令
栈结构:先进后出,后进先出
方法的参数传递机制:实参给形参赋值
方法的形参是基本数据类型时,形参值的改变不会影响实参,但是形参地址值里面的数据的改变会影响实参,例如,修改数组元素的值,或修改对象的属性值
(1)声明的位置不同
(2)初始值不同
(3)内存存储位置不同
(4)生命周期
(5)修饰符
格式:
【修饰符】 返回值类型 方法名(【非可变参数部分的形参列表,】参数类型... 形参名){ }
要求:
(1)一个方法最多只能有一个可变参数
(2)如果一个方法包含可变参数,那么可变参数必须是形参列表的最后一个
(3)书写≈
【修饰符】 返回值类型 方法名(【非可变参数部分的形参列表,】参数类型[] 形参名){ }
后面这种定义,在调用时必须传递数组,而前者更灵活,既可以传递数组,又可以直接传递数组的元素
数组是用来存储一组数据的容器,一组基本数据类型的数据可以用数组装,那么一组对象也可以使用数组来装
即数组的元素可以是基本数据类型,也可以是引用数据类型。当元素是引用数据类型时,称之为对象数组
对象数组,首先要创建数组对象本身,即确定数组的长度,然后再创建每一个元素对象,如果不创建,数组元素的默认值就是null,所以很容易出现空指针异常NullPointerException
标签:one 方法 对象数组 double 空指针 内存溢出 2-2 虚拟机 bool
原文地址:https://www.cnblogs.com/daidai66/p/11900752.html