栈 (局部变量)以及基本的数据类型的数据
堆 (new 。。。对象)
代码区 (方法、类)
数据区 (静态变量、常量池)
注意:字符串的创建有两种 new 常量池 不同的!!!常量池的数据只会保存一份!!! == equals 一般是本质就是判断变量的内存地址是否一致 equals() 后面一般需要重写 我们只对对象的内容感兴趣 一般就会对 equals() 和 toString() 进行方法重写
Java里面是传值调用!!! 方法结束后 会对资源(一些变量使用的内存 对象 )进行垃圾回收!!指向的关系 相同的值可以由不同的指向
类相当于就是一种类型 图纸 用类来创建对象 通过类中定义的构造方法 特点:public 类名(){} 没有返回值 里面直接定义即可 传参 this 赋值 产生一个对象的信息 一个类的构造方法可以有多个 supe指代父类 this指代子类自己
三大特性:
封装:
就是外部访问通过公共的方法 内部不能直接通过对象来修改对应的值 权限 安全问题。getAge() setAge()
方法分为:静态方法 和 对象的方法 静态变量 对象变量 静态的东西属于类 对象的对象就是对象的
代码块仅仅在该类的第一个构造方法构造的时候 仅仅加载一次 静态的方法里不能使用对象的成员变量和方法!!! 对象里可以使用静态的方法 因为静态的东西是全局的默认一份。
继承:
子类构造器里第一行默认就是父类的构造器 先有父亲后有儿子
使得子类可以有多个功能属性 可拓展的类 更大的范围了 代码复用性 简洁
多态:
进一步拓展 子列站在不同的角度来看 就会有不同的方法 熊猫 受保护的 动物
可以单继承 多实现!!! extends impliments即可
抽象:
不能被实例化 里面可以有自己的一些成员和方法 子类需要继承抽象类 实现里面的抽象方法 抽象方法一定在抽象内里面
抽象类里面可以没有抽象方法
abstruct class Protected{ public void price(){ ... System.out.println("就是有钱!!!"); } // 后面子类可以直接实现这个抽象类 然后调用方法 }
接口:
接口里面的所有成员都是公开静态常量 public final static
里面所有的方法都是公开抽象方法 默认修饰: public abstruct run(); 注意:抽象方法申明没有方法体
异常:
异常就是错误对象 。 程序可能出错 分为编译性异常和运行时异常 一般我们主要就是运行时的异常
异常一般就是JVM来捕获:
但是他不会帮我们修改啊 我们就需要自己手动修改bug。。。 JVM处理异常 直接遇到错误后中断程序 后面的代码不会再执行了!!!
异常有一个家族 就像所有的类都是Object的子类!!! 这里分为3类
分为几种:
RuntimException 运行时异常(多) 一般不需要处理 遇到了在处理 随机应变
其他Exception 必须要经过手动处理!!!
Error 一般这个我们处理不了 一般就是机器出错 或者就是 系统错误 例如 内存不够加载 代码太多 机器不行 无法运行!!!
异常手工处理:
try{ 可能出错的代码 }catch(Exception e){ 给用户打印较好的提示日志 、给程序员打印错误类型 }
异常处理的目的:
其实就是让程序不再停下来 用户能够更好地体验程序。。。