zoukankan      html  css  js  c++  java
  • java数组

    不知抽了什么风,以前都是用c来写小程序的,周二那天好不得的说,从今天开始以后用java语言写;为此,阔别了半年的MyEclipse就在那天唤醒了,作为菜鸟的我总感觉太多东西要学,太多东西了,..(打住感概.....);

    因为总用C语言中的结构体来归并一些若干变量的集合,好吧,java中木有结构体,我只能用类了模拟了;

    class Sum
    {
    int start ;
    int end ;
    int sum ;
    }

    Sum dp[] = new Sum[10] ;
    dp[1].sum= 1;

    报错,NullPointerException,我写个程序容易么我,报你妹啊;

    因为我是在回忆的阶段,为此补下知识;


    1.  普通数组:

      包括数组的声明和创建,要想使用数组必须为它分配内存空间,new对应数组;

    1. 一般默认值为对应0,0.0,false等等    --:int bb[][] = new int[10][1] ;
    2. System.out.println(bb[0]+" "+bb[1]+" "+bb[2]);------[I@1fc4bec [I@dc8569 [I@1bab50a ,仔细一看,还以为是数组的地址不是连续的,想下,为了安全考虑java里没有提供直接操作内存操作的方法,所以这该不是地址本身吧!
    3. 任何类均为Object类的间接子类,所以均继承方法public int hashCode()   

      散列的哈希码:默认的实现是将对象内部地址转化为整数作为HashCode,这当然能保证每个对象具有不同的引用,是对象在JVM虚拟出来的内存地址。不是实际物理内存地址;

    2.   对象数组

    1. 对象的使用,先是声明,然后创建,堆中的内存空间的地址的引用放在栈中,实体是在堆中,对象借此引用可以直接操作对象的属性等
    2. 一个类创建的对象如果有两个对象,如果有相同的引用,那么就有完全相同的实体,如果没有实体,则为空对象,空对象不能使用,NullPointerException
      但是编译不会对空对象做检查;

    3. java所谓的垃圾回收机制,这种机制周期的检测某个实体是否已不再被任何对象所拥有(引用),如果发现这样的实体,就会释放该实体所占的内存;

    所以之前的  NullPointerException 可以解释了,每个对象数组中没存对象、存的都是null的 ,只有在new一个对象时 内存空间才开辟出来

    那么则需要用循环来逐个new啊,

    for (int i = 0 ;i <dp.length ;i++)     dp[i] = new Sum(); 

    但是为什么不能用增强for呢 ?for (Sum h:dp) h = new Sum();
    java.lang.NullPointerException   ,--------见下增强for:


    3 .  增强for

    /*
    一般for循环的简写形式,,for(声明循环变量:数组名字),
    但是里面的循环变量迭代器只能取到里面的值,起迭代作用,不能做修改,
    这就是我们不能new Sum()了的原因了,因为 h 开始赋值为null,随后分配了内存,
    但这只是属于他自己,并未改变数组 dp重的各个对象 ;
    (可以看看 Iterator 的作用和用法)
    */ String[] persons={"张三","李四","王五"}; for(String person:persons){ System.out.println(person); person = "person" ; //张三 李四 王五 } int a[]={77,88,99} ; int t = 0; for (int i:a){   i++ ;   System.out.println(i) ;   System.out.println("source "+a[t]) ;   t++ ; } /* 78 source 77 89 source 88 100 source 99 */
  • 相关阅读:
    [转]来扯点ionic3[2] 页面一线牵 珍惜这段缘
    [转]ionic工作原理
    [转]禁止浏览器自动保存密码弹框
    [转]git提交代码时遇到代码库有更新以及本地有更新的解决方法
    [转]Angular 4 *ngIf/Else
    [转]Angular4 引用 material dialog时自定义对话框/deep/.mat-dialog-container
    ES之五:ElasticSearch聚合
    Logstash之四:配置说明
    Logstash之三:命令行中常用的命令
    Logstash之二:原理
  • 原文地址:https://www.cnblogs.com/foreverzd/p/3412215.html
Copyright © 2011-2022 走看看