java笔记 chapter5 数组和枚举

数组
枚举
 
 
数组:是由相同类型的若干项数据组成的一个数据集合。
数组做的3件事:
1),造容器
2),把数据放进去
3),把数据拿出来
一维数组的声明:
     数据类型[] 变量名;
     例如char s[]; 和char [] s;这两个表达都OK,建议后者。
int [] i; 
String [] names; 
float [] f;     float型数组f
Manager[] m; Manager型数组m
数组的创建:
     创建的时候要指明数组的长度。如:char [] s = new char [20];创建一个长度为20的char类型数组
数组的初始化:
     当创建一个数组时,每个元素都被自动使用默认值进行初始化。如果是引用类型的,则初始化为null。int型的则默认为0,float型的默认为0.0f。
数组的内存分配:
数组一旦被创建,则长度不可改变
创建数组时,系统会为该数组分配内存空间,并且按照数组的长度等分 
数组元素的访问:
     1,普通的for循环:
          public class ArrayDemo01 {
               public static void main(String[] args) {
                    String []  names = {"jim","kate","","lily"};
                   
                    for(int i=0; i< names.length; i++) {
                         System.out.println(names[i]);
                    }    
               }
          }
// result is as below 
jim
kate
 
lily
     2,增强for循环:只能取出 数组里的值,不能赋值,因为没有索引。
           for(int i :a){                // 把数组a中的数字循环输出并赋值给i
     System.out.print(i)
}
          public class ArrayDemo01 {
               public static void main(String[] args) {
                    String []  names = {"jim","kate","","lily"};   
                    for(String a : names) {
                         System.out.println(a);
                    }
               }
          }
// 输出结果同上。
     3, 数组的length属性指的是数组的长度,而不是数组里保存的元素的个数。很明显上面的数组names长度是4个,但是实际保存的是3个元素。
          public class ArrayDemo01 {
               public static void main(String[] args) {
                    String []  names = {"jim","kate","","lily"};                  
                      System.out.println(names.length);     //结果输出4
               }
          }
     
多维数组
二维数组其实就是一维的一维数组。有几维就有几重for循环。
N维数组就是一维的N-1维数组
 
数组的复制:
          System.arraycopy(src, srcPosotion, dest, destPosition, length)
System.arraycopy(from, fromIndex, to, toIndex, count);    
System.arraycopy() 拷贝的是引用,而不是对象。对象本身不改变。
例子:把数组a中的2 3 4这3个元素复制到数组b的第3个元素那里
          public class ArrayCopyDemo {
               public static void main(String[] args) {
                    int [] a = {1,2,3,4,5,6};
                    int [] b = {21,22,23,24,25,26,27};
                   
                    System.arraycopy(a, 1, b, 2, 3);
                   
                    for(int i=0; i < b.length;i++ ) {
                         System.out.println(b[i]);
                    }         
               }
          }
          //output:
          //21   22   2  3  4  26  27
 
数组的排序:
冒泡排序
选择排序
插入排序
希尔排序
java.util.Arrays.sort(a); 默认是升序排序
 
枚举
枚举里面包含着所有可能取值的常量。
枚举可以保证在编译期间检测应用使用的常量值是否合法,避免运行期逻辑错误。
 
枚举的本质就是一个类,编译将生成class文件。枚举里面可以定义属性,方法和构造方法。
枚举的构造方法必须是private的,这样外面就无法调取其构造方法,就是不给外面创造实例的机会
枚举的值就是这个类的实例,它是可以调方法的。
 
原文地址:https://www.cnblogs.com/wxc-xiaohuang/p/3483010.html