1、第 2 章 java语言基础,本章主要内容:,2.1基本数据类型 2.2基本数据类型应用示例 2.3表达式和运算符 2.4 程序控制语句,2.1基本数据类型,2.1.1 Java的数据类型 2.1.2 常量与变量 2.1.3 变量赋值 2.1.4 关键字 2.1.5 转义符,2.1.1 Java的数据类型,Java定义了8个基本数据类型:字节型(byte),短整型(short),整型(int),长整型(long),字符型(char),浮点型(float),双精度型(double),布尔型(boolean)。这8个基本数据类型可分为4组:,2.1.1 Java的数据类型,整数型:该组包括字节型(
2、byte),短整型(short),整型(int),长整型(long),它们有符号整数。 实数数型:该组包括单精度型(float),双精度型(double),它们代表有小数精度要求的数字。实数数型又称为浮点类型。 字符:这个组包括字符型(char),它代表字符集的符号,例如字母和数字。 布尔型:这个组包括布尔型(boolean),它是一种特殊的类型,表示真/假值。,数据类型的分类,表2-1 Java的基本数据类型,2.1.2常量与变量,在程序中,每一个数据都有一个名字,并且在内存中占据一定的存储单元。在程序运行过程中,数据值不能改变的量称为常量,其值可以改变的量称为变量。 在Java语言中,所有
3、常量及变量在使用前必须先声明其值的数据类型,也就是要遵守“先声明后使用”的原则。,2.1.2常量与变量,声明变量的格式为:,数据类型 变量名1,变量名2, ;,例如:int a; int x, y, sum; 在Java中,常量的声明与变量的声明非常类似,例如:final int DAY = 24; / DAY的值在整个程序中不变,final double PI = 3.14159; /声明圆周率常数,2.1.3 变量赋值,在程序中经常需要对变量赋值,在Java中用赋值号()表示。 所谓赋值,就是把赋值号右边的数据或运算结果赋给左边的变量。其一般格式为:变量 = 表达式;,2.1.3 变量赋值
4、,例如: int x = 5; / 指定x为整型变量,并赋初值5 char c = a; /指定a为字符型变量,并赋初值 a 如果同时对多个相同类型的变量赋值,可以用逗号分隔,如: int x = 5,y = 8,sum; sum = x + y; /将x+y的运算结果赋值给变量sum 在Java语言中,经常会用到形如“x = x + a”的赋值运算,如: int x = 5; x = x + 2; 这里,右边x的值是5,加2后,把运算结果7赋值给左边的变量x,所以x的值是7。,2.1. 4 关键字,所谓关键字就是Java语言中已经规定了特定意义的单词。不可以把这些单词用作常量名或变量名。 J
5、ava语言中规定的关键字有:abstract、boolean、break、byte、case、catch、char、class、continue、default、do、double、else、extends、false、final、finally、float、for、if、implements、import、instanceof、int、interface、long、native、new、null、package、private、protected、public、return、short、static、super、switch、synchronized、this、throw、throws、tr
6、ansient、true、try、void、volatile、while。,2.1.5 转义符,在Java语言中提供了一些特殊的字符常量,这些特殊字符称为转义符。通过转义符可以在字符串中插入一些无法直接键入的字符,如换行符、引号等。每个转义符都以反斜杠()为标志。例如,n代表一个换行符,这里的n不再代表字母n而作为换行符号。,2.1.5 转义符,2.2基本数据类型应用示例,2.2.1 整数类型与浮点类型 2.2.2 字符型 2.2.3 布尔型 2.2.4 数据类型的转换,2.2.1 整数类型与浮点类型,1、整数类型 当用变量表示整数时,通常将变量声明为整数类型。,【例2-1】下面的程序用整型变
7、量计算二个数的和。,1 /* 计算二个数的和 */ 2 import javax.swing.*; 3 class Example2_1 4 5 public static void main(String args) 6 7 int x, y, sum; 8 x = 3; 9 y = 5; 10 sum = x + y; /求和 11 JOptionPane.showMessageDialog(null, 12 “x=3;“ + “n y=5;“ + “n x+y=“ + sum); 12 System.exit(0);13 14 ,声明3个整型变量,给变量x,y赋值,在对话框窗体中显示结果
8、,n为换行符,在程序的第7行,声明了三个整型变量x、y、sum。 在程序运行到第8行语句时,数值3存放到x中, 运行到第9行语句时,数值5存放到y中。 程序运行到第10行语句时,将内存单元x和内存单元y中的值相加并将结果放到变量sum中。,将程序保存为Example2_1.java。编译程序: javac Example2_1.java 运行程序: java Example2_1,2.2.1 整数类型与浮点类型,2、浮点类型浮点数也称为实数,当计算的表达式有精度要求时就要使用浮点类型。,【例2-2】用双精度浮点型变量计算一个圆的面积 。,import javax.swing.*; class
9、Example2_2 public static void main(String args) double pi, r, s; r = 10.8; /圆的半径 pi = 3.14159; s = pi * r * r; /计算圆的面积JOptionPane.showMessageDialog(null, “圆的面积为:“ + s);System.exit(0); ,/由于要表示小数,故声明3个浮点类型变量,/变量赋值,在对话框窗体中显示结果,将程序保存为Example2_2.java。编译程序: javac Example2_2.java 运行程序: java Example2_2,2.2.
10、2 字符型,1、字符变量在Java中,存储字符的数据类型是char,一个字符变量每次只能存放一个字符。,【例2-3】下面的程序演示char 类型变量的用法。,1 /* char 类型变量的用法 */ 2 import javax.swing.*; 3 class Example2_3 4 5 public static void main(String args) 6 7 char ch1,ch2,ch3; 8 ch1 = 88; / 88在Unicode码中对应的是字母X 9 ch2 = Y; ch3 = 汉; 10 JOptionPane.showMessageDialog(null,“c
11、h1、ch2、ch3:“ 11 + ch1 + “、“ + ch2+ “、“ +ch3); 12 System.exit(0); 13 14 ,注意:在程序的第8行,变量ch1赋值为88,它是字母X在ASCII码(Unicode码也一样)中的值。 将程序保存为Example2_3.java。编译程序: javac Example2_3.java 运行程序: java Example2_3,2.2.2 字符型,2、字符串 用双引号括起来的多个(也可以是一个或空)字符常量称为字符串。 例如: “我对 Java 很痴迷! n”; “a + b =”;字符串与字符比较有如下区别:字符是由单引号括起来的
12、单个字符。而字符串是由双引号括起来的,且可以是零个或多个字符。例如:abc是不合法的。“”是合法的,表示空字符串。,2.2.3 布尔型,Java表示逻辑值的基本类型,称为布尔型。它只有两个值true和false 。 【例2-4】说明布尔类型的使用 。 class Example2_4 public static void main(String args) boolean b; b = false; System.out.println(“b is “ + b); b = true; System.out.println(“b is “ + b); /关系运算操作的结果为boolean值Sys
13、tem.out.println(“10 9 is “ + (10 9); ,2.2.4 数据类型的转换,在Java语言中对已经定义了类型的变量,允许转换变量的类型。变量的数据类型转换分为“自动类型转换”和“强制类型转换”两种。 1、自动类型转换对于基本数据类型按精度从“低”到“高”的顺序为:,2.2.4 数据类型的转换,当把级别低的变量的值赋给级别高的值时,系统自动进行数据类型转换。 例如 int x = 10; float y; y = x; 这时y的值为10.0。,2.2.4 数据类型的转换,2、强制类型转换强制类型转换是指当把级别高的变量的值赋给级别低的变量。转换的格式为:(类型名)要转
14、换的值或变量; 例如:设有 int a; double b = 3.14;将b强制类型转换为int类型后,再赋值给a 则 a = (int)b; 结果 a = 3,b仍然是double类型,b的值仍然是3.14。,2.3 表达式和运算符,2.3.1 表达式与运算符 2.3.2 算术运算符 2.3.3 关系与逻辑运算符,2.3.1 表达式与运算符,1、表达式表达式是由运算符、操作数和方法调用按照语言的语法构造而成的符号序列。例如,计算式 写成表达式为:(x + y ) / (y * (x y);,2、运算符,运算符分成以下几类: 算术运算符; 关系和条件运算符; 逻辑运算符; 赋值运算符; 其它
15、的运算符。,2.3.2 算术运算符,Java 语言支持所有的浮点型和整型数进行各种算术运算。算术运算符为+(加)、-(减)、*(乘)、 /(除)以及%(取模)。,【例2-5】,public class Example2_5 public static void main(String agrs)/定义几个变量并赋值int a=41;int b=21;double x=6.4;double y=3.22;System.out.println(“变量数值:“);System.out.println(“a=“+a + “t b=“+b + “t x=“+x + “t y=“+y);/加法System
16、.out.println(“加:“);System.out.println(“a+b=“+(a+b) + “t x+y=“+(x+y);,/减法System.out.println(“减:“);System.out.println(“a-b=“+(a-b) + “t x-y=“+(x-y);/乘法System.out.println(“乘:“);System.out.println(“a*b=“+(a*b) + “t x*y=“+(x*y);/除法System.out.println(“除:“);System.out.println(“a/b=“+(a/b) + “t x/y=“+(x/y);
17、/从除法中求得余数System.out.println(“计算余数:“);System.out.println(“a%b=“+(a%b) + “t x%y=“+(x%y);/混合类型System.out.println(“混合类型:“);System.out.println(“b+y=“+(b+y) + “t a*x=“+(a*x); ,自增/自减运算符为+ +和- -。+ +完成自加1;而- -完成自减1。 例如: (1)int x = 2; int y = (+x) * 5; /执行结果:x = 3, y = 15 (2)int x = 2; int y = (x+) * 5; /执行结果
18、:x = 3, y = 10,2.3.3 关系与逻辑运算符,表2.6 关系运算符,【例2-6】用关系运算符比较三个整数。,public class Example2_6 public static void main(String args) /定义若干整型数int i=37;int j=42;int k=42;System.out.println(“变量数值: “);System.out.println(“i=“+i+“t j=“+j+“t k=“+k);/大于System.out.println(“大于:“);System.out.println(“ij=“+(ij);/falseSyst
19、em.out.println(“ji=“+(ji);/trueSystem.out.println(“kj=“+(kj);/false/大于等于System.out.println(“大于等于:“);System.out.println(“i=j=“+(i=j);/falseSystem.out.println(“j=i=“+(j=i);/trueSystem.out.println(“k=j=“+(k=j);/true,/小于System.out.println(“小于:“);System.out.println(“ij=“+(ij);/trueSystem.out.println(“ji=
20、“+(ji);/falseSystem.out.println(“kj=“+(kj);/false/小于等于System.out.println(“小于等于:“);System.out.println(“i=j=“+(i=j);/trueSystem.out.println(“j=i=“+(j=i);/falseSystem.out.println(“k=j=“+(k=j);/false/等于System.out.println(“等于:“);System.out.println(“i=j=“+(i=j);/falseSystem.out.println(“k=j=“+(k=j);/true/
21、不等于System.out.println(“不等于:“);System.out.println(“i!=j=“+(i!=j);/trueSystem.out.println(“k!=j=“+(k!=j);/false ,表2.7 条件运算符,2.4 程序控制语句,2.4.1语句 2.4.2 键盘输入语句 2.4.3 顺序控制语句 2.4.4 if选择语句 2.4.5 switch语句 2.4.6 循环语句 2.4.7 跳转语句,2.4.1 语句,语句是程序的基本单元,它类似于自然语言的句子。Java语言的语句可分为以下几类: (1)表达式语句x = 3;y = 5;sum = x + y;一
22、个表达式的最后加上一个分号就构成了一个语句,分号是语句不可缺少的部分。,(2)复合语句用 把一些语句括起来构成复合语句。x=25+x;System.out.println(“x=”+x); (3)控制语句控制语句用于控制程序流程及执行的先后顺序。主要有:顺序控制语句、条件控制语句和循环控制语句 (4)包语句和引入语句包语句和引入语句将在后面的章节详细介绍。,2.4.2 键盘输入语句,在java中,使用简单文本扫描器Scanner类可以接受用户从键盘输入的数据。Scanner可以从System.in中读取数据。Scanner实现键盘输入数据的方法如下:Scanner sc = new Scann
23、er(System.in); int a = sc.nextInt();double b = sc.nextDouble();String str = sc.next();,【例2-7】从键盘输入数据。,import java.util.*; public class Example2_7 public static void main(String args)Scanner reader=new Scanner(System.in);System.out.print(“输入一个整数:“);int a = reader.nextInt();System.out.print(“输入一个实数:“)
24、;double b = reader.nextDouble();System.out.println(a+b);System.out.print(“输入一串字符:“);String s = reader.next();System.out.println(s); ,2.4.3 顺序控制语句,顺序控制是指计算机在执行这种结构的程序时,从第一条语句开始,按从上到下的顺序依次执行程序中的每一条语句。顺序控制是程序的最基本结构,包含有选择控制语句和循环控制语句的程序,在总体执行上也是按顺序结构执行的。,【例2-8】交换两个变量的值。,在编写程序时,有时需要把两个变量的值互换,交换值的运算需要用到一个中
25、间变量。例如,要将a与b 的值互换,就可用下面这样一段程序:,int a, b, temp;temp = a;a = b;b = temp;,设temp为中间变量,第一步:把a的值放到中间变量temp中,第二步:把b的值放到变量a中,第三步:把temp中原a的值放到变量b中,交换过程如图所示:,1 /* 交换a、b两变量的值 */ 2 import javax.swing.*; 3 public class Example2_8 4 5 public static void main(String args) 6 7 int a = 3, b = 5, temp; 8 temp = a; 9
26、a = b; 10 b = temp;JOptionPane.showMessageDialog(null, “a = “ + a + “t b =“ + b ); 12 System.exit(0); 13 14 ,交换a、b两变量的值,将程序保存为Example2_8.java。编译程序: javac Example2_8.java 运行程序: java Example2_8 程序的运行结果如图所示,2.4.4 if选择语句,1、单分支选择结构 if语句用于实现选择结构。它判断给定的条件是否满足,并根据判断结果决定执行某个分支的程序段。对于单分支选择语句,其的语法格式为:,if(条件表达式
27、)若干语句;,这个语法的意思是,当条件表达式所给定的条件成立时(true),就执行其中的语句块,若条件不成立(false),则跳掉这部分语句,直接执行后续语句。,其流程如图所示:,【例2-9】从键盘任意输入两个整数,按从小到大的顺序依次输出这两个数。,从键盘上输入的两个数a、b,如果a b,则需要交换两个变量的值。其算法流程如图所示。,1 /* 从键盘任意输入两个整数,按从小到大的顺序排序 */ 2 import java.util.*; 3 public class Example2_9 4 5 public static void main(String args) 6 7 int a,
28、b, temp; 8 Scanner reader = new Scanner(System.in); 9 System.out.print(“输入一个整数:“); 10 a = reader.nextInt(); 11 System.out.print(“再输入一个整数:“); 12 b = reader.nextInt(); 13 System.out.println( “排序前:“ + a + “,“ + b ); 14 if(a b) 15 16 temp = a; 17 a = b; 18 b = temp; 19 20 System.out.println(“排序后:“ + a +
29、 “,“ + b ); 21 ,【例2-10】对给定的三个数,求最大数的平方。,设一变量max存放最大数,首先将第一个数a放入变量max中,再将max与其它数逐一比较,较大数则存放到max中,当所有数都比较结束之后,max中存放的一定最大数。其算法流程如图所示。,1 /* 求三个数中最大数的平方 */ 2 import javax.swing.*; 3 public class Example2_10 4 5 public static void main(String args) 6 7 int a = 5, b = 9, c = 7, max; 8 max = a; 9 if (bmax)
30、 max = b; 10 if (cmax) max = c; 11 JOptionPane.showMessageDialog(null,“ 最大数的平方为:“+ max * max); 12 System.exit(0); 13 14 ,2、双分支选择结构 有时需要在条件表达式不成立的时候执行不同的语句,可以使用另一种双分支选择结构的条件语句,即ifelse语句。双分支选择结构的语法格式为:,if(表达式) 语句块1; else 语句块2;,这个语法的意思是,当条件式成立时(true),执行语句块1,否则(else)就执行语句块2。 对于双分支选择类型的条件语句,其流程如图所示:,【例2-
31、11】计算 y =,其算法流程如图所示:,x -5 或 x 5,-5 x 5,1 /* if-else应用示例 */ 2 import java.util.*; 3 public class Example2_11 4 5 public static void main(String args) 6 7 double x, y; 8 Scanner sc = new Scanner(System.in); 9 x = sc.nextDouble(); 10 if( x -5 ) 11 y = Math.sqrt( 25 - x * x ); 12 else 13 y = Math.sqrt(
32、x * x - 25 ); 14 System.out.println(“y = “+y); 15 16 ,【例2-12】编写一程序,根据月份判断季节。,1 /* if-else-if 结构. */ 2 import javax.swing.*; 3 class Example2_12 4 public static void main(String args) 5 6 int month = 4; / 4月份 7 String season; 8 if(month = 12 | month = 1 | month = 2) 9 season = “冬天“; 10 else if(month
33、= 3 | month = 4 | month = 5) 11 season = “春天“; 12 else if(month = 6 | month = 7 | month = 8) 13 season = “夏天“; 14 else if(month = 9 | month = 10 | month = 11) 15 season = “秋天“; 16 else 17 season = “不合法的月份“; 18 JOptionPane.showMessageDialog(null,“4月是 “ + season + “.“); 19 System.exit(0); 20 21 ,2.4.5
34、 switch语句,switch语句是一个多分支选择语句,也叫开关语句。它可以根据一个整型表达式有条件地选择一个语句执行。,switch(变量名称或表达式) case 判断常量1: 程序段1; break; case判断常量2: 程序段2; break; case判断常量n: 程序段n; break; default: 程序段n + 1; ,switch语句的流程图如图所示:,【例2-13】将百分制转换为五级记分制。,1 /* switch开关语句 */ 2 import javax.swing.*; 3 public class Example2_13 4 5 public static v
35、oid main(String args) 6 7 int 分数 = 82; 8 String grade; 9 switch(分数/10) 10 11 case 10 : 12 case 9: 13 grade = “优“; 14 break; 15 case 8: 16 grade = “良“; 17 break;,18 case 7: 19 grade = “中“; 20 break; 21 case 6: 22 grade = “及格“; 23 break; 24 default: 25 grade = “不及格“; 26 27 JOptionPane.showMessageDialo
36、g(null, “成绩等级:“ + grade); 28 System.exit(0); 29 30 ,注意:这里不能使用下列程序段:switch(分数)case 分数=90 : grade=“优“;break; case 分数=80 : grade=“良“;break; case 分数=70 : grade=“中“;break; case 分数=60 : grade=“及格“;break;default: grade=“不及格“;因为case分支的值必须与switch(分数)中的分数数据类型一致,而“分数=90”为关系运算,其值为true或false,是布尔型,不是int型。,2.4.6 循
37、环语句,在程序设计过程中,经常需要将一些功能按一定的要求重复执行多次,我们将这一过程称为循环。 循环结构是程序设计中一种很重要的结构。其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。,1、for循环语句,for循环语句的语法结构如下:,for(循环变量赋初值;循环条件;增量表达式) 循环体语句块; ,循环体,在for语句中,其语法成分是;(1)循环变量赋初值是初始循环的表达式,它在循环开始的时候就被执行一次。(2)循环条件决定什么时候终止循环,这个表达式在每次循环的过程被计算一次。当表达式计算结果为false的时候,这个循环
38、结束。(3)增量表达式是每循环一次循环变量增加多少(即步长)的表达式。(4)循环体是被重复执行的程序段。,for语句的执行过程是这样的:,首先执行循环变量赋初值,完成必要的初始化工作; 再判断循环条件,若循环条件能满足,则进入循环体中执行循环体的语句; 执行完循环体之后,紧接着执行for语句中的增量表达式,以便改变循环条件,这一轮循环就结束了。 第二轮循环又从判断循环条件开始,若循环条件仍能满足,则继续循环,否则跳出整个for语句,执行后续语句。,循环语句的执行过程,【例2-14】求从1加到100的和。,/* 累加器 */ import javax.swing.JOptionPane;publ
39、ic class Example2_14 public static void main(String args) int sum=0; for(int i=1;i=100;i+)sum=sum+i;JOptionPane.showMessageDialog(null,“1+2+3+.+100= “+sum);System.exit(0); /退出程序 ,在程序中,i是改变条件表达式的循环变量。在开始循环之初,循环变量i=1,sum=0,这时,i100,满足循环条件,因此可以进入循环体,执行第10行累加语句:sum + i = 1 + 0 = 1 ,将结果再放回到变量sum中,完成第一次循环。
40、接着,循环变量自加1(i+),此时,i=2,再和循环条件比较,如此反复,sum = sum + i一直累加,直到运行了100次,i=101,循环条件i=100不再满足,循环结束。,将程序保存为Example2_14.java。编译程序: javac Example2_14.java 运行程序: java Example2_14 程序的运行结果如图所示:,【例2-15】求10!。,计算n! ,由于pn = n! = n * (n 1) * (n 2 ) * * 2 * 1 = n * (n - 1)! ,因此可以得到递推公式: pn = n * pn-1 ,pn-1 = ( n 1 ) * pn
41、-2p1 = 1因此,我们可以用一个变量p来存放推算出来的值,当循环变量i从1递增到n时,用循环执行 p = p * i ,每一次p的新值都是原p值的i倍,最后递推求到n!。,/*乘法器 */ import javax.swing.JOptionPane; public class Example2_15 public static void main(String args) int s=1, i=1; for (i=1; i=10; i+) p = p * i; JOptionPane.showMessageDialog(null,“1 * 2 * 3 * * 10 = “ + p);Sy
42、stem.exit(0); /退出程序 ,for语句条件中的三个表达式可省略,但表达式之间的分号不能省略。若for语句条件中的三个表达式都省略,则为无限循环:,for(;) /无限循环,一般,为避免无限循环,上述语句的循环体中应包含能够退出的语句。可以使用break语句强行退出循环,忽略循环体中的任何其他语句和循环的条件测试。在循环中遇到break语句时,循环被终止,程序跳到循环后面的语句继续运行。,【例2-16】无限循环需安排退出循环语句。,class Example2_16 public static void main(String args) int i=1;for(;)System.
43、out.println(i); i+;if(i5)break;System.out.println(“循环已经结束!“); ,2、while循环语句,Java语言提供了两种while语句:即while语句和do-while语句。这两种循环结构的流程图如图所示。,(1)while语句 while语句的基本语法结构为:,while(循环条件表达式) 循环体;,首先,while语句执行条件表达式,它返回一个boolean值(true或者false)。如果条件表达式返回true,则执行花括号中的循环体语句。然后继续测试条件表达式并执行循环体代码,直到条件表达式返回false。,【例2-17】老汉卖西瓜
44、,第一天卖西瓜总数的一半多一个,第二天卖剩下的一半多一个,以后每天都是卖前一天剩下的一半多一个,到第10天只剩下一个。求西瓜总数是多少?,算法分析:设共有x个西瓜,卖一半多一个后,还剩下x/2 - 1个,所以,每天的西瓜数可以用迭代表示: xn = (xn+1 + 1) * 2。且在卖了9天之后(第10天),x = 1。这是可以用循环来处理的迭代问题。,/* while循环 */ import javax.swing.JOptionPane; public class Example2_17 public static void main(String args) int x=1, i=1;
45、while(i=9)x=(x+1)*2;i+;JOptionPane.showMessageDialog(null,“x = “ + x);System.exit(0); /退出程序 ,(2)do-while语句 do-while语句的语法结构为:,do循环体; while(循环条件表达式);,do-while语句与while语句的区别在于,语句先执行循环中的语句再计算条件表达式,所以do-while语句的循环体至少被执行一次。,【例2-18】 计算 1! + 2! + 3! + + 10!,import javax.swing.JOptionPane; public class Exampl
46、e2_18 public static void main(String args) int sum = 0, i = 1, p = 1;do p = p * i; sum = sum + p; i+; while(i=10);,JOptionPane.showMessageDialog(null,“ 1! + 2! + 3! + + 10! = “ + sum);System.exit(0); /退出程序 ,3、循环嵌套循环可以嵌套,在一个循环体内包含另一个完整的循环,叫做循环嵌套。循环嵌套运行时,外循环每执行一次,内层循环要执行一个周期。,【例2-19】应用循环嵌套,编写一个按9行9列排列
47、输出的乘法九九表程序。,算法分析:用双重循环控制乘法九九表按9行9列排列输出,用外循环变量i控制行数,i从1到9取值。内循环变量j控制列数,由于i * j = j * i,故内循环变量j没有必要从1到9取值,只需从1到i取值就够了。外循环变量i每执行一次,内循环变量j执行i 次。,1 /* 循环嵌套应用 */ 2 public class Example2_19 3 4 public static void main(String args) 5 6 int i,j; 7 for( i = 1;i = 9;i+) 8 9 for(j = 1;j = i;j+) 10 11 System.out.print(i+“x“+j+“=“+i*j+“t“); 13 System.out.println(); 15 16 ,