- 类与对象 1.面向对象与面向过程的区别
- 面向过程:需要关注程序的每一步
- 面向对象:--找对象帮你做事--结果--开发效率高
优缺点
面向过程
优点 : 执行效率高
缺点 : 门槛高、操心
面向对象
优点 : 开发效率高、市场占有率高
缺点 : 执行效率不高、门槛低
- 类(class)
1.人类抽象出来的,概念类型,具有相同的属性和行为的一类客观事物
类 = 属性 + 行为
2. 语法 [修饰符] class A {// 类体}
3. 对象:客观存在的事物,万物皆对象
4. 空指针异常 没有任何指向,NULLPointException
5. 引用:引用是一个变量,概念:变量存储在堆内存中对象的地址
6. 引用与对象有什么区别:
new 对象是堆内存中开辟的一块空间,用来存储对象的数据
引用变量在赋值的时候,传递的是引用里面存储的地址
2.构造方法(特殊的方法)
a. public Dog(形参列表){//方法体},没有返回值,也没有void,方法名必须和类名相同 b. 构造方法在new对象的时候自动调用,不需要手动调用 c. 构造方法是用来初始化对象的,可以传参数,也可以重载 d. 当类中没有定义构造方法,系统会提供一个无参构造方法 e. 当类中定义了任何构造方法,系统将不再提供无参构造 f. 属性的默认值在new无参构造的时候自动赋值
3.可变参数:举例说明
//题目:计算2个数的和、3个数的和、5个数的和...n个数的和
public class Text {
public static void main(String[] args) {
int a = sum(2, 5, 4, 8, 7, 4);
System.out.println(a);
}
public static int sum(int... n) {
int num = 0;
for (int i = 0; i < n.length; i++) {
num += n[i];
}
return num;
}
}
- 封装
- 私有化属性,公开方法
- private (只有当前类可以访问)私有化属性
- public (同一个项目中所有类可以访问)公开方法,两个方法,get读取/得到,set写入/修改
- 封装目的:a.保证数据的合理性 b. 控制属性的读写
2.this关键字
- 保存当前对象地址的引用
- this什么时候用: 当局部变量与成员变量同名时,找成员变量在成员变量前面加this
- this什么时候可省,当成员变量与局部变量不重名的时候可以省略
3.this()的使用(详细请看java实例)
- 用在构造方法里面
- this()调用构造函数必须出现在构造函数的第一行,否则报错
- 构造函数里面只会调用一次this()
- 作用:构造方法链
4.String 类的方法
- length() 获取字符串的偿付
- 返回值 int
5.static
- 概念:静态的,用来修饰属性、方法、代码块
- 作用:不需要new 对象,直接通过类名调用
- static修饰的属性、方法时所有对象共有的
a. static关键字的使用:
- 只能用来修饰成员变量,不能修饰局部变量
- static修饰的是成员变量,没有static修饰的是实例变量
- 静态变量可以通过类名直接访问,不需要通过对象引用访问
- 静态变量在类加载时初始化一次,所有对象共享改变量
- 实例变量必须通过对象引用访问,每new一次都会在堆内存空间中开辟一个新的空间存储
- 静态变量是不需要通过对象引用调用的,所以不会出现空指针异常
b. 静态修饰方法- 静态方法是存在方法区,随着类加载的时候初始化
- JVM是通过类名找到静态的方法,不是通过实例对象的引用找的,跟对象没关系
- 实际执行的时候找的是类名
- 静态的只能调用静态的方法和属性,无法调用实例的方法和属性
- 实例的方法和属性可以调用静态的也可以调用实例的
c. 静态代码块 语法 static {//代码块}- 特点:类加载的时候自动调用一次
- 一个类允许有多个静态代码块 作用:类初始化
d. 实例代码块- {//代码块}
- 作用:对象的初始化
- 实例化对象之前都会执行实例代码块中的代码
- 如果一个类中既有静态代码块又有实例代码块,静态代码块先执行,实例代码看后执行