方法
方法定义格式:修饰符 返回类型 方法名称(参数)
static 有:可以用类.方法
无:不可以用类.方法,需要创建对象,用对象.方法
修饰符:public private 等
方法的重载: 定义:同一个类中,某方法允许存在一个以上的同名方法,只要参数的类型、数量和顺序不同就可以。
作用:屏蔽了同一功能的方法,参数不同所导致的方法名不同的差异。
注意:方法重载和方法返回值类型无关,只是一般要求返回值类型相同,也可以不同。
java JVM
jvm划分:(逻辑分区)人为地根据不同内存空间的存储特点以及存储的数据来划分。
程序计数器:当前线程所执行的字节码的行号指示器。
本地方发栈:为虚拟机使用的native方法服务。
java虚拟机栈:描述java方法执行的内存模型,每个方法被执行的时候都会创建一个栈帧,用于存储局部变量表、操作栈、动态链接、方法出口等。同样的,当方法调用完毕,栈帧就被销毁了。
java堆:被所有线程共享的一块内存区域,在虚拟机启动是创建。所有的对象实例以及数组都要在堆上分配。(使用new关键字,就表示在堆中开辟一块新的存储空间)
方法区:线程共享的内存区域。存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码数据等。
数组
初始化:一旦初始化完成,数组的长度就确定了,不能改变,除非重新初始化。也就是说数组是定长的。
静态初始化:
特点:自行设置初始化值,而数组的长度由系统决定。
写法:数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,...};
举例:int[] nums = new int[]{1,2,3,4};
简单写法:int[] nums = {1,2,3,4}; //但要注意,简单写法中必须声明和初始化同时进行,不能先声明再初始化。
动态初始化:
特点:自行设置数组的长度,而每一个元素的初始值都由系统决定。(不同类型的)
数组异常:NullPointerException空指针异常(空引用):当数组还未初始化就直接操作数组。
ArrayIndexOutOfBoundsException数组索引越界异常
数组拷贝:可以支持任意类型的数组元素拷贝操作。因为经常使用到,所以SUN就直接把数组元素拷贝操作存放到JDK的System类中。
public static native void arraycopy(Object src,int srePos,Object dest,int destPos,int length);
Object是任何类的基类,可以表示任意数据类型。
该方法没有方法体,使用了native修饰符(本地方法,也就是说在底层使用c/c++语言实现,java直调用编写好的功能)
更多功能可以查阅API文档
main方法
main方法是用static修饰的,所以可以直接用所在类调main来使用。
public static void main (String[] args)
在底层JVM通过类.main(实参)
main方法的String数组参数,其实是暴露给程序运行者的,用此来与程序传递信息。
封装
自行封装,建立一个封装类,在类中写static方法
数组工具类Arrays