基本任务1.1Java语言基础

it2024-01-15  65

一、任务要求

完成基本数据类型的使用。完成基本运算符和表达式的使用。完成基本控制语句:判断、分支、循环等语句的使用。完成数组的使用。所有源代码必须加入行一级注释。

二、任务的理解

本次任务是让我们对Java编程中所遇到的基础知识进行学习和掌握,通过此次任务的完成可以对数据类型,基本的运算符,基本的控制语句以及数组的灵活使用,并在学习的过程中养成对代码注释的良好习惯。

三、完成方法

采用sublime编程软件进行编译,并生成类程序文件,在Windows命令窗口运行,观察运行结果并分析。

四、完成过程与结果

1.数据类型的声明方法 public class task1_1{ //创建类名为任务1.1 public static void main(String args[]){ //定义主函数main byte a=20; //声明byte型变量a并赋值 short b=100; //声明short型变量b并赋值 int c=100; //声明int型变量c并赋值 long d=50l; //声明long型变量d并赋值,注意的是赋的值后面加字母l float e=3.14f; //声明float型变量e并赋值,后面加字母f double 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; //定义局部变量y System.out.println(x+"\n"+y); //输出x与y int z=245; //定义z变量 boolean m=true; //定义布尔型变量m System.out.println(m); //复合语句执行前的m的输出 { //在复合语句块中增加复合语句块 m=y>z; //比较y是否大于z,并将结果赋予布尔型变量m System.out.println(z+"\n"+m); //输出z和m } System.out.println(m); //仍然输出复合语句块执行后的结果 } String word ="hello java"; //定义字符串word System.out.println(word); //输出字符串,复合语句块中的变量都不能输出 } System.out.println("-----end-----");

运行结果: 复合语句中的变量不能在复合语句外进行运算和调用,但可以对外部变量进行运算和输出,并且改变外部变量的值。

3.if语句和if…else语句的使用 {//语句块//if语句和if...else语句的使用 int x=52; //声明int型变量x int y=32; //声明int型变量y if(x>y){ //判断x是否大于y System.out.println("x大于y"); //是的话输出x大于y } if(x<y){ //判断x是否小于y System.out.println("x小于y"); //是的话输出x小于y } int math=95; //声明int型变量math int english=44; //声明int型变量english if(math>60){ //判断math是否大于60 System.out.println("数学及格了"); //是的话输出数学及格了 }else{ System.out.println("数学不及格"); //否的话输出数学不及格 } if(english>60){ //判断english是否大于60 System.out.println("英语及格了"); //是的话输出英语及格了 }else{ System.out.println("英语不及格"); //否的话输出英语不及格 } } System.out.println("-----end-----");

先判断if后括号内的表达式的值是否为真,若为真则输出后面语句,否则跳过或者输出else语句内容。 运行结果:

4.if…else if语句的使用方法 {//语句块//if,else if的使用方法 int a=20; //定义int型变量a并赋值为20 if(a>30){ //判断a是否大于30 System.out.println("a的值大于30"); //如果大于30则输出a的值大于30 }else if(a>10){ //失败后再判断a是否大于10 System.out.println("a的值大于10,但小于或等于30"); //如果大于10则输出a的值大于10,但小于或等于30 }else if(a>0){ //失败后再判断a是否大于0 System.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="马云"; //定义字符串str switch(str){ //运用switch语句 case "马化腾": //定义case语句中的常量1 System.out.println("腾讯老板"); //二者一样时输出信息 break; //跳出循环的语句 case "马云": //定义case语句中的常量2 System.out.println("阿里巴巴老板"); //输出信息 break; //返回语句 default: //默认语句 System.out.println("是其他人"); //输出信息 } } System.out.println("-----end-----");

switch语句和if…else if语句基本作用相似,当switch对应的变量与case对应的内容相吻合时执行语句,需要break语句来跳出循环。 运行结果:

6.while语句使用 {//语句块//while语句从1加到10 int i=1; //定义int型变量i int sum=0; //定义int型变量sum while(i<=10){ //判断i是否小于等于10 sum=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; //声明变量c do{ //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关键字分配内存时,各个元素初始值为0 for(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}; //声明一维数组arr System.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型数组arr1 Arrays.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语句则不需要;,数组的填充以及复制语句中限定范围时必须小于数组的大小,而且区间都是前闭后开。

最新回复(0)