在定义成员变量时可以对其初始化
如果不对其初始化,Java使用默认的值对其初始化。
成员变量有默认值;局部变量没有默认值
使用访问控制符,实现封装
Java 语言中除基本类型之外的变量类型都称之为引用类型
引用就是一个变量或对象的别名(引用的本质是一个对象);指针是一个段内存空间的地址(指向存储一个变量值的空间或一个对象的空间),记住C++里面的引用。
-
栈(一个线程创建一个栈)
- 存放:局部变量,方法
- 先进后出,自下而上存储
- 方法执行完毕,自动释放空间
-
堆(所有线程共享一个堆)
- 存放new出来的对象
- 类里面的所有内容
-
方法区(也在堆,特性跟堆一样):
- 存放:类的信息(单纯的代码)、 static变量、字符串常量等.
- 存放:类的信息(单纯的代码)、 static变量、字符串常量等.
数组:
数组的复制:
System.arraycopy()
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)(可以用于数组src从第srcPos项元素开始的length个元素拷贝到目标数组从destPos项开始的length个位置)
数组内存演示图:
1.开辟空间
2.数组处于默认值(数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个
元素也被按照实例变量同样的方式被隐式初始化)
3.栈指向堆
二位数组的初始化,以及在内存中位置
第二种方式:
多维数组内存分析:
命令行参数:
https://blog.csdn.net/liudongdong19/article/details/79519485
Java.uitl.Arrays
• 打印数组----toString方法。
• 比较两个数组是否相同----equals方法。
• 数组排序----sort方法。
• 数组查找----binarySearch 方法
int[] a = { 1, 2 };
System.out.println(a); // 打印数组引用的值;
//此处的Arrays.toString()方法是Arrays类的静态方法,不是前面讲的Object的toString()方法。
System.out.println(Arrays.toString(a)); // 打印数组元素的值;
-----------------------------------------------------------------
int[] a = {1,2,323,23,543,12,59};
System.out.println(Arrays.toString(a));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
-----------------------------------------------------------------
int[] a = {1,2,323,23,543,12,59};
System.out.println(Arrays.toString(a));
Arrays.sort(a); //使用二分法查找,必须先对数组进行排序;
System.out.println(Arrays.toString(a));
//返回排序后新的索引位置,若未找到返回负数。
System.out.println("该元素的索引:"+Arrays.binarySearch(a, 12));
String(不可变字符序列)
String g1 = "我是你爸爸";
String g2 = "我是你爸爸"; //g1和g2存储在常量池中,而g3new了一个新对象,所以不相等
String g3 = new String("我是你爸爸");
System.out.println(g1 == g2); // true 指向同样的字符串常量对象
System.out.println(g1 == g3); // false g3是新创建的对象
System.out.println(g1.equals(g3)); // true g1和g3里面的字符串内容是一样的
数组的删除
1.基础版
static void removeElement(){
//删除cc
String[] s1 = {"aa","bb","cc","dd","ee"};
System.arraycopy(s1,3,s1,3-1,s1.length-3);
s1[s1.length-1]=null;
for (int i = 0; i <s1.length ; i++) {
System.out.println(i+"--"+s1[i]);
}
}
2.封装版
static String[] removeElement(String[] s1,int index){
//删除指定元素
System.arraycopy(s1,index,s1,index,s1.length-index-1);
s1[s1.length-1]=null;
for (int i = 0; i <s1.length ; i++) {
System.out.println(i+"--"+s1[i]);
}
return s1;
}