6.for循环 重复执行(固定次数)代码(充分利用i值)
1.for循环计算1-100的和2.打印十次你好public class Test14 { public static void main(String[] args) { int sum=0; //for循环为什么会重复执行 /** * 1)首先执行i=1 * 2)判断i<10 * 3)执行括号中的内容 * 4)i++(自加1) * 5)判断i<10 * 6)执行括号中的内容 * ...... * */ for(int i=1;i<=100;i++){ sum+=i; } System.out.println(sum); for(int j=0;j<10;j++){ System.out.println("你好"); } }}

练习:使用for循环打印出以下图形

1.矩形public class Test20 { public static void main(String[] args) { for(int i=1;i<5;i++) { for(int j=1;j<5;j++){ System.out.print("*"); } System.out.println(); } }}

2.菱形public class Test21 { public static void main(String[] args) { //外面的for控制行数 for(int i=0;i<5;i++){ //里面的两个for循环同时执行 for (int j=0;j<5-i;j++){ System.out.print(" "); } for(int j=0;j<5;j++){ System.out.print("*"); } System.out.println(); } }}

3.public class Test22 { public static void main(String[] args) { for(int i=0;i<4;i++){ for(int j=0;j<i+1;j++){ System.out.print("*"); } System.out.println(); } }}

4.public class Test23 { public static void main(String[] args) { for(int i=1;i<=4;i++){ for(int j=0;j<4-i;j++){ System.out.print(" "); } for(int j=0;j<i;j++){ System.out.print("*"); } System.out.println(); } }}

5.在4的基础上打印*时加一个空格 "* "public class Test24 { public static void main(String[] args) { for(int i=1;i<=5;i++){ for(int j=0;j<5-i;j++){ System.out.print(" "); } for(int j=0;j<i;j++){ System.out.print("* "); } for(int j=0;j<5-i;j++){ System.out.print(" "); } System.out.println(); } }}

6.在5的基础上将for循环再执行一次 但是这次要反向执行 打印时也要打印 " *"而不是打印 "* "public class Test24 { public static void main(String[] args) { for(int i=1;i<=5;i++){ for(int j=0;j<5-i;j++){ System.out.print(" "); } for(int j=0;j<i;j++){ System.out.print("* "); } System.out.println(); } for(int n=4;n>=1;n--){ for(int j=0;j<4-n;j++){ System.out.print(" "); } for(int j=0;j<n;j++){ System.out.print(" *"); } System.out.println(); } }}

练习:在普通方法当中 定义一个整型数组 并计算累加和 并把和值返回到主方法public class Test25 { public static void main(String[] args) { Test25 test25=new Test25(); int a=test25.addArray(); System.out.println(a); } public int addArray(){ int a[]={2,5,7,6,8}; int sum=0; for(int i=0;i<a.length;i++){ sum+=a[i]; } return sum; }}

练习:取1-100和 (普通方法实现 返回累加和值 不要参数(for循环实现))用到for循环 方法调用 变量在哪儿声明 在哪儿用public class Test20 { public static void main(String[] args) { Test20 t=new Test20(); int res=t.add(); System.out.println(res); } public int add(){ int sum=0; for(int i=1;i<=100;i++){ sum+=i; } return sum; }}

练习:取1-100偶数和 取1-100奇数和 (普通方法实现 返回累加和值 不要参数(for循环实现))用到for循环 方法调用 if 变量在哪儿声明 在哪儿用public class Test21 { public static void main(String[] args) { Test21 t=new Test21(); int res1=t.add1(); int res2=t.add2(); System.out.println("偶数和为:" + res1); System.out.println("奇数和为:" + res2); } public int add1() { int sum1 = 0; for (int i = 1; i <= 100; i++) { if (i % 2 == 0) { sum1 += i; } } return sum1; } public int add2() { int sum2 = 0; for (int i = 1; i <= 100; i++) { if (i % 2 == 1) { sum2 += i; } } return sum2; }}

练习:将主方法的一个字符串传递到普通方法中 用for循环作倒序 把倒序后的值 返回到主方法并打印用到 方法调用 传递参数 返回值 substring return for public class Test22 {//还有另一种方法 将循环的值放在+后面 就可以倒序了 public static void main(String[] args) { String s="abcd"; Test22 t=new Test22(); String res=t.back(s); System.out.println(res); } public String back(String s){ String s1=""; for(int i=s.length();i>0;i--){ s1+=s.substring(i-1,i); } return s1; }}

扩展:跟踪的作用
1)看变量值的
2)执行流程

扩展:时间复杂度
衡量代码的好坏 包括两个非常重要的指标
运行时间
2.占用空间
如何推导出时间复杂度呢?有如下几个原则:
1)如果运行时间是常数量级 用常数1表示
2)只保留时间函数中的最高阶项
3)如果最高阶项存在 则省去最高阶项前面的系数
示例一:
T(n) = 3n
最高阶项为3n 省去系数3 转化的时间复杂度为:
T(n) = O(n)
示例二:
T(n) = 5logn
最高阶项为5logn 省去系数5 转化的时间复杂度为:
T(n) = O(logn)
示例三:
T(n) = 2
只有常数量级 转化的时间复杂度为:
T(n) = O(1)
示例四:
T(n) = 0.5n^2 + 0.5n
最高阶项为0.5n^2 省去系数0.5 转化的时间复杂度为:
T(n) = O(n^2)
这四种时间复杂度究竟谁用时更长 谁节省时间呢?稍微思考一下就可以得出结论:
O(1)< O(logn)< O(n)< O(n^2)
这就是不同时间复杂度带来的差距!