类就是一类对象的统称。对象就是这一类具体化的一个实例。
用类类型创建对象的过程,称为类的实例化
类的成员:1、字段、属性、成员变量:在类的内部方法的外部。
Person person = null;//person不指向任何对象。
引用变量 一定是在栈上吗? 不一定。在不在栈上取决于是不是局部变量。
引用 不能指向引用——》 一个引用指向另一个引用所指的对象。
一个引用可以指向多个对象吗?不可以,只能保存一个对象的地址。
构造方法
public String name;普通成员变量
public static int a;静态成员变量
1、访问的时候,建议通过类名.静态成员变量进行访问
2、静态的好处是,不需要实例化对象
3、(类变量)静态的成员变量,不存在于对象里面,在方法区。
public void sleep() { //普通成员方法 //static int b = 9; System.out.println(name+"睡觉!!"); } public static void func() { //静态成员方法 //sleep(); System.out.println("静态方法!"); } }
count调用是不需要对象的,不指向对象也可以调用
所有的普通变量和普通的成员变量需要通过对象的引用来进行调用。静态则不需要。
成员变量可以不初始化,他们所对应的值就是默认值。
在普通的成员方法当中,是否可以定义一个静态的成员变量? 不可以
1、sleep()方法 要被调用? Person p = new Person(); p.sleep();
2、静态的怎么调用?类名就可以。
静态方法的内部,不可以调用普通的成员方法。为什么?
静态方法本身的调用是不依赖于对象的。
普通方法中可以调用静态方法
Person person = new Person();//实例化一个对象
什么是封装?
语法层次上:字段和方法 都被private修饰,此时就说 把这个字段 或者 这个方法 进行了封装。
封装的意义:
1、安全
2、降低了对类的使用成本。
实例化对象一共需要两步:
1,为对象分配内存。
2、调用合适的构造方法。意味着构造方法不止一个。
构造方法:是一种特殊的方法,没有返回值,方法名称和类名是一样的
this 代表当前对象的引用。
this:1、调用属性 2、调用方法 3、调用构造方法
void 代表无返回值类型
代码块:本地代码块,实例代码块/构造代码块,静步代码块、同步代码块
本地代码块:方法内部定义的代码块{}
代码块的出现,只是为了在合适的时候处理有些数据。
代码块的执行顺序:静态——实例——构造方法
静态代码块优先实例代码块执行,实例代码块的执行先于构造方法。
1、什么是类和对象,怎么来的?
2、什么是构造方法、分装、this?
3、代码块的前后执行顺序是怎样的?
复杂度:(衡量一个算法的效率的):
时间复杂度:算法中的基本操作的执行次数,为算法的时间复杂度。
递归的时间复杂度 = 递归的次数 * 每次递归之后的操作次数
空间复杂度:临时占用存储空间大小的量度 ,空间复杂度算的是变量的个数。