二维数组
数组中的数组。
格式1
int[ ] [ ] arr =new int[3] [2];
一维数组中存储的是二维地址的首地址。二维数组初始化值都为0,一维数组初始化值为null,但是定义了二维数组后,赋值为二维数组的首地址。直接打印出来(地址值)显示为对应的哈希值。
格式2
int [ ][ ] arr = new int [3][ ];
arr[0] = new int [2];
arr[0] = new int [1];
arr[0] = new int [3];
先定义一维数组,再对二维数组分别赋值。
二维数组的长度
System.out.println(arr.length); //打印二维数组的长度,其实就是一维数组的长度。
System.out.println(arr[0].length); //打印二维数组中角标为0的数组的长度。
格式3
int [][] arr = {{3,1,7},{5,2,1,6},{2,3}};
二维数组的遍历
public static void bianli(int[][] arr)
{
for(int x=0;x<arr.length; x++)
for(int y = 0; y<arr[x].length; y++)
{
System.out.print(arr[x][y]);
}
}
使用二重循环可遍历二维数组。
面向对象
描述事物即是类:包含属性(数据),行为(功能)。
对象是类的实例,在java中是用new来创建的。
定义
定义类就是定义类中的成员。成员:成员变量(属性),成员函数(行为)
Car c = new Car( );
定义一个Car类的对象。
调用对象中的内容,可以通过对象 . 成员的形式来完成调用。
c.run( ); //对成员函数的操作。
c.num = 4; //对成员变量的操作。
创建对象的内存图示
注意:堆中是用new建立的数组、对象。堆中对象的null(整数)的初始值为0,而字符的初始值为null。
成员变量(对象)和局部变量(方法)的区别
1.
成员变量定义在类中,整个类都可以访问
局部变量定义在函数语句的局部代码块中,只在所属的区 域有有效
2.
成员变量存在于堆内存的对象中
局部变量存在于栈内存中的方法中(main)(方法有点像C中的函数)
3.
成员变量随着对象的创建而存在,随着人对象的消失而消失
局部变量随着所属区域的执行而存在,随着所属区域的结束而释放
4
成员变量都有默认的初始化值(null 0 false 0.0 ‘’)
局部变量没有默认的初始化值
类类型参数
public static void show(Car c)
{
c.num = 3;
c.color = "red"
}
跟其他类型的参数差不多啦。类类型的变量一定指向对象,要不就是null。
匿名对象(了解)
没有名字的对象
Car c = new Car();//有名的对象
New Car();//匿名对象
new A(); 匿名对象 其实就是定义对象的简写格式
new A().fun(); 当对象对方法仅进行一次调用的时候,就可以简化成匿名对象
show(new A); 匿名对象可以作为实际参数进行传递
封装
是指隐藏对象的属性和实现细节 仅对外提供公共访问方式。
好处:
1.将变化隔离
2.便于使用
3.提高重用性
4.提高安全性
封装原则: 将不需要对外提供的内容都隐藏起来,把属性都隐藏 提供公共方法对其访问
private: 私有 是一个权限修饰符 用于修饰成员
私有的内容只在本类中存放
注意:
私有仅仅是封装的一种体现而已
私有就是封装 但封装不仅仅是私有 函数也是封装
class Demo1
{
public static void main(String[] args)
{
Person per = new Person();
per.setAge(8);
int k = per.getAge();
System.out.println(k);
}
}
class Person
{
private int age;
public void setAge(int a)
{
age = a;
}
public int getAge()
{
return age;
}
}