目录
语句及程序结构
正文
表达式语句:
表达式语句是最基本的语句类型,它由一个或多个操作符和操作数组成,并返回一个值。
int a = 5 + 7; // 这是一个表达式语句,将整数5和7相加并赋值给变量a
声明语句:
声明语句用于创建新的变量、数组或对象。
int x; // 声明一个整型变量x
String[] names = new String[3]; // 声明一个长度为3的字符串数组
赋值语句:
赋值语句将一个值赋给一个变量、数组元素或对象属性。
x = 10; // 将整数值10赋给变量x
names[0] = "Alice"; // 将字符串"Alice"赋给数组names的第一个元素
方法调用语句
方法名(参数)
System.out.println(“Java ”);
顺序结构
顺序结构是最简单的一种程序结构,程序按照语句的书写次序顺序执行。
e.g.华氏温度转换为摄氏温度
public class Conversion
{
public static void main(String args[])
{
float f,c;
f=70.0f;
c=5*(f-32)/9;
System.out.println("Fahrenheit="+f);
System.out.println("Centigrade="+c);
}
}
补充拓展:
JAVA中的"scanf"
我在学JAVA的时候在想有没有想C语言那样的scanf
在Java中,没有直接与C语言中的scanf()
函数相对应的函数。但是,可以使用java.util.Scanner
类来实现类似的输入功能。
例子:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// 读取整数
System.out.println("请输入一个整数:");
int num = input.nextInt();
System.out.println("你输入的整数是:" + num);
// 读取浮点数
System.out.println("请输入一个浮点数:");
double floatingNum = input.nextDouble();
System.out.println("你输入的浮点数是:" + floatingNum);
// 读取字符串
System.out.println("请输入一个字符串:");
String str = input.nextLine();
System.out.println("你输入的字符串是:" + str);
// 关闭Scanner对象
input.close();
}
这个例子中,用户需要在一个输入行中按照整数、浮点数和字符串的顺序输入数据,每个数据之间用空格分隔。然后,程序会依次读取这些数据。
int-->input.nextInt()
float-->input.nextFloat();
double-->input.nextDouble();
String-->input.nextLine()
注意这里需要使用nextLine(),因为nextInt()和nextDouble()不会读取换行符
控制流语句
控制流语句决定了程序的执行顺序,包括条件语句和循环语句。
条件语句
根据条件的真假来选择要执行的代码块
Java语句提供了两条基本的分支选择语句if和switch。if语句应用在“二选一”的条件下,而switch语句应用在“多选一”的条件下。它们都是对条件表达式进行判断,针对不同的结果,决定转向要执行的Java语句
if
语句:单条件分支。if-else
语句:双条件分支。switch
语句:多条件分支(基于枚举或整数常量)
if语句:
if语句用于测试一个条件,并根据该条件的真假(true或false)来决定是否执行一段代码。基本的if语句语法如下:
if (condition) {
// 如果条件为真,则执行这里的代码块
}
e.g求解方程 ax+b=0(a≠0)的根
import java.util.Scanner;
public class Main
{
public static void main(String arge[])
{
Scanner input =new Scanner(System.in);
float a,b,x;
a=input.nextFloat();
b=input.nextFloat();
if (Math.abs(a)>0.000001f)
{
x=-b/a;
System.out.println("x="+x);
}
}
}
if-else语句:当条件为真时执行一个代码块,否则执行另一个代码块。
if (condition) {
// 如果条件为真,则执行这里的代码块
} else {
// 否则执行这里的代码块
}
if-else-if ladder:可以有多个if-else-if语句,依次检查多个条件,并执行第一个满足的条件对应的代码块。
if (condition1) {
// 如果条件1为真,则执行这里的代码块
} else if (condition2) {
// 如果条件1不为真,但条件2为真,则执行这里的代码块
} else if (condition3) {
// 如果条件1和条件2都不为真,但条件3为真,则执行这里的代码块
} else {
// 如果所有条件都不为真,则执行这里的代码块
}
e.g编写x,y函数关系
import java.util.Scanner;
public class Main{
public static void main(String args[])
{
Scanner input =new Scanner(System.in);
float x, y;
x=input.nextFloat();
if ( x<0 )
y = 0;
else if ( x >0 && x <= 10 )
y = x;
else if ( x > 10 && x <= 20 )
y = 10;
else
y = -0.5f * x + 20;
System.out.println("x="+x);
System.out.println("y="+y);
}
}
Switch语句
switch语句用于根据变量的值执行不同的代码块。每个代码块由一个case标签标识。switch语句的基本语法如下:
switch (variable) {
case value1:
// 如果变量的值等于value1,则执行这里的代码块
break;
case value2:
// 如果变量的值等于value2,则执行这里的代码块
break;
// 可以有多个case标签
default:
// 如果变量的值与所有case标签都不匹配,则执行这里的代码块
}
注意:
- 在每个case标签后的代码块结束时,通常需要使用break语句来退出switch语句,防止继续执行下一个case标签的代码块。如果不使用break,程序会继续执行下一个case标签的代码块,直到遇到break或switch语句结束。
- switch语句中的变量通常是整型、字符型或枚举类型。
public class Month1 {
public static void main(String args[])
{
short month;
month=Short.parseShort(args[0]);
switch(month)
{
case 1: System.out.println("January"); break;
case 2: System.out.println("February"); break;
case 3: System.out.println("March"); break;
case 4: System.out.println("April"); break;
case 5: System.out.println("May"); break;
case 6: System.out.println("June"); break;
case 7: System.out.println("July"); break;
case 8: System.out.println("August"); break;
case 9: System.out.println("September"); break;
case 10: System.out.println("October"); break;
case 11: System.out.println("November"); break;
case 12: System.out.println("December");
}
}
}
循环结构
循环结构是程序控制流的一种重要方式,它允许程序员重复执行一段代码多次,直到满足某个特定的条件为止。
while循环
while循环在满足特定条件时持续执行循环体内的代码
while (条件) {
// 循环体内的代码
}
在每次循环开始时,都会先检查条件是否为真。如果为真,则执行循环体;否则,退出循环。
e.g.计算n!
public class Factorial_n {
public static void main(String[] args) {
int i;
double s;
i = 1;
s = 1;
int n = Integer.parseInt(args[0]);
while(i<=n){
s = s * i;
i++;
}
System.out.println(n+"!="+s);
}
}
do-while循环
o-while循环与while循环相似,但有一个关键的区别:do-while循环至少会执行一次,即使初始条件为假(false)。
do {
// 循环体内的代码
} while (条件);
e.g. 计算1+3+5+…+99
public class Sum1
{
public static void main(String args[])
{
int i=1, s=0;
do
{
s=s+i;
i=i+2;
} while (i<100);
System.out.println("sum="+s);
}
}
for循环
for循环是一种预定义次数的循环,通常用于知道循环需要执行的精确次数。它的基本语法如下:
for (初始化; 条件; 更新) {
// 循环体内的代码
}
- 初始化:在循环开始前执行,通常用于设置循环变量的初始值。
- 条件:在每次循环开始时检查,如果为真(true),则执行循环体;否则,退出循环。
- 更新:在每次循环结束后执行,通常用于改变循环变量的值,以便在下一次循环中满足或不满足条件。
e.g.以下代码使用for循环打印出从1到10的数字:
for (int i = 1; i <= 10; i++) {
System.out.println(i);
}
多重循环
for( ; ; ) //外循环开始
{ ….
for( ; ; ) //内循环开始
{ ……} //内循环结束
while(condition) //内循环开始
{…….} //内循环结束
} //外循环结束
e.g.计算输出1!、2!、…、5!以及它们的和
public class Factorials
{
public static void main(String args[])
{
int i, j;
long s=0, k;
for ( i=1; i<=5; i++) //外循环开始
{
k=1;
for ( j=1; j<=i; j++) //内循环开始
k=k*j; //内循环体,内循环结束
System.out.println(i+"!="+k);
s=s+k;
} //外循环结束
System.out.println("Total sum="+s);
}
}
跳转语句
跳转语句是用来改变程序执行流程的控制语句。
break语句
- break语句用于退出当前的循环或switch语句。
- 在循环中,当遇到break语句时,程序会立即跳出当前循环,不再执行该循环剩余的部分,并继续执行循环后面的代码。
- 在switch语句中,break语句用于结束当前case的执行,并退出整个switch语句块。如果不使用break,程序会继续执行下一个case的代码,直到遇到break或switch语句结束。
continue语句
- continue语句用于跳过当前循环迭代中的剩余代码,并直接开始下一次循环迭代。
- 当在循环体中遇到continue语句时,程序将立即结束当前迭代,更新循环变量(如果有的话),并检查循环条件是否满足以决定是否进行下一次迭代。
- 注意,continue语句不会终止整个循环,只会跳过当前迭代中continue语句之后的代码。
return语句
- return语句用于从一个方法中返回值并结束方法的执行。
- 在非void方法中,return语句后面通常跟着一个表达式,该表达式的值将作为方法调用的结果返回给调用者。
- 在void方法中,可以只使用return语句而无需指定任何值,这将立即结束方法的执行并返回到调用者。
throw语句
- throw语句用于显式地抛出一个异常。
- 当程序中遇到无法处理的情况或者需要向调用者报告错误时,可以使用throw语句抛出一个异常对象。
- 执行throw语句后,程序会立即停止当前方法的执行,并开始寻找适当的异常处理器来处理这个异常。
补充拓展
** labelled break和continue语句**
- 在Java中,可以为循环添加标签,然后使用labelled break或continue语句来跳转到特定的标签处。
- labelled break语句用于跳出带有特定标签的最内层循环。
- labelled continue语句用于跳过带有特定标签的当前循环迭代的剩余部分,并开始下一次迭代。
e.g.
outerLoop: for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (i == 5 && j == 5) {
break outerLoop; // 跳出外层循环
}
System.out.println("i=" + i + ", j=" + j);
}
}
当i和j都等于5时,程序会使用labelled break语句跳出外层的for循环。