Java for循环完全指南:从基础到高性能实践

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)

这就是不同时间复杂度带来的差距!

相关推荐
JavaPub-rodert1 分钟前
我又把自己的 Go 后台管理系统升级了一遍:文件管理、2GB 上传、私有文件预览、Docker 镜像全安排上了
开发语言·docker·golang·shiyuadmin
云烟成雨TD3 分钟前
Micrometer 系列【39】链路追踪:入门案例 | 环境准备
java·云原生·链路追踪
chuan.bai5 分钟前
Java RAG 实战(第 3 篇):从交互式聊天到多轮上下文
java·人工智能·macos·ai
动力 continue6 分钟前
Python 元类与异常类:类的“制造工厂”与“报错定制师”
开发语言·python·制造
quantdash_cc7 分钟前
基于 QuantDash 5 分钟 K 线的网格交易策略参数网格搜索寻优实战
android·开发语言·pandas·量化·quantdash
147API15 分钟前
Python批量生成蒸馏数据,并发、重试、幂等和断点续跑
开发语言·jvm·python
青 春 记 忆16 分钟前
零基础入门python04:用注册校验理解字典、集合和条件判断
开发语言·vscode·python·python3.11
9523619 分钟前
Sentinel
java·后端·spring·sentinel·springcloud
kels889920 分钟前
实战排坑:黄金实时API开发,XAUUSD Tick报文异常处理实践
开发语言·python·websocket·网络协议·信息可视化
阿pin24 分钟前
Java随笔-JDK7 HashMap头插法为何能导致死循环?
java·开发语言·hashmap