JVM内存简单解析、构造、重载、this

JVM内存解析

手机:
    特征:
        名字、价格、颜色 
        
    行为:
        打电话
        发送消息
        打游戏
        
Java的JVM的内存可以分为这几个区:堆区、栈区、方法区、PC寄存器、本地方法栈

堆区

1.存储的全部是对象,每个对象都包含一个与之对应的class信息。(class的目的是得到操作指令)
2.jvm只有一个堆区被所有线程共享,堆中不存放基本数据类型和对象引用,之存放对象本身。

栈区

1.栈中只保存基础数据类型的对象和自定义对象的引用(不是对象),对象都存放在堆区中
2.每个栈区中的数据(原始类型和对象引用)都是私有,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区

方法区

1.方法区又叫做静态区,和堆一样,被所有线程共享,方法区包含所有的class和static变量。
2.方法区包含的都是在整个过程中永远唯一的元素,如:class,static变量

构造方法

构造方法作用就是对类进行初始化。如果你没有定义任何构造方法,
程序会为一创建一个不带任何参数的构造函数,那么你产生类的对象
时候只能用不带参数的方法,如 class Phone{}  没有任何构造。

构造方法就是与类同名的那个方法,作用初始化

<1>语法格式
    class 类名(){
        类名(形参列表){
            构造方法体;
        }
    }
    
    例如:
        class Person{
            Person(){
            }
        }
        
<2>注意事项
    构造方法的名称与类名称完全相同,大小写一致
    构造方法没有返回值类型,连void都不允许有
    当创建一个新的对象的时候,会自动调用构造方法来进行对象中成员变量的初始化工作。
    
<3>默认构造
    当自定义类中没有声明任何形式的构造方法时,则编译器会自动添加一个无参构造,
    空的构造方法,叫做默认/缺省构造方法:比如  Person(){}
    
    但是类中只要定义了构造方法,则编译器不再提供任何形式的构造方法

方法的重载

<1>基本概述
    在同一个类中,方法名相同参数列表不同的方法之间构成重载关系(Overload);
    
<2>方法重载的表现形式
    方法重载的主要体现在:参数的个数不同、参数的类型不同、参数的顺序不同
    方法名称要相同,
    形参变量名与返回值类型无关,但是建议返回值类型最好相同。
    
    判断方法重载的核心:判断调用方法是否能加一区分。
    
    参考:java.io.PrintStream类中print()和println()
    
<3>作用
    方法重载的意义在于:调用者只需要记住一个方法名就可以调用各种不同的版本,从而可以实现多种类型数据的处理。

this关键字

对于构造方法来说,this关键字就代表当前正在构造的对象;
对于成员方法来说,this关键字就代表当前正在调用的对象;

原理:
    由于不同的对象调用同一个方法时,在方法体的内部使用this进行记录,因此this代表的对象也就不同,
    当访问成员变量时候默认解析为:this.成员变量名,其中this.相当于汉语中“我的”,因此this的不同导
    致果的不同
    
使用场合:
    <1>当形参变量名和成员变量名相同的时候,在方法体的内部会优先选择变量使用,此时就需要使用
    this.的方式明确使用的成员变量而不是形参变量
    
    <2>在构造方法的第一行使用this(实参)的方式可以调用本类重其他构造方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值