import java.util.Random; Random r= new Random(); int num= r.nextInt(100); //产生的数据在0到100之间,包括0,不包括100,其实里面的100是随机的。 2. for(int i=0;i<10;i++){ if(i%2==0){ continue; } System.out.println(i); } 输出结果为1,3,5,7,9 continue:跳过循环体中的剩余语句而进行下一次循环
3.嵌套中的循环: 嵌套中的循环,一般多行多列的时候,外层控制行,内层控制列; 执行规则:外层循环走一次,内层的走所有; 建议:循环层数越少越好,能用一层解决的尽量用一层,如果你写的程序必须使用到三层以上的循环,要考虑是不是你的程序设计有问题 break:只能跳出一层循环。 4. 数组初始化: 动态初始化:在初始化的时候,只定义了数组的长度,通过系统来决定数组的初始化值;int [] arr2=new int[3]; 静态初始化:在初始化的时候,在初始化的时候,指定了每一个初始化的值,由系统决定数组的长度; int [] arr3= new int[]{1,3,5,7}; 5 arr={1,2,3};错的 arr=new int [] {1,2,3}; 对的 6 栈:存诸的是局部变量;局部变量就是定义在方法体中的变量;使用完毕后立即释放。 7. 堆:存储的是new出来的对象;每一个对象都是有地址值的;每一个对象都是有默认值的; byte short int long 默认值为0 float double 是0.0 char 是 ‘\u0000’ boolean false 引用数据类型 null 使用完毕后,由垃圾回收器在空闲的时候回收
身份证的最后一位验证 倒数第二位代表性别 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 省份证前17位 对应相乘,然后相加,用和 0 1 2 3 4 5 6 7 8 9 10 1 0 x 9 8 7 6 5 4 3 2对应程序 public static void main(String[] args) { // TODO Auto-generated method stub int sum=0; //用来存放身份证前17位 int[] cards=new int[17]; //所需验证的系数 int[] data={7 ,9 ,10, 5 ,8 ,4 ,2 ,1 ,6 ,3, 7 ,9, 10, 5, 8 ,4 ,2}; int[] date1=new int[17]; char []code ={‘1’,‘0’,‘x’,‘9’,‘8’,‘7’,‘6’,‘5’,‘4’,‘3’,‘2’}; Scanner sc=new Scanner(System.in); for(int i=0;i<cards.length;i++){ System.out.println(“请输入身份证的第”+(i+1)+“位”); cards[i]=sc.nextInt(); } for(int i=0;i<cards.length;i++){ sum+=cards[i]*data[i]; } System.out.println(“最后一位:”+code[sum]);
}9 异常 数组下标越界异常;ArrayIndexOutOfBoundsException 空指针异常:NullPointerException 异常机制:try-------catch 10 数组的复制 Arrays.copyof(src,length), 要在JDK1,6版本以上使用 System.arraycopy(src, srcPos, dest, destPos, length);// src原数组;srcPos:原数组的开始的复制的位置;dest:目标数组;destPos:目标数组的开始复制的位置;length:复制的 长度 javaAPI提供的,底层是用c++写的,所以速度非常快,比for()循环实现数组的拷贝效率要高,推荐使用。
11.冒泡排序 public static void main(String[] args) { // TODO Auto-generated method stub int []a={1,3,2,55,23,4}; for(int i=0;i<a.length-1;i++){ for(int j=0;j<a.length-1-i;j++){ if(a[j]>a[j+1]){ int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } //两种循环和Arrays.toString(a) 三种方法对数组的输出 System.out.print(“第”+(i+1)+“轮”+" “); //System.out.println(Arrays.toString(a)); for(int k:a){ System.out.print(k+” “); } System.out.println(); } for (int i = 0; i < a.length; i++) { System.out.print(a[i]+” “); } } 优化后的冒泡排序: public static void main(String[] args) { // TODO Auto-generated method stub int []a={1,3,2,55,23,4}; boolean isSorted; for(int i=0;i<a.length-1;i++){ isSorted=true;//假设剩下的元素已经全部排序好了 for(int j=0;j<a.length-1-i;j++){ if(a[j]>a[j+1]){ int temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; //一旦进行数组元素的交换,那么剩余的元素的元素是没有进行排序好的 isSorted=false } } if(isSorted){ break; } System.out.print(“第”+(i+1)+“轮”+” “); //System.out.println(Arrays.toString(a)); for(int k:a){ System.out.print(k+” “); } System.out.println(); } for (int i = 0; i < a.length; i++) { System.out.print(a[i]+” "); } }
} 12. 方法: 概念:封装了一段特定独立的业务逻辑的功能; 方法尽可能是独立的,让一个方法去干一件事; 方法也是可以被反复的重复去调用; 较少代码的重复,有利于代码的后期维护; 同时能够减少开发团队的成本,提高效率。 2.语法结构; 修饰词 返回值类型 方法名 (参数列表){ 方法体;//具体的业务逻辑功能 return 返回值; } 修饰词:public static 返回值类型:用于限定返回值的具体的类型 方法名:为了我们调用的时候方便,起的名字 参数列表:(参数类型 参数名,参数类型 参数名2…) 参数类型:用于限定调用方法时传入传入的数据类型 参数名:用于接收调用方法时传入的数据的变量 3. 方法的使用 明确方法是否有返回值;方法是否有参数列表; 方法是否有参数列表 4. 方法的调用 单独去调用 输出调用,有意义的 赋值调用 return; //编译错误,必须返回一个值 return “1234”; //编译错误,返回值的类型必须进行
