从char类型的数字字符转到int类型对应的数字,要减去'0';
1 While 循环控制
while(布尔表达式){
}
练习: 求 1 ~ 1000 所有素数.
素数: 除了1 和本身,不能被任何数整除的数.
2 do ... while() 循环控制
do{
//循环体
}while(布尔表达式);
3 数组
a 数组的声明:
int[] ary;
int ary[]; //不推荐的写法!
b 数组的初始化:
1 动态初始化: 必须指明数组的长度
int[] ary = new int[10];
int[] ary = new int[]{3,1,4,1,5,9};
2 静态初始化: 只能在声明数组时候使用!
int[] ary = {3,1,4,1,5,9};
//ary = {2,7,1,8};//编译错误
ary = new int[]{2,7,1,8};
java中一切的都是从0开始 。
3 数组成员自动初始化为"零"值.
"零"值: 0, 0.0, '\u0000', false, null
c 数组的访问
1 使用ary.length 属性可以获取数组的长度
2 数组的下标(index)从0开始, 最大是length-1
一共length个元素.
3 可以使用下标访问指定的元素:
int a = ary[2];//读取
ary[2] = 8;//写入
4 如果越界访问会出现异常(错误)
ArrayIndexOutOfBoundsException
案例练习
a 等本金还款
借款本金: 18万
利息: 5.6% (年利息)
还款期数(月): 60个月(5年)
每月归还本金: 180000/60=3000
第1月还利息: (180000-3000*0)*(5.6% / 12)=840
第2月还利息: (180000-3000*1)*(5.6% / 12)=826
//...
第1月 3000 840 3840
第2月 3000 826 3826
//...
i = 0~59
lixi[60]
//你只要见到乘除,就要想想是不是上溢出或者下溢出,
//例如这个,肯定不能带除,所以如果不在前面写double转型,必定会丢失值 。
double monthPay = (double)benJin/months;
4 数组的扩展问题--ArrayCopyDemo.java十分重要。
学会使用动态数组扩展。
1 Java数组的大小是固定的
2 利用数组复制到方法可以变通的实现数组扩展
3 System.arraycopy() 可以复制数组
4 Arrays.copyOf() 可以简便的创建数组副本
5 创建数组副本的同时将数组长度增加就变通的实现了
数组的扩展
int[] arr2 = ary;//ary2 和 ary是同一个数组
//所以即使你只对其中一个数组的值改变,那么两个都会改变。
记住,它就是两个不同的引用指向堆内存同一块内存。
案例: 统计一个字符在字符串中的所有位置.