java第五天

来源:互联网 发布:优化改进的英文 编辑:程序博客网 时间:2024/05/20 18:49

函数的重载

  • 当定义的功能相同时,但参与运算的未知内容不同。
    当函数名相同时,通过参数列表不同(参数列表数量或者参数类型)来区分多个同名的函数,

    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
  • 空指针异常
    当引用没有任何指向值为Null的情况
    int[x]=new int[3];
    x=null;
    System.out.printIn(x[1]);
    编译不会出现错误,当运行会出现错误,错误提示为
    NullPointerExcertion

0 0