一、任务要求
- 完成基本数据类型的使用。
- 完成基本运算符和表达式的使用。
- 完成基本控制语句:判断、分支、循环等语句的使用。
- 完成数组的使用。
- 所有源代码必须加入行一级注释。
二、任务的理解
本次任务是让我们对Java编程中所遇到的基础知识进行学习和掌握,通过此次任务的完成可以对数据类型,基本的运算符,基本的控制语句以及数组的灵活使用,并在学习的过程中养成对代码注释的良好习惯。
三、完成方法
采用sublime编程软件进行编译,并生成类程序文件,在Windows命令窗口运行,观察运行结果并分析。
四、完成过程与结果
- 1.数据类型的声明方法
public class task1_1{ //创建类名为任务1.1public static void main(String args[]){ //定义主函数mainbyte a=20; //声明byte型变量a并赋值short b=100; //声明short型变量b并赋值int c=100; //声明int型变量c并赋值long d=50l; //声明long型变量d并赋值,注意的是赋的值后面加字母lfloat e=3.14f; //声明float型变量e并赋值,后面加字母fdouble f=5.77;//声明double型变量f并赋值,double为默认的浮点型char g='g'; //声明char型变量g并赋值,注意char只能为单个字符 boolean h=true;//声明boolean型变量h并赋值只有true和false两个值
需要注意的就是各个数据类型的取值范围不同,以及long类型赋值时需在后面加字母L,float类型赋值时需在后面加字母F,默认的浮点型为double类型,char类型是字符型,只能赋予单个字符,布尔型只有true和false两个值。
- 2.变量的使用范围
{//语句块//变量的使用范围int x=10; //定义变量x{ //在主方法中定义复合语句块int y=40; //定义局部变量ySystem.out.println(x+"\n"+y); //输出x与yint z=245; //定义z变量boolean m=true; //定义布尔型变量mSystem.out.println(m); //复合语句执行前的m的输出{ //在复合语句块中增加复合语句块m=y>z; //比较y是否大于z,并将结果赋予布尔型变量mSystem.out.println(z+"\n"+m); //输出z和m}System.out.println(m); //仍然输出复合语句块执行后的结果}String word ="hello java"; //定义字符串wordSystem.out.println(word); //输出字符串,复合语句块中的变量都不能输出}System.out.println("-----end-----");
运行结果:
复合语句中的变量不能在复合语句外进行运算和调用,但可以对外部变量进行运算和输出,并且改变外部变量的值。
- 3.if语句和if…else语句的使用
{//语句块//if语句和if...else语句的使用int x=52; //声明int型变量xint y=32; //声明int型变量yif(x>y){ //判断x是否大于ySystem.out.println("x大于y"); //是的话输出x大于y} if(x<y){ //判断x是否小于ySystem.out.println("x小于y"); //是的话输出x小于y} int math=95; //声明int型变量mathint english=44; //声明int型变量englishif(math>60){ //判断math是否大于60System.out.println("数学及格了"); //是的话输出数学及格了}else{ System.out.println("数学不及格"); //否的话输出数学不及格}if(english>60){ //判断english是否大于60System.out.println("英语及格了"); //是的话输出英语及格了}else{ System.out.println("英语不及格"); //否的话输出英语不及格}}System.out.println("-----end-----");
先判断if后括号内的表达式的值是否为真,若为真则输出后面语句,否则跳过或者输出else语句内容。
运行结果:
- 4.if…else if语句的使用方法
{//语句块//if,else if的使用方法 int a=20; //定义int型变量a并赋值为20if(a>30){ //判断a是否大于30System.out.println("a的值大于30"); //如果大于30则输出a的值大于30}else if(a>10){ //失败后再判断a是否大于10System.out.println("a的值大于10,但小于或等于30"); //如果大于10则输出a的值大于10,但小于或等于30}else if(a>0){ //失败后再判断a是否大于0System.out.println("a的值大于0,但小于或等于10"); //如果大于0则输出a的值大于0,但小于或等于10}else{ System.out.println("a的值小于0"); //非以上情况则输出a的值小于0}}System.out.println("-----end-----");
if…else if的语法就是可以进行多次判断,简化代码内容。
运行结果:
- 5.switch语句的运用
{//语句块//switch语句的运用String str="马云"; //定义字符串strswitch(str){ //运用switch语句case "马化腾": //定义case语句中的常量1System.out.println("腾讯老板"); //二者一样时输出信息break; //跳出循环的语句case "马云": //定义case语句中的常量2System.out.println("阿里巴巴老板"); //输出信息break; //返回语句default: //默认语句System.out.println("是其他人"); //输出信息}}System.out.println("-----end-----");
switch语句和if…else if语句基本作用相似,当switch对应的变量与case对应的内容相吻合时执行语句,需要break语句来跳出循环。
运行结果:
- 6.while语句使用
{//语句块//while语句从1加到10int i=1; //定义int型变量iint sum=0; //定义int型变量sumwhile(i<=10){ //判断i是否小于等于10sum=sum+i; //满足条件执行循环体求和i++; //变量i自增}System.out.println("sum="+sum); //输出sum}System.out.println("-----end-----");
while语句就是对条件判断,复合条件就对循环体进行循环,直到不符合条件为止。
运行结果:
- 7.while和do…while之间的区别
{//语句块//比较while和do...while的区别int b=100;while(b==60){ //指定进入循环体条件b为60时进入循环System.out.println("ok1"); //循环体b--;}int c=100; //声明变量cdo{ //do...while循环体System.out.println("ok2"); c--;}while(c==60); //指定循环条件c为60时执行循环体}System.out.println("-----end-----");
while语句需要先进行判断,复合条件才能进入循环体,而do…while则是先进行一次循环再进行判断是否能够进行下一次循环。
运行结果:
- 8.for语句的使用
{//语句块//求2到100的偶数值之和int zhihe=0; //定义求和结果的变量for(int oushu=2;oushu<=100;oushu=oushu+2) //每循环一次偶数加2,直到100结束{ zhihe=zhihe+oushu; //累加到变量zhihe中}System.out.println("2到100的偶数之和为"+zhihe); //输出结果}System.out.println("-----end-----");
for语句执行方法为,先进行第一个分号前的初始化操作,再对第二个分号前的语句进行判断,如果为真则执行循环,循环一次后执行第三个表达式再进行第二个分号前的语句判断,直到判断为假结束循环。
运行结果:
- 9.中断的使用方法
{//中断的使用方法for(int i=0;i<=100;i++){ //for语句i小于等于100时执行循环体,i累加System.out.print(i+" "); //输出i的值if(i==6){ //if判断i是否等于6,等于6就执行下面语句break; //跳出当前的for循环}}System.out.println();System.out.println("-----end-----"); for(int a=0;a<3;a++){ //外层循环语句for(int b=0;b<6;b++){ //内层循环语句if(b==4){ //判断语句 break; //当b为4时跳出最内层循环继续执行外部的循环}System.out.println("a="+a+" b="+b); //输出a和b的结果}}System.out.println("-----end-----"); Loop:for(int c=0;c<3;c++){ //带有标签名的for循环体for(int d=0;d<6;d++){ //嵌套的for循环体if(d==4){ //if判断语句break Loop; //跳出Loop标签标记的循环体}System.out.println("c="+c+" d="+d); //输出c和d的值}}System.out.println("1到20的奇数有:"); //输出一段文字for (int jishu=1;jishu<20;jishu++){ //for循环语句,当jishu小于20时执行循环体,jishu自增if(jishu%2==0){ //判断jishu这个变量能否被2整除continue; //被2整除就跳出此次循环执行jishu++,再进行循环}System.out.print(jishu+" "); //输出1到20的奇数值}}System.out.println();System.out.println("-----end-----");
break语句为跳出当前的循环体,break加标签可以跳出指定标签的循环体,continue语句是跳出此次循环直接进入下一个循环。
运行结果:
- 10.数组的使用
{//语句块//使用一位数组int day[]=new int[]{31,28,31,30,31,30,31,31,30,31,30,31};//定义一维数组day,类型为int,并进行内存分配for(int i=0;i<12;i++){ //for循环,月份i增加,并且小于12个月System.out.println((i+1)+"月有"+day[i]+"天"); //输出对应月份的信息,注意数组的下标都是从0开始}System.out.println("-----end-----"); }{//语句块//使用二维数组int a[][]=new int[3][4]; //定义二维数组a,使用new关键字分配内存时,各个元素初始值为0for(int i=0;i<a.length;i++){ //行循环for(int j=0;j<a[i].length;j++){ //列循环System.out.print(a[i][j]); //将数组元素输出}System.out.println(); //换行}System.out.println("-----end-----");
在使用数组之前,必须首先定义数组变量所属的类型。并且在为数组分配内存空间时必须指明数组的长度,数组的下标是从0开始。使用new关键字为数组分配内存时,整型数组中各个元素的初始值都为0.
运行结果:
- 11.foreach语句遍历数组
{//语句块//foreach遍历数组int arr[]={7,10,1}; //声明一维数组arrSystem.out.println("一维数组中的元素分别为:"); //输出一段汉字for(int x:arr){ //foreach语句,int x引用的变量,arr指定要循环遍历的数组System.out.print(x+" "); //输出x}}System.out.println();System.out.println("-----end-----");{//语句块//foreach遍历二维数组int arr2[][]={{4,3},{1,2}}; //定义二维数组 System.out.println("数组中的元素是:"); //输出一段汉字int i=0; //外层循环计数器变量for (int x[]:arr2){ //外层循环为一维数组i++; //外层计数器递增int j=0; //内层循环计数器for(int e:x){ //循环遍历每一个数组元素j++; //内层计数器递增if(i==arr2.length&&j==x.length){ //判断变量是二维数组中的最后一个元素System.out.print(e); //输出二维数组的最后一个元素}else System.out.print(e+"、"); //输出数组成员}}}}System.out.println("-----end-----");
遍历数组就是获取数组中的每个元素,foreach语句对于遍历数组更为简便。
运行结果:
- 12.填充替换数组元素
{//语句块//填充替换数组元素int arr[]=new int[5]; //创建int型数组Arrays.fill(arr,8); //数组填充,将8填充到数组的每个元素for (int i=0;i<arr.length;i++) { //循环遍历数组中的元素System.out.println("第"+i+"个元素是:"+arr[i]);//输出数组中的元素}System.out.println("-----end-----");int arr1[]=new int[]{45,12,2,10}; //定义并初始化int型数组arr1Arrays.fill(arr1,1,2,8); //将8赋予指定范围的数组元素for(int j=0;j<arr1.length;j++){ //循环遍历数组中的元素System.out.println("第"+j+"个元素是:"+arr1[j]);//输出数组的元素}}System.out.println("-----end-----");
填充替换数组元素的方法fill()需要通过Arrays类来调用,所以需要在定义类前导入java.util.Arrays;填充的范围是从第二个逗号前的数值到第三个逗号前数值,区间为左闭右开。
运行结果:
- 13.数组的排序、复制、查询
{//语句块//数组的排序、复制、查询int arr[]=new int[]{23,42,12,84,10}; //定义一维整型数组arr并赋值Arrays.sort(arr); //用sort方法对arr排序(升序)for(int i=0;i<arr.length;i++){ //遍历数组System.out.print(arr[i]+" "); //输出数组元素加空格}System.out.println(); //换行int newarr[]=Arrays.copyOf(arr,8); //复制数组arr的前8项,不够的补零for(int j=0;j<newarr.length;j++){ //遍历数组System.out.print(newarr[j]+" "); //输出新的数组元素}System.out.println(); //换行int newarr1[]=Arrays.copyOfRange(arr,0,3); //复制数组arr的第0元素到第3元素,不包括下标为3的元素for(int k=0;k<newarr1.length;k++){ //遍历数组System.out.print(newarr1[k]+" "); //输出新的数组元素}System.out.println(); //换行int ia[]=new int[]{1,8,9,4,5}; //定义新的数组ia并赋值Arrays.sort(ia); //sort排序int index=Arrays.binarySearch(ia,4); //查找数组ia中元素4的索引位置System.out.println("4的索引位置是:"+index); //将索引输出}System.out.println("-----end-----");
运行结果:
五、总结
通过此次任务我学会了Java语言的基础操作,以及多种注意事项,不管是变量的声明方法还是循环语句的中断过程,都需要注意一些细节的问题,比如do…while语句后的while()后要加;而while语句则不需要;,数组的填充以及复制语句中限定范围时必须小于数组的大小,而且区间都是前闭后开。