JavaSe 0717
数组续讲
数组:可以存储多个数据类型一致的元素,且JAVA中数组一旦定义长度就固定了
可以存储基本数据类型,也可以存储引用数据类型(数组,类,接口)
二维数组:就是元素为一维数组的数组
定义语法:动态初始化:
int [][] arr=new int[3][2];
3,表示二维数组的长度即三个一维数组
2,表示一维数组的长度
举例: int [][]arr=new int[3][];
System.out.println(arr[0]);
输出为 null
int [][]arr=new int[3][2];
System.out.println(arr[0]);
输出为 一维数组对应的地址
还有就是 new 一个新数组会覆盖原来的地址
静态初始化:
int[][] arr=new int[][]{{},{},{}};
简写 int[][]arr={{},{},{}};
二维数组的遍历:
10.fori
递归
递归的概念:在方法中调用方法本身就叫做递归
递归注意事项:递归要有出口,不然就是死递归(死递归就会造成栈溢出 stack over flow error)
递归次数不宜过多 (亦会死递归)
递归体现的是拆分合并的思想
所以会对递归次数进行限制,满足一定次数 return
调用方法时,有时要进行参数传递
区别:基本数据类型作为参数传递 属于值传递,就是把实参的值传过去,形参改变不影响。
引用类型作为参数传递,传递的地址值,形参会改变实参。
举例如下:
可以发现在 change 数组这种引用类型形参会改变实参,但是基本数据类型在方法调用结束后,会发生生弹栈。
面向对象
面向对象的特征:
封装(encapsulation)
继承(inheritance)
多态(polymorphism)
事物由属性和功能组成 事物---------class 类
属性 成员变量
功能 成员方法
定义类就是定义类的成员(成员变量和成员方法);
成员变量和局部变量的区别:
局部变量:定义在方法中的变量或方法声明中的变量(形参),属于方法,随方法调用或完成产生与消失。局部变量没有默认值,必须赋值才能使用,存储在栈内存。
成员变量:类中方法外的变量,属于对象,也叫实例变量,随着对象创建而产生,随着对象回收而消失,成员变量有默认值,存储在堆内存。
注意:(1):局部变量和成员变量名字重名时,遵循就近原则。即先在方法内找,找不到再去成员范围内找。再找不到报错。
(2):多个类可以并列的定义在一个Java文件当中,但文件中 public只能给其中带有入口的一个类中。
(3)采用
对象名.成员变量名=值,这种方式给成员变量设置值时,不能排除一些不合理数据例如年龄200岁,这时会加 private 这个权限修饰符,可以修饰成员变量,也可以修饰成员方法,被修饰的对象只能在本类中。
为了解决这个问题:提供 public 设置和获取的方法,让外界通过调用方法来给成员设置和获取方法。
public 公共修饰符可以修饰类,成员变量,成员方法
protected 出了包就访问不到了
default 缺省的
private 私有修饰符可以修饰类内方法,成员变量
当调用set方法时,形参的名称和成员变量的名称重名了,把成员变量就致盲了。这时候为了区别成员变量和局部变量的,可以使用一个关键字 this.举例说明:
private String name;
private int age;
public void setName(String name) {
this.name = name;
}
public void setage(int age){
this.age=age;
}
哪个对象调用这个方法,方法中的 this 就代表这个对象
快速生成:ALT+INSERT,选getter and setter
匿名对象:
就是没有名字的对象,一般应用在调用方法,仅调用一次的情况下,或者匿名对象作为实际参数传递。
构造方法
构造方法概述和作用:
构建对象,并对对象成员进行初始化
构造方法和格式特点:
构造方法的方法名和类名相同,没有返回值连 void都没有;
构造方法的作用就是用来对类进行实例化。
也可以借助有参构造完成类的实例化。
举例:
Student student=new Student();
Student student=new Student(name:"张三");
Student student=new Student(name:"张三",age:23);
注意:一旦手动给出了有参构造,那么系统将不再提供默认的无参构造方法。
创建一个对象的步骤: student s=new studen();
步骤如下:(1):加载Student.class文件进内存
(2):在栈内存为s开辟空间
(3):在堆内存为学生对象开辟空间
(4):对学生对象的成员变量进行默认初始化
(5):对学生对象的成员变量进行显示初始化
(6):通过构造方法对学生对象的成员变量赋值
(7):学生对象初始化完毕,把对象地址赋值给s变量