jvm 内存划分
寄存器:内存和cpu之间
本地方法栈:jvm调用了系统的功能
方法和数据共享:运行的时候class文件进入的地方
方法栈:所有方法运行的时候进入内存
堆:存储的是容器和对象
数组常见的异常有数组索引越界异常,空指针异常
二维数组:
int arr[][]=new int[3][4];
int arr[][]=new int[3][];
int arr[][]={{1, 2},{3,4,5},{6,7,8,9}};
内存
int arr[][]=new int[3][2]
表示开辟三块大空间,每个大空间又分为两个小空间
打印数组:
一维数组五种
Arrays.toString(arr)
for(int n:arr){
System.out.printin(n+",")};
for(int i=0;i<arr.length;i++){
System.out.printin(arr[i]+",")};
System.out.println(Arrays.asList(arr));
Arrays.asList(arr).stream().forEach(s->System.out.println(s));
二维数组三种
for(int n=0;n<arr.length;n++){
for(int i=0;i<arr[n].length;i++){
System.out.print(arr[n][i]+" ");}
System.out.println();
}
for(int[] a:arr){
for(int j:a){
System.out.print(j+" ")}
System.out.println();
}
for(int i=0;i<arr.length;i++){
System.out.println(Arrays.toString(arr[i]));
}
三维数组同理也是三种,留作自行练习
四.方法
1.引入
为什么要有方法:提高代码的可复用性
什么是方法:完成功能的特定代码块
2.语法格式
访问修饰符:方法允许被访问的权限范围public protected private 无修饰符
返回类型 void 任何数据类型
方法名:同变量名规则,小写;多个单词时第一个首字母小写,其余首字母大写
参数列表:参数类型加参数名
3.方法调用:使用对象名去调用方法,静态方法是使用类名去调用
方法包含在类中,调用时先创建方法的类的对象,然后通过对象去调用方法
类名 对象名=new 类名();
对象名.方法名();
4.注意
方法参数是基本类型,传递的是值,包含string类型,形式参数的改变不影响实际参数
方法参数是引用类型,传递的是内存地址值,形参的改变会影响实参。
方法的定义只能在类内部,不能嵌套定义,即方法和方法之间需要并列,不能在主方法里直接定义方法
方法的返回值是void,方法中可以省略return
方法一般在主方法前面定义
调用返回值为void的方法时,不能写在输出语句中
5.方法重载:
在一个类中,方法名相同,参数列表不同,与方法的返回值类型无关
参数列表不同分为两种,参数个数不同,参数类型不同,参数顺序不同
重载看方法名和参数列表,与其他无关
6.可变参数列表
public void sum(int....n){}
可变参数一定在参数列表的最后
可以将数组传递给可变参数列表
方法名相同,一个参数是可变参数,另一个参数是一维数组,他们不属于重组
可变参数列表所在的方法,是最后被执行访问的