Java内存分析

Java内存分析

栈;堆;方法区(方法区属于堆);   对象:数据管理方式,本质是内存块,包含很多数据。

1. 栈: 后进先出,方法执行的内存模型

2. 堆: 存储创建好的对象和数组(也是对象)   new  ;

3. 方法区: 存储类代码信息、常量等。

 

命名规范:

1)、 项目名全部小写

2)、 包名全部小写

3)、 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写。

如:public class MyFirstClass{}

4)、 变量名、方法名首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写。

如:int index=0;

       public void toString(){}

5)、 常量名全部大写

 

this  是当前对象(但是还没有创建呢  一旦创建就赋值给他)。 创建对象过程如下:

 

Java包(package)机制作用

管理类的手段,遇到同名的类,但是不同作用,可以用不同的包(类似Python的库机制)包含,再调用。

常用包:

Java.lang:   核心包,包含Math,String,System,Thread等,不需要导入,直接使用。

Java.awt:    窗口包。

Java.net:     网络包。

Java.util:     普通工具包。

Java.io:       IO流,输入输出包。

面向对象三大特性: 继承、封装、多态

方法重载: 类内实现;

方法重写(覆盖):不同类(继承)的实现。

类构造函数里面 首句必定是 super()

封装: 高内聚,低耦合。尽量将细节在内部,然后外部调用简单些。(类似电视,内部电路,外部遥控器)

多态:

多态: 必须有方法重写,继承,父类引用指向子类对象【父类类型 a = 子类对象】若父类没有这个方法,则不是方法重写,就没有多态了。

static:不可以修饰局部变量;表示强调属性只有1个,与对象无关。

final:表示只能赋值1次,若是数组对象,则地址不可变,元素值可变。(局部 or  全局,全局需要创建类对象才可以使用)

Java:值传递,没有地址传递;但是本质和其他语言有相同之处。例如对于数组对象,值传递的是它的地址。变相地址传递。

声明数组: type[] arr;(推荐使用)    type arr[]。

type[] arr = new type[长度];

多态内存分析:

包含抽象方法的类 一定是 抽象类。不可以new 抽象类。

接口 最抽象:只包含 常量、抽象方法。一个类允许多个接口实现,接口允许多继承。

接口中:【常量 默认就是public  static final 前缀 】【方法 默认就是 public abstract】【接口需要全部重写方法】

与类设置一样,只有第一个 同文件名的 接口是public的。

callback / hook 【前面知道怎么写,后面知道怎么写,但是中间不知道怎么写】

1.   写入一个父类实现,通过不同的子类重写,从而实现不同的功能。

2.   写入一个抽象类,抽象方法,来实现。抽象类继承必须实现抽象方法(必须实现抽象方法)。

3.   写入一个接口,接口继承实现,必须重写

 

内部类:

1. 成员类:   静态内部类     非静态内部类(从属于外部的对象,需要先new创建外部对象,再 new内部类;内部类没有静态函数等 因为非静态内部类从属于外部对象)。

2. 匿名类:   定义创建一起。  new  classname(){  ... }

非静态内部类

静态内部类 : 在外部类内,调用静态类,只需要new 就可以调用静态内部类实例。

                      在外部类外,需要划红线 形式;而与非静态内部类区别,非静态内部类从属于外部实例对象。

try catch finally   

在catch这里,越是父类的异常越往后放。

泛型作用:<> 属性各按各的;方法按照父类的。

泛型有4种: 泛型擦除(即父与子都没有泛型object类型)、父类擦除(父没有泛型,子有泛型 object类型)、子类指定类型(子无泛型,父是指定类型并且必须是父指定类型,子指定类型无所谓)、泛型(子泛型>=父泛型)。     

只有这4个,其他的没有,完全按照这个标准来,其他的包含其中,or 子类擦除 没有XXX因为 子类泛型 >= 父类泛型

泛型没有多态【父类引用指向子类对象,子类型继承父类型】;  擦除(泛型擦除/父类擦除,引用对象时,如果不写object类型,则警告,若写了object类型,则其他类型不可以,即:“擦除不会类型检查”)。

  =》 泛型擦除

泛型继承:子类类型(泛型) >= 父类类型(泛型,不是具体类型)  ###############重要核心##########################

三个点 表示可变参数

子类泛型需要大于等于  父类泛型(不是具体类型)

泛型中 ? 的使用:【实现类似多态的功能】

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值