一、流程控制

1、分支结构/选择结构

(1)、if 单选择结构

java调节输入框长度和宽度 java控制输入范围_java


Math类的使用

1.java.lang包中的Math类提供了一些用于数学计算的方法。

2.Math.random()该方法用于产生一个0到1区间的double类型的随机数,但是不包括1。

int i = (int) (6 * Math.random()); //产生:[0,5]之间的随机整数

注意

1.如果if语句不写{},则只能作用于后面的第一条语句。

2.强烈建议,任何时候都写上{},即使里面只有一句话!

(2)、if else双选择结构

java调节输入框长度和宽度 java控制输入范围_递归_02

public class Test2 {
    public static void main(String[] args) {
        //随机产生一个[0.0, 4.0)区间的半径,并根据半径求圆的面积和周长
        double r = 4 * Math.random();
       //Math.pow(r, 2)求半径r的平方
        double area = Math.PI * Math.pow(r, 2);
        double circle = 2 * Math.PI * r;
        System.out.println("半径为: " + r);
        System.out.println("面积为: " + area);
        System.out.println("周长为: " + circle);
        //如果面积>=周长,则输出"面积大于等于周长",否则,输出周长大于面积
        if(area >= circle) {
            System.out.println("面积大于等于周长");
        } else {
            System.out.println("周长大于面积");
        }
    }
}

(3)、if…else if…else多选择结构

java调节输入框长度和宽度 java控制输入范围_布尔表达式_03


(4)、switch结构:

switch语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。

java调节输入框长度和宽度 java控制输入范围_java调节输入框长度和宽度_04

2、循环结构

循环结构分两大类,一类是当型,一类是直到型。

当型:

        当布尔表达式条件为true时,反复执行某语句,当布尔表达式的值为false时才停止循环,比如:while与for循环。

直到型:

        先执行某语句, 再判断布尔表达式,如果为true,再执行某语句,如此反复,直到布尔表达式条件为false时才停止循环,比如do-while循环。

(1)、while循环

只要布尔表达式为true,循环体会一直执行下去。

html
while( 布尔表达式 ) {
	//循环内容
//1.求1到100之间的累加和
int i=0;
int sum=0;
	while (i<=100) {
		sum+=i;
		i++;
	}
System.out.println("sum="+sum);

(2)、do…while循环
do…while循环至少会执行一次。

do {
       //代码语句
}while(布尔表达式);

(3)、for循环

for(初始表达式; 布尔表达式; 迭代因子) {
    //循环体
}

for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环体,否则,终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。
A. 初始化部分设置循环变量的初值
B. 条件判断部分为任意布尔表达式
C. 迭代因子控制循环变量的增减
for循环在执行条件判定后,先执行的循环体部分,再执行步进。
例如:打印九九乘法表

for (int i = 1; i <=9; i++) {
	for (int j =1; j <=i; j++) {
			System.out.print(i+"*"+j+"="+i*j+"\t");
		}
		System.out.println();
		}

3、死循环
编译器将while(true)与for(;;)看作同一回事,都指的是无限循环。
4、break语句和continue语句
(1) 、在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。
(2)、 continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
注意事项
1. continue用在while,do-while中,continue 语句立刻跳到循环首部,越过了当前循环的其余部分。
2. continue用在for循环中,跳到for循环的迭代因子部分。
5、语句块
        语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单Java语句。块确定了局部变量的作用域。块中的程序代码,作为一个整体,是要被一起执行的。块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明同名的变量。语句块可以使用外部的变量,而外部不能使用语句块中定义的变量,因为语句块中定义的变量作用域只限于语句块。

public static void main(String[] args) {
		int a;
		int b;
		{
			//int a;//编译错误,不能重复定义变量a
			int k;
		}
		//k=10;//变量k的作用域到此为止
	}

6、方法
方法就是一段用来完成特定功能的代码片段,类似于其它语言的函数。
方法用于定义该类或该类的实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。
方法声明格式:

[修饰符1 修饰符2 …] 返回值类型 方法名(形式参数列表){
Java语句;… … …
}
方法的调用方式:
对象名.方法名(实参列表)

方法的详细说明
  1. 形式参数:在方法声明时用于接收外界传入的数据。
  2. 实参:调用方法时实际传给方法的数据。
  3. 返回值:方法在执行完毕后返还给调用它的环境的数据。
  4. 返回值类型:事先约定的返回值的数据类型,如无返回值,必须显示指定为为void。
public class TestMethod {
	//main方法,程序入口
	public static void main(String[] args) {
		int num1=10;
		int num2=10;
		//调用求和的方法:将num1和num2的值传给add方法中的n1与n2
		//求完和后将结果返回,用sum接收结果
		int sum=add(num1, num2);
		System.out.println("sum= "+sum);//输出sum的值
		//调用打印的方法:该方法没有返回值
		print();
	}
	//求和的方法
	public static int add(int n1,int n2) {
		int sum=n1+n2;
		return sum;//使用return返回计算结果
	}
	//打印的方法
	public static void print() {
		System.out.println("贵阳蓝云……");
	}
}

方法的重载
方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法。
注意:
重载的方法,实际是完全不同的方法,只是名称相同而已!

构成方法重载的条件:

  1.不同的含义:形参类型、形参个数、形参顺序不同

  2.只有返回值不同不构成方法的重载
  如:
int a(String str){}与 void a(String str){}
  不构成方法重载
   3.只有形参的名称不同,不构成方法的重载
  如:
int a(String str){}与int a(String s){}
  不构成方法重载
public class TestOverLoad {

	public static void main(String[] args) {
		//已经写过的方法重构
		System.out.println();//0个参数
		System.out.println(1);//参数是1个int
		System.out.println(3.0);//参数是1个double
	}
	/*求和的方法 */
	public static int add(int n1, int n2) {
		int sum=n1+n2;
		return sum;
	}
	/*方法名相同,参数列表不同,构成重载 */
	public static int add(int n1, int n2,int n3) {
		int sum=n1+n2;
		return sum;
	}
	/*方法名相同,参数类型不同,构成重载*/
	public static double add(double n1, int n2) {
		double sum=n1+n2;
		return sum;
	}
	/*编译错误,只有返回值不同,不构成重载*/
	/*public static double add(int n1, int n2) {
		double sum=n1+n2;
		return sum;
	}*/
	/*编译错误,只有参数名称不同,不构成重载*/
	/*public static double add(int n2, int n1) {
		double sum=n1+n2;
		return sum;
	}*/
}

7、递归结构
递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。
递归结构包括两个部分:

1.定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。

  2.递归体。解答:什么时候需要调用自身方法。
public class TestRecursion {
	public static void main(String[] args) {
		long d1=System.currentTimeMillis();
		System.out.println("5阶乘的结果:"+factorial(5));
		long d2=System.currentTimeMillis();
		System.out.println("递归费时:"+(d2-d1));
	}
	/*求阶乘的方法*/
		static long factorial(int n) {
		if(n==1) {//递归头
			return 1;
		}else {//递归体
			return n*factorial(n-1);//n! = n * (n-1)!
		}
	}
}

java调节输入框长度和宽度 java控制输入范围_递归_05


注意事项

任何能用递归解决的问题也能使用迭代解决。当递归方法可以更加自然地反映问题,并且易于理解和调试,并且不强调效率问题时,可以采用递归;

  在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。