编程实现在控制台打印出1~100内能被4整除的数,并求和输出结果!!
这是一般未优化的代码如下:为优化的代码可能存在重复无用循环,及优化后可省略的if判断语句减少程序运行时间
public class Demo2{
public static void main(String[] args){
//分析:首先定义一个变量
int sum = 0;//用来保存求和输出的结果
//使用for循环遍历1~100之间的数
for(int i = 1;i<=100;i++){//从1开始到100结束
if(i%4==0){
sum = i+sum;//将能被4整除的数sum累加
}
}
//把最后的结果输出打印
System.out.println("被4整除的数之和为:"+sum);
}
}
这是优化后的代码:
public class Demo2{
public static void main(String[] args){
//分析:首先定义一个变量
int sum = 0;//用来保存求和输出的结果
//使用for循环遍历1~100之间的数
for(int i = 4;i<=100;i+=4){//从4开始到100结束
//2.1优化版:循环初始值从4开始,每次循环都让他加4,
// 那么数字一定会是4的整数倍,因此判断都省略了
sum = i+sum;//将能被4整除的数sum累加
}
//把最后的结果输出打印
System.out.println("被4整除的数之和为:"+sum);
}
}
代码优化的后:很明显优化后的代码把一般代码少了很多次循环且省略的判断语句,可以高了程序执行速度,使代码变的简洁可读性更强。
二、程序可行性案例二:
需求:
给定两个整数,被除数和除数(都是正数,且不超过int的取值范围),不使用乘除法和%运算符得到商和余数。
未考虑到特殊情况的一般代码:这种程序容易出现bug,可能输入某个值时导致程序奔溃或者死循环或导致无意义的输出,如下代码就没有考虑到 除数不能为0的情况
import java.util.Scanner;
public class Demo6{
public static void main(String[] args){
//首先应用减法,将两数相减一直等到a>b为假时条件结束
//定义两个变量个,一个为商,一个余数
Scanner sc = new Scanner(System.in);
System.out.println("请输入被除数");
int a = sc.nextInt();//被除数
System.out.println("请输入除数");
int b = sc.nextInt();//除数
int c = 0;//余数
int count = 0;//商
while(a>b){
a=a-b;
if(a
进行优化后的代码:减少了程序可能导致的bug,增强程序的健壮性。
import java.util.Scanner;
public class Demo6{
public static void main(String[] args){
//首先应用减法,将两数相减一直等到a>b为假时条件结束
//定义两个变量个,一个为商,一个余数
Scanner sc = new Scanner(System.in);
System.out.println("请输入被除数");
int a = sc.nextInt();//被除数
System.out.println("请输入除数");
int b = sc.nextInt();//除数
int c = 0;//余数
int count = 0;//商
if(a!=0&&b!=0){
while(a>b){
a=a-b;
if(a
三、代码优化
- 概述:
在不改变程序运行效果的前提下,对被编译的程序进行等价变换,使之能生成更加高效目标代码
- 途径:
1) 改进算法;
2) 在源程序级上等价变换;
3) 充分利用系统提供的程序库;
4) 编译时优化等。
- 优化的目的:
产生高效的目标代码。
- 为什么要实施优化?
1、优化程度是编译器的一个重要技术、质量目标;
2、无法苛求用户对源语言的掌握,编程技巧.编写源程序的优化;
3、编译程序固有的缺陷:不是面对一个或一类具体问题的程序,而是统一处理该语言的各种源程序,无法尽善尽美



