1,内存
栈内存:局部变量,定义在方法中得变量。例子:arr使用完毕后立即消失。
堆内存:存储new出来得内容(对象或者实体)数组在初始化时,会为存储空间添加默认值。
如 整数:0 浮点数:0.0 布尔类型:false 字符:空字符 应用数据类型:null
每一个new出来的东西都会有一个地址值舒勇完毕会在垃圾回收容器空闲时被回收。
int[]arr 001 栈内存
new int[3[
001 堆内存
静态初始化
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度
格式为 数据类型[] 变量名 =new 数据类型[]{数据1,数据2,数据3,......};
范例 int[] arr = new int[]{1,2,3,4,.....};
简化格式 数据类型[] 变量名 ={数据1,数据2,数据3,......};
范例 int[] arr = {1,2,3,...};
数组操作常见问题
1,索引越界:访问了数组中不存在的索引对应的元素造成索引越界问题。
2,空指针异常:访问的数组已经不指向堆内存的数据,造成空指针异常。
3,null:空值,引用数据类型的默认值,表示不指向任何有效对象。
代码
public class demo01 {
public static void main(String[] args) {
int[] arr = new int [3];
// 越界 现在数组为 0,1,2 无法打印出arr3 错误代码ArrayIndexOutOfBoundsException
// System.out.println(arr[3]);
// System.out.println(arr[2]);
// 空指针异常 错误代码NullPointerException
arr = null;
System.out.println(arr[0]);
}
}
常见操作
遍历
1,正常遍历
public class demo02 {
public static void main(String[] args) {
// 静态数组
int[] a ={11,2,33,44,55};
for (int b=0;b<5;b++){
System.out.println(a[b]);
}
}
}
2,多数据遍历
public class demo02 {
public static void main(String[] args) {
// 静态数组
int[] a ={11,2,33,44,55};
for (int b=0;b<a.length;b++){
System.out.println(a[b]);
}
}
}
最值
public class demo03 {
public static void main(String[] args) {
int[]arr = {12,34,56,78,12};
int max = arr[0];
for (int x = 1;x<arr.length;x++){
if(arr[x]<max) {
max = arr[x];
}
}
System.out.println(max);
}
}
方法
1,方法定义
格式 :public static 方法名(){方法体}
范例:public static inEc(){方法体}
2,方法调用
格式:方法名():
范例:inEc();
注意想定义后调用。
带参数方法定义
格式 public static void 方法名(参数){}
格式 单个 public static void 方法名(数据类型 变量名){}
范例 单个 public static void 方法名(int number){}
格式 多个 public static void 方法名(数据类型 变量名1 数据类型 变量名2){}
范例 多个 public static void 方法名(int a1, int a2){}
调用
格式 方法名(参数);
格式 方法名(变量名/常量值);
范例 getMax(6);
格式 方法名(变量名1/常量值1,变量名2/常量值2);
范例 getMax(5,6);
形参和实参
形参:方法定义的参数,等同于变量定义格式,例如:int numver
实参:方法调用中的参数,不带数据类型,等同于变量或者常量,例如:10 number
参数练习
public class demo07 {
public static void main(String[] args) {
// 常量
getMax(1,2);
// 变量
int a=4;
int b=3;
getMax(a,b);
}
public static void getMax(int a,int b){
if (a>b){
System.out.println(a);
}else {
System.out.println(b);
}
}
}
带返回值方法定义
格式 public static 数据类型 方法名(参数){return 数据;}
范例 public static boolean 方法名(int number){return true;}
范例 public static int 方法名(int a,int b){return 100;}
带返回值方法调用
格式1 方法名(参数);
范例 isE(5); ps演示的是常量也可以是变量
格式2 数据类型 变量名 =方法名(参数);
范例 boole flag = isE(5);
方法注意事项
方法不能嵌套。
void表示五返回值,可以省略return,后面不加数据。
2,==和===区别
1、===:称为等同符,当两边值的类型相同时,直接比较值,若类型不相同,直接返回false;
2、==:称为等值符,当等号两边的类型相同时,直接比较值是否相等,若不相同,则先转化为类型相同的值,再进行比较;
类型转换规则:
1)如果等号两边是boolean、string、number三者中任意两者进行比较时,优先转换为数字进行比较。
2)如果等号两边出现了null或undefined,null和undefined除了和自己相等,就彼此相等。
3,==和equals区别
在string的object里equals是一样的。equals基于==实现。
==
当比较基本数据类型或者对象时。
equals