欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java基本概念

程序员文章站 2022-07-12 15:52:13
...

【形参与实参】

形参;是定义方法的时候的参数 例如;void test(int a,short b) a,和b 就是形式参数。没有具体的值。
实参;实际参数,实实在在的有值的参数。例如 int = 10;

实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。
实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,
以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值

形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,
形参只有在函数内部有效。 函数调用结束返回主调函数后则不能再使用该形参变量。

函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化。

 

【值传递】
    基本数据类型赋值都属于值传递,值传递传递的是实实在在的变量值,是传递原参数的拷贝,值传递后,
    实参传递给形参的值,形参发生改变而不影响实参。
【引用传递】
引用类型之间赋值属于引用传递。引用传递传递的是对象的引用地址,也就是它的本身(自己最通俗的理解)。
引用传递:传的是地址,就是将实参的地址传递给形参,形参改变了,实参当然被改变了,因为他们指向相同的地址。
引用和我们的指针差不多,但是它不又不需要我们去具体的操作


【内存分配】
一个具有值类型(value type)的数据存放在栈内的一个变量中。即是在栈中分配内存空间,直接存储所包含的值,
其值就代表数据本身。值类型的数据具有较快的存取速度。

一个具有引用类型(reference type)的数据并不驻留在栈中,而是存储于堆中。即是在堆中分配内存空间,
不直接存储所包含的值,而是指向所要存储的值,其值代表的是所指向的地址。当访问一个具有引用类型的数据时,
需要到栈中检查变量的内容,该变量引用堆中的一个实际数据。引用类型的数据比值类型的数据具有更大的存储规模和较低的访问速度。

 

【java 中的垃圾回收机制】

 当一个堆内存中的对象没有被栈内存中表示地址的值“引用”时,这个对象就被称为垃圾对象,它无法被使用但却占据着内存中的区域,
 好比这样:String s = new String(“person”); s = new String(“man”); s本来是指向堆内存中值为person的对象的,
 但是s突然讨厌person了,它指向了堆内存中的man对象了,person就像一个孤儿一样被s遗弃了,但是person比孤儿还要惨。
 
 好比一个人在劳动,突然一天不劳作了,被位高权重的管理的人‘垃圾回收器’发现了,不过被当官的找到往往没什么好事,尤其是这个‘垃圾回收器’,
 它会豪不留情把‘垃圾’们清理走,并且无情的销毁,以便释放内存。
 

【装箱与拆箱】

其实装箱就是值类型到引用类型的转化过程。将一个值类型变量装箱成一个引用类型变量,首先会在托管堆上为新的引用类型变量分配内存空间,
然后将值类型变量拷贝到托管堆上新分配的对象内存中,最后返回新分配的对象内存地址。装箱操作是可逆的,所以还有拆箱操作。
拆箱操作获取只想对象中包含值类型部分的指针,然后由程序员手动将其对应的值拷贝给值类型变量。

 

【栈与堆】
栈(stack):主要保存基本类型(或者叫内置类型)(char、byte、short、int、long、float、double、boolean)
和对象的引用,数据可以共享,速度仅次于寄存器(register),快于堆。

堆(heap):用于存储对象。堆内存用来存放由new创建的对象和数组,在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理
在堆中产生了一个数组或者对象之后,还可以在栈中定义一个特殊的变量(对象引用),让栈中的这个变量的取值等于数组或对象在堆内存中的首地址(存在栈中的引用
指向堆地址),栈中的这个变量就成了数组或对象的引用变量,以后就可以在程序中使用栈中的引用变量来访问堆中的数组或者对象,引用变量就相当于是
为数组或者对象起的一个名称。引用变量是普通的变量,定义时在栈中分配,引用变量在程序运行到其作用域之外后被释放。而数组和对象
本身在堆中分配,即使程序运行到使用 new 产生数组或者对象的语句所在的代码块之外,数组和对象本身占据的内存不会被释放,数组和对
象在没有引用变量指向它的时候,才变为垃圾,不能在被使用,但仍然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器收走(释放掉)。

java基本概念
            
    
    博客分类: javaandroid java栈堆内存分配对象引用 
 
java基本概念
            
    
    博客分类: javaandroid java栈堆内存分配对象引用 
 



 

  • java基本概念
            
    
    博客分类: javaandroid java栈堆内存分配对象引用 
  • 大小: 145.7 KB
  • java基本概念
            
    
    博客分类: javaandroid java栈堆内存分配对象引用 
  • 大小: 20.2 KB