二维数组:
回顾下一维数组的定义方式: int[] arr =new int[3];
二维数组的定义格式:int[][] arr=new int[3][2]; //创建一个二维数组,该数组中有3个一维数组,每一个数组中有2个元素。
System.out.println(arr);//打印二维数组 打印出[[I@....(因为是二维)
System.out.println(arr[0]);//直接打印二维数组中的角标0的一维数组 打印出一维数组名的哈希值 但是若int[][] arr=new int[3][]时会打印null;
System.out.println(arr[0][0]);//直接打印二维数组中角标0的一维数组中角标为0的元素打印出初始化值0
二维数组的内存图解过程:
二维数组的第二种定义方式:int[][]arr=new int[3][];
可以分别对二维数组中的每一个小数组进行初始化。
Arr[0]=new int[2];
Arr[1]=new int[1];
Arr[2]=new int[3];
System(实际上是一个类).out.println(arr.length);//可以打印二维数组的长度。其实就是一维数组的个数
System.out.println(arr[1].length);//打印二维数组中角标为1的一维数组的长度
Int[][] arr={{3,1,7},{5,8,2,9},{4,1}};//另外一种初始化方式
遍历如上二维数组的方式:
For(int x=0;x<arr.length;x++)
{
For(int y=0;y<arr[x].length;y++)
{
System.out.pritln(arr[x][y]+”,”) //遍历二维数组
}
}
面向对象(指挥对象做事情就可以):
对象其实就是该类实物实实在在存在的个体。
类与对象之间的关系?
类:事物的描述。
对象:该类事物的描述。
代码示例:
Class Car
{
Int num;
String color;
Void run()
{
System.out.println(num+“...”+color);
}
}
Class CarDemo
{
Public static void main(String[] args)
{
Car c=new Car();//c就是一个类类型的引用变量,指向该类的对象
c.num=4;
C.color=”red”;
C.run();//要使用对象中的内容可以通过对象成员来完成调用
}
}
类中的成员分:成员函数(行为)和成员变量(属性)。定义类其实就是在定义类中的成员。类中如果想要独立运行,里面必须要有main函数。
Car c=new Car();//内存分析过程(堆内存默认有初始化值,为0 (int类型)null(string类型))
凡是见到一个new,就意味着创建了一个新的实体。
成员变量和局部变量的区别:
成员变量属于局部变量吧(个人的理解,对吗/说的不对)
1.成员变量定义在类中,整个类中都可以访问。局部变量定义在函数,语句,局部代码块中,子在所属的区域有效。
2.成员变量存在于堆内存的对象中,而局部变量存在于栈内存的方法中。
3.成员变量随着对象的创建而存在,随着对象的消失而消失。局部变量随着所属区域的执行而存在,随着所属区域的结束而释放。
4.成员变量都有默认的初始化值,局部变量没有默认的初始化值。
栈里没有找到变量,就会去堆里面找。
匿名对象(了解即可)
没有名字的对象,其实就是定义对象的简写格式。
New Car();
Car c=new Car();
C. run();//以上2句代码可以等价于new Car().run();
1. 当对象对方法仅进行一次调用的时候,就可以简化为匿名对象。(因为new一次就创建了一次实体,2次就变成了2个实体)
没有所指的时候,第一个对象已经变垃圾了。
2. 匿名对象可以作为实际参数进行传递。
Car c1=new Car();
Show(c1);//以上2句代码可以等价于show(new Car());
基本数据类型参数传递图解(没有听讲解的时候大致已经做对了结果,但是过程分析不够透彻,仍需努力):
Class Demo1
{
Public static void main(String[] args)
{
Int x=3;
Show(x);
System.out.println(“x=”+x);
}
Public static void show(int x)
{
X=4;//其实后面有一句默认的代码return;
}
}
Class Demo2
{
Int x=3;
Public static void main(String[] args)
{
Demo d=new Demo();
d.x=9;
Show(d);
System.out.println(d.x);
}
Public static void show(Demo d)
{
D.x=4;
}
}
Demo1和Demo2的内存图解如下:
封装(隐藏对象的属性和实现细节,对外仅提供公共的访问方式):
私有仅仅是封装的一种体现。在对象中私有变量,这样仅本类中可以访问,其他类是不能访问的。setAge()和getAge()已经成为规范了,对私有化(private)成员变量。(默认就有2个方法对应)
函数、类、框架均是封装的体现。一般书写格式setXxx getXxx(从第二个单词首字母都大写)