枚举
枚举类型(也称为枚举)为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。(个人理解:枚举是提前声明好的一组具有特定值的数据类型,用于选择的场合,有程序提供的选项供用户选择时使用,相当于控件中的listbox)例如在输入信息中人的性别只有男和女,为避免不必要的错误,提前枚举出性别的选项:Public enum Gender {男,女}
枚举的优点:
1、枚举可以使代码更易于维护,有助于确保给变量指定合法的、期望的值。
2、枚举使代码更清晰,允许用描述性的名称表示整数值,而不是用含义模糊的数来表示。
3、枚举使代码更易于键入。在给枚举类型的实例赋值时,VS.NET IDE会通过IntelliSense弹出一个包含可接受值的列表框,减少了按键次数,并能够让我们回忆起可能的值
4.使数据规范,便于统计和分类,防止出现“同意多词”的现象,防止数据的乱输入。
结构:public struct Person{public string _name; publicint _age;public gender _gender} 一次性声明多个不同的变量时使用。
数组(array)
定义:存储同一种数据类型的多个元素的容器,Array 类是支持数组的语言实现的基类。数组中通过“索引”或“下标”来区分数组元素,下标从0开始,数组的声明格式:类型[ ] 数组名
数组的初始化:是指为数组分配内存的过程。
A:动态初始化
只给长度,系统给出默认值
举例:int[]arr = new int[3];
B:静态初始化
给出值,系统决定长度
举例:int[]arr = new int[]{1,2,3};
简化版:int[]arr = {1,2,3};
对数组的遍历:使用foreach循环,数组的遍历就是对数组的所有元素逐个进行访问。Foreach(类型 变量名 in 数组名){循环体};使用for循环,for(int i=0,i< array.length,i++){ S+= array [i]; }
比较:foreach语句总是遍历整个数组,如果只需要遍历某个部分,或者反向遍历,使用for循环;foreach语句的循环只是访问数组中的每个元素的值,作为一个只读属性,如果要写入或者修改,或者需要知道元素对应的索引则需要for语句。
for循环遍历
public static void printArray(int[] arr) {
for(int x=0; x<arr.length; x++) {
System.out.println(arr[x]);
}
}
数组的逆序输出:
方式1:
public static void reverse(int[] arr) {
for(int x=0; x<arr.length/2; x++) {
int temp = arr[x];
arr[x] = arr[arr.length-1-x];
arr[arr.length-1-x] = temp;
}
}
方式2:
public static void reverse(int[] arr) {
for(int start=0,end=arr.length-1; start<=end; start++,end--) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
字符串的逆序输出:
public static void main(String[] args) {
//方法1 用reverse方法反转
StringBuffer sb=new StringBuffer();
sb.append("abc");
System.out.println("反转后:"+sb.reverse());
//方法2
String str="abc";
char[] charArr = str.toCharArray(); //将字符串转换成数组
for(int i = charArr.length;i>0;i--){
System.out.print("反转后:"+charArr[i-1]);
}
}
注意:数组需要在堆内存开辟空间存储值,引用类型需要在堆内存运行,在堆内存的数据使用完毕后在垃圾回收器空闲时回收,值类型存放在栈内存,栈内存的数据使用完毕就消失。数组中的不同数组元素的类型有不同的默认值
byte,short,int,long 0
float,double 0.0
char' \u0000'
boolean false
引用类型 null
集合(arraylist)
集合相当于一个容器,对于不同类型的变量的存取,使用集合。相比数组不必考虑类型和长度,声明格式:ArrayList 集合名=new arraylist( ); 添加元素:ArrayList.add=(“元素”)数组只能存储同一类型的数据,集合可以存储不同类型。
对集合的遍历:
public static void main(String[] args) {
//创建集合对象
Collection c=new ArrayList();
//添加元素
c.add("zhang");
c.add("jian");
c.add("hui");
方法1:
//把集合转成数组
Object[] objs=c.toArray();
for(int x=0;x<objs.length;x++){
// System.out.println("objs[x]");//输出每个元素,实际上是输出的是地址值,需要重写tostring方法
String s=(String) objs[x];//向下转型 为string类型可以调用length()方法
System.out.println(s+"------------"+s.length());
}
方法2:
//public interface Iterator<E>对 collection 进行迭代的迭代器。迭代器是遍历集合的一种方式,迭代器是依赖集合而存在的。
Iterator it=c.iterator();//获取迭代器对象
//hasNext()方法判断是否有元素
while(it.hasNext()) {
String s =(String) it.next();
System.out.println(s+"------------"+s.length());
}
//或者
for(Iterator it=c.iterator();it.hasNext();){
Student s=(Student)it.next();//转换成student类型,调用方法
System.out.println(s+"------------"+s.length());
}
}
Array和ArrayList的区别
Array的大小是固定的,而ArrayList的大小可根据需要自动扩充;array中一次只能获取或设置一个元素的值,而ArrayList中允许添加插入或移除某个范围的元素,array下限可以自定义,而ArrayList的下限始终为零;array可以具有多个维度(数组可以有二维和多维,但集合只能是一维的),但ArrayList只能是一维的;array位于system命名空间中,而ArrayList是提供的用于数据存储和检索的专用类,ArrayList位于system.collections命名空间中。
[] 是针对特定类型、固定长度的。
List 是针对特定类型、任意长度的。
Array 是针对任意类型、固定长度的。
ArrayList 是针对任意类型、任意长度的。
篇幅有限,未完待续……