面向对象
一、就近原则
二、this的作用
- 区分成员变量和局部变量
三、构造方法
- 方法名与类名完全一致
- 没有返回值类型,连void都没有
- 不能有return
- 如果没写任何构造方法,虚拟机就会给我们加一个默认的空参构造方法
- 如果已经定义了任意一种构造方法,系统将不提供默认的构造方法
- 无参和全部参数的构造方法一般都要写,标准JavaBean这俩都要有
- 构造方法可以重载
- 创建对象时,虚拟机会自动调用构造方法,作用是给成员变量进行初始化
四、标准JavaBean
- 用来描述一类事物的类
五、Java内存分配
- 堆、栈、方法区
六、数据类型
-
基本数据类型
- 数据值是存储在自己的空间中
- 赋值给其他变量,也是赋的真实的值,其他变量修改并不会影响自己
-
引用数据类型
- 数据值是存储在其他空间中,自己空间存储的是地址值
- 赋值给其他变量,赋的是地址值
七、this的本质
- 代表方法调用者的地址值
八、成员变量与局部变量
- 位置不同
- 前者有初始值,后者没有
- 前者在堆中,后者在栈中
- 前者随着对象创建而存在,消失而消失;后者随方法调用而存在,随运行结束而消失
- 整个类有效,方法中有效
字符串
一、 String注意点
- 字符串的内容是不会发生改变的,它的对象在创建后不能被更改
- 利用字符数组和字节数组创建字符串对象
- StringTable(串池):当使用双引号直接赋值时,系统会检查该字符串在串池中是否存在,不存在——创建新的,存在——复用
二、字符串比较
- **==**号的作用:
- 基本数据类型比较的是数据值
- 引用数据类型比较的是地址值
- boolean equals():比较字符串的具体值
- boolean equalsIgnoreCase():比较字符串的具体值,并忽略大小写(英文状态下)
- 键盘录入得到的字符串是通过new出来的
静态static
一、静态变量(类变量)
- 被该类所有对象共享
- 不属于对象,属于类
- 随着类的加载而加载,优先于对象存在
- 推荐用类名调用
二、静态方法(类方法)
- 多用在测试类和工具类中
- 推荐用类名调用
- 静态方法中,只能访问静态
- 非静态方法可以访问所有
- 静态方法中没有this关键字
三、main方法
- main方法是类方法
- 虚拟机通过类名直接调用main方法
四、静态代码块
- 类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次
- 完成类的初始化,例如:对类变量的初始化赋值
五、单例设计模式
-
确保一个类只有一个对象
-
饿汉单例模式写法
- 把类的构造器私有
- 定义一个类变量记住类的一个对象
- 定义一个方法,返回对象
public class A { private static A a = new A(); private A() {} public static A getInstance() { return a; } }
-
懒汉单例模式写法
- 把类的构造器私有
- 定义一个类变量用于存储对象
- 提供一个类方法,保证返回的是同一个对象
public class B { private static B b; private B() {} public static B getInstance() { if (b == null) b = new B(); return b; } }
继承
一、特点
- 子类能继承父类的非私有成员(成员变量,成员方法)
- 子类的对象是由子类、父类共同完成的
二、权限修饰符
修饰符 | 在本类中 | 同一个包下的其他类 | 任意包下的子类 | 任意包下的任意类 |
---|---|---|---|---|
private | √ | |||
缺省 | √ | √ | ||
protect | √ | √ | √ | |
public | √ | √ | √ | √ |
protect:可以任意包下的子类访问,但不是说子类对象可以访问
三、Object类
- Java中所有类都默认继承该类
四、注意事项
- Java是单继承的,不支持多继承,但支持多层继承