Random的基本使用
使用步骤(和Scanner类似)
1、导包
import java.util.Random
2、创建对象
Random r = new Random();
3、获取随机数
int num = r.nextInt(100);
- 产生的数据在0到100之间,包括0,不包括100
- 括号里面的100是可以变化的,如果是1000,就是0到1000之间的数据
跳出循环
1、for:用于指定次数的循环,应用率比较高
2、break:跳出循环
countinue:跳过循环中的剩余语句而进入下一次循环
3、嵌套循环
1)嵌套中的循环,一般多行多列的时候,
外层控制行,内层控制列
2)执行规则:外层循环走一次,内层走完所有的次数;
3)建议:循环次数越少越好,能用一层解决的不要用多层解决
如果你写的程序必须用到三层以上的循环,那么就考虑程序的设计是否有问题
4)break:只能跳出一层循环
数组
1、概念
- 数组是存储同一种数据类型多个元素的容器。
- 数组既可以存储基本数据类型,也可以存储引用数据类型。
2、定义格式
-
格式1:数据类型[] 数组名;
-
格式2:数据类型 数组名[];
注意:这两种定义做完了,数组中式没有元素的。
3、初始化
- 动态初始化:在初始化时,只定义了数组的长度,通过系统来决定数组的初始化值;
- 静态初始化:在初始化时,指定了每一个数组元素的初始化值,通过系统决定数组的长度;
4、异常
-
数组下标越界:
ArrayIndexOutOfBoundsException
-
空指针异常:
NullPointerException
-
3、异常机制
try----catch异常
5、数组的复制
-
1、arrays.copyOf(src, length)
JDK1.6版本提供的,使用时要用1.6及以上的版本
-
2、System.arraycopy(src, srcPos, dest, destPOs, length)
-
src:源数组
-
srcPos:源数组的开始复制的位置
-
dest:目标数组
-
destPOs:目标数组的开始复制的位置
-
length:复制的长度
javaAPI提供的,底层是用c++写的,所以速度非常快,
比for循环实现数组拷贝的效率高,推荐使用。
-
栈和堆
栈:
- 局部变量就是定义在方法体中的变量
- 使用完毕后会立即释放
堆:
- 存储的是new出来的对象;
- 每一个对象都是有地址值的;
- 每一个对象都是有默认值的;
- byte,short,int,long 0
- float,double, 0.0
- char ‘\u0000’
- boolean false
- 引用数据类型 null
- 使用完毕后有垃圾回收器在空闲的时候被回收
冒泡排序
//定义一个数组对象
int[] arr = {2,6,1,4};
boolean isSorted;//优化
//冒泡排序算法:n-1轮比较
for (int i = 0; i < arr.length - 1; i++) {
isSorted = true;//建设剩下的元素已经排序好了
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {//前面的数字大于紧跟在后面的数字
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
//一旦进行数组元素的交换
//那么剩下的元素时没有进行交换的
isSorted = false;
}
System.out.println("第" + i + "轮 " + ": arr[j] = " + arr[j]);
}
System.out.println("--------------------");
if (isSorted) {
break;
}
System.out.print("第" + i + "轮排序后的数组:");
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[j] + " ");
}
System.out.println();
}
System.out.print("排序后的数组:");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
方法:(函数、过程)
1、概念:
- 封装了一段特定的业务逻辑的功能。
- 方法尽可能是独立的,让一个方法去干一件事。
- 方法也可以被反复的重复的去调用。
- 较少代码的重复,有利于代码的后期维护,同时能够团队的开发成本,提高开发效率。
2、语法结构:
修饰词 返回值类型 方法名(参数列表){
方法体;//具体的业务逻辑功能
return 返回值;
}
- 修饰词:public、static
- 返回值类型:用于限定返回值的具体类型
- 方法名:为了调用方便,起的名字
- 参数列表:(参数类型 参数名,参数类型 参数名2,…)
- 参数名:用于接受调用方法时传入的数据变量
3、方法的使用:
- 1)明确方法是否有返回值
- 2)方法是否有参数列表
4、方法的调用
- 1)单独去调用,不建议使用
- 2)输出调用,有意义的,不太完善。可能要对得到的数字进行操作
- 3)赋值调用,推荐使用