大数据预科班第六天
复习
- 二维数组:数组的数组,每一个元素是一个二维数组。
- 函数:传参,对于基本类型传递的是实际值;对于引用数据类型,传递的是地址
- 函数重载:函数名一致,参数不一致
- 函数的递归:函数自己调用自己,当递归次数比较多的时候,会出现栈溢出错误:StackOverFlowError
面向对象
- 万物皆对象
- 通过对抽取出共同的属性和方法,抽象成一个类。
- 通过new关键字来创建对应类的一个实例(对象);
Person p=new Person();
- 通过对象名.方法名(参数) 来取方法
p.name="张三";
p.age="12";
p.eat();
- 类是对象的概括,对象是类的具体(可以将类看出模板,对象是填完模板后的东西)
- 类是对象的抽象,对象是类的实例化。
- 成员变量、局部变量
1. 定义位置不同:成员变量定义在类内方法外,局部变量定义在方法或者语句内。
2. 作用域不同,成员变量在整个类内,局部变量定义在方法或语句内。
3. 存储位置不同:成员变量存储在堆内存中,并且在堆内存中自动赋初值,局部变量存储在栈中,需要手动初始化。
4. 声明周期不同,成员变量随对象的创建产生而产生,随对象的销毁而销毁。对象用完之后不一定立即回收,而是在不定时的某个时刻被回收。局部变量在方法或者语句执行到的时候创建,方法或者语句执行完之后,立即销毁。
- 构造函数
1. 作用:创建对象并进行初始化
2. 必须与类同名,没有返回值类型
3. 如果这个类没有手动添加构造函数,JVM会自动添加无参构造函数
4. 传入对象时进行初始化:构造函数传入参数
5. 构造函数重载
public Person(){}
public Person(String name){name=name;}
public Person(int age){age=age;}
...
注:类中可以写与类同名的普通方法,但不建议写,因为容易与构造函数混乱 - return
1. 找到正确结果中断函数
2. 出错了,中断函数
- 构造函数写return,用来回避掉一些不符合事实逻辑的问题
eg:
Person(int age){
if(age<0){
return;
}
}
- 变量的就近原则:找最近的变量
- this关键字
1. 代表对象,哪个对象在使用,this就代表谁
2. 注意:在java中所有费静态的属性和方法都必须通过对象调用
3. this虚拟对象,代言人,代表当前对象的因用;
- this语句
this(name,age);
构造函数调用构造函数放在第一行(只能放在第一行,放在下面相当于创建了两个对象)
eg:
public class A{
String name;
String age;
public A(String name){
if(name<0){
return;
}else{
this.name=name;
}
}
//this的错误写法:this语句只能放在构造函数的第一条语句;否则相当于创建了两个对象
public A(String name,int age){
this.age=age;//创建一个对象
this(name);//又创建一个对象
}
//相当于
//this的正确写法
public A(String name,int age){
this(name);
this.age=age;
}
}
- 匿名对象
没有名字的对象称之为匿名对象
1. 当方法调用一次的时候,调用多次的时候将不再是同一个对象
2. 当传递参数的时候
- 局部代码块
- 形式 public Person{ { 代码 } }
- 在函数或者语句内部用{}括起来的代码块
- 作用:可以限制变量的使用范围和声明周期,提高栈内存的利用率
- 构造代码块:构造代码块先于构造函数执行
类里面写个代码块
public class Person{
{
this.age=0;//对
this.name="";//对
}
int age;
String name;
}
public class Person{
{
age=0;//对
name="";//对
age+=6;//错
System.out.println(age);//错
System.out.println(name);//错
}
int age;
String name;
}