A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© csdwz 中级黑马   /  2013-11-28 12:55  /  1423 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


变量是用来存放常量值。
问题:数据少的时候,可以定义单独的变量空间存储起来。
          可是数据一旦多了,再使用这种变量的方式,很不方便。

数组:把同一类型的数据组合一起的集合。
如何定义数组:
     定义数组需要通过关键字  new

怎么使用数组呢
     数组有个特性:
1,数组所有的空间都拥有自己的角标(下标,索引),这时可以通过数组+角标的方式访问数组的每一个空间。
2,数组定义完成后,如果没有给数组空间中赋值,数组空间中有默认的初始化值。
int类型的数组默认初始值为0
double  0.0
String ""
char '\u0000'
boolean false

使用格式:
int []  arr = new int[5];
arr[0]

java的内存分布
64M  java吧内存划分了五部分
1,栈内存      运行方法的,所有定义的局部变量,都在这片内存 区域中。(局部变量:定义在方法中,方法的参数中,for循环中的变量)

2,堆内存     所有对象都在这里存放着,用过new关键字创建出来的东西都存放在这里。当堆内存中的对象(通过new关键字创建出来的)没有任何的引用指向它的时候,这个对象就变成了垃圾,等待垃圾回收机制的清理。

3,方法区     所有的class文件,以及所有的静态的东西,还有常量池等。

4,本地方法区     主要存放本地方法

5,寄存器     给cpu使用

数组使用过程中常见的2个小问题:
1、ArrayIndexOutOfBoundsException  异常  数组角标越界异常
          发生此问题的原因是:访问的到数组中不存在的角标。
   
     2、NullPointerException 空指针异常
          当一个引用不再指向任何对象时,仍然在使用这个引用,去操作某个对象。这时就会发生空指针异常


如果在定义数组时,就明确了数组中存放的数据,就这样定义
int [] arr = new int [] {1,2,3,4,5};
     简写为如下格式:
     int[] arr = {1,2,3,4,5};


在数组实例中有个属性length中记录着当前这个数组的长度。
数组的应用:
遍历:把数组的每个空间都访问一遍。



     /*
     需求:求数组中的最大值
     思路:
          1、需要一个功能,这个功能就是用来求数组的最大值。
          2、要定义功能,就必须有两个明确:
               这个功能需要接受参数,接受的参数就是数组
              有返回值,返回的就是数组的中的最大值。
          3、方法定义好了,具体怎么求数组最大值呢?
               先临时假设数组中的一个值为最大值。
          4、需要取出数组中的每一个数和假设的这个最大值作比较,如果取出的这个数比假设的最大值大,
               就要把当前出去来的这个数替换假设的那个最大值。
     步骤:
     1、定义功能,求数组最大值
     2、假设某数组中的某一个数为最大值
     3、遍历数组,取出每一个数
     4、判断取出的这个数和假设那个数谁大。
     5、替换最大值
     6、返回最大值





需求:求数组中所有元素的和值?
        思路:
          1、要定义一个功能,用于求数组中所有元素和
               明确1:有没有参数呢?有,就是数组
               明确2:有没有返回值?有,和值
          2、要求所有元素的和值,需要一个存放所有和值的空间,并且这个空间的起始值为0
          3、遍历数组,取出数组中的每一个元素,把每一个元素加到和值空间去
          4、返回和值








class ArrayDemo10
{
     public static void main(String[] args)
     {
         
          System.out.println(toHex(0));
          System.out.println(toOctal(0));
          System.out.println(toBinary(0));

          System.out.println(Integer.toHexString(0));
          System.out.println(Integer.toOctalString(0));
          System.out.println(Integer.toBinaryString(0));
     }
     //定义功能完成十进制-->十六进制
     public static String toHex(int num)
     {
          return "0x"+trans( num,15,4 );
     }
     //定义功能完成十进制-->八进制
     public static String toOctal(int num)
     {
          return "0"+trans( num,7,3 );
     }
     //定义功能完成十进制-->二进制
     public static String toBinary(int num)
     {
          return "0b"+trans( num,1,1 );
     }

     public static String trans( int num , int num2 ,int offset )
     {
          char[] chs = {'0','1','2','3',
                         '4','5','6','7',
                         '8','9','A','B',
                         'C','D','E','F'};
          //定义临时数组存放每次查表得到的字符
          char[] ch = new char[32];
          //用于提供临时数组的角标,同时可以记录临时数组中存放的数据具体位置
          int pos = 0;
          while( num!=0 )
          {
               int temp = num & num2;
               //System.out.println(chs[temp]);
               //把查表获得字符存放到临时数组中
               ch[pos] = chs[temp];
               pos++;
               num = num >>> offset;
          }
          String str = "";
          for(int i=pos-1 ;i>=0 ;i--)
          {
               str = str + ch;
          }
          return str;


          //System.out.println(pos);
          /*
          //打印临时数组中存放那些字符
          for( int i = pos-1 ; i>=0 ;i-- )
          {
               System.out.print(ch);
          }
          */
         
     }
}









评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

2 个回复

倒序浏览
有没有毕老师视频全套电子版笔记
回复 使用道具 举报
枫儿 发表于 2013-12-2 20:31
有没有毕老师视频全套电子版笔记

还没上课结束
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马