您的位置:首页 > 编程语言 > Java开发

java第五天

2016-03-06 13:45 387 查看

函数的重载

当定义的功能相同时,但参与运算的未知内容不同。

当函数名相同时,通过参数列表不同(参数列表数量或者参数类型)来区分多个同名的函数,

public static void a(int n1)

{

System.out.print("重载函数1");

}

public static void a(int n1,int n2)

{

System.out.print("重载函数2");

}

public static void main(String[] args)

{

a(1);将会调用重载函数1

a(1,2);将会调用重载函数2

}


还有一个值得注意的是

当你定义了一个同名函数,相同参数列表数量,类型,但唯一不同的是返回值,如下

public static int a(int n)

{

System.out.print("当与重载函数1或重载函数2相同存在时,会发生错误,因为当你重载函数时,系统无法识别你所需要一个怎么样的返回值是int 还是char")

}


数组

格式:元素类型[] 数组名=new 元素类型[元素个数或数组长度];

元素类型[] 数组名=new 元素类型[元素个数或数组长度]{定义数据内容};

int[] x=new int[3];//定义存储三个整数的容器

剖析内存

局部变量只在栈内存



*默认初始化值

定义int 为0

定义double为0.0

x=null;//这样定义将不存在指向地址,即左右两边无法进行连接使用了。

出现两个引用时,如图描述的代码将不存在垃圾



*垃圾的定义

  在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是”无用信息”,这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上,除了释放没用的对象,垃圾回收也可以清除内存记录碎片。由于创建对象和垃圾回收器释放丢弃对象所占的内存空间,内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的一端,JVM将整理出的内存分配给新的对象。

  上图是地址依然具有引用的。

  当你new了两个地址时,分别由x和y引用,

  
  int[] x=new int[3];//在堆中创建了第一块地址,比如0x0001,然后把地址给了x

  int[] y=new int[3];//在堆中创建了第二块地址,比如0x0002,然后把地址给了y

  y[1]=89;//0x0002有y引用,不存在垃圾

  x=null;//此时把x置空了,就是当初在栈中x存有0x0001地址名清空了,0x0001没有对象(x)去引用他,此时存在垃圾。

  


  

数组越界(出现不存在的角标)

int[] x=new int[3];//创建了[0][1][2]

System.out.printIn(x[3]);//使用一个不存在的数组,编译不会出现错误,当运行会出现错误,错误提示为

ArrayIndexOutOfBoundException

空指针异常

当引用没有任何指向值为Nu
4000
ll的情况

int[x]=new int[3];

x=null;

System.out.printIn(x[1]);

编译不会出现错误,当运行会出现错误,错误提示为

NullPointerExcertion
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: