第2章Java编程基础.docx

上传人:b****0 文档编号:12572390 上传时间:2023-04-20 格式:DOCX 页数:17 大小:22.08KB
下载 相关 举报
第2章Java编程基础.docx_第1页
第1页 / 共17页
第2章Java编程基础.docx_第2页
第2页 / 共17页
第2章Java编程基础.docx_第3页
第3页 / 共17页
第2章Java编程基础.docx_第4页
第4页 / 共17页
第2章Java编程基础.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

第2章Java编程基础.docx

《第2章Java编程基础.docx》由会员分享,可在线阅读,更多相关《第2章Java编程基础.docx(17页珍藏版)》请在冰豆网上搜索。

第2章Java编程基础.docx

第2章Java编程基础

第2章Java编程基础

Java编程基础主要学习Java语言的基本语法,包括标识符与关键字、数据类型、运算符、表达式、变量声明等语言成分及流程控制语句;数组、字符串的使用等。

2.1知识点回顾

1.Java语言基本语法

程序代码是由标识符、关键字、分隔符和注释组成的。

标识符是用来标识类名、变量名、方法名、类型名、数组名、文件名等的一个字符序列;关键字就是已经被赋予特定意义的一些标识符;分隔符用来分隔两个语法成份;注释是程序中用于说明和解释的一段文字。

Java语言的数据类型分为两大类:

基本数据类型和引用数据类型。

基本数据类型是由一种简单数据构成的数据类型,这种简单数据的值是不可分解的,它可直接参与该类型所容许的运算。

语言预先定义了8个基本数据类型:

byte、short、int、long、float、double、char、boolean。

Java的引用数据类型包括类(class)、接口(interface)、数组(array)。

基本数据类型的变量保存数据值,而引用数据类型的变量保存对象的地址。

Java是一种强类型语言,因此各种变量的使用必须严格遵守“先声明后使用”的原则。

对变量的学习注意从变量声明、变量初始化、变量的作用域3个方面入手。

常量是用final修饰的变量。

Java语言的运算符可分为单目运算符、双目运算符和三目运算符,有算术运算符、逻辑运算符、位运算符、关系运算符、条件运算符及括号运算符、字符串连接运算符、点运算符、对象运算符等等,这些运算符可以联合使用形成表达式实现任意复杂的运算。

除顺序结构外,Java语言还提供了选择、循环、跳转3种程序控制结构,分别用语句if...else、switch...case...、while、do...while、for、break、continue、return语句实现。

2.数组

数组是相同类型的数据按顺序组成的一种复合数据类型。

数组的使用经历声明、创建、初始化和引用数组元素;数组的定义和使用都是通过[]运算符进行的,通过数组名加下标可以访问数组中的元素,下标从0开始排序;所有数组都有一个非常重要的成员---length,可以获得数组长度;数组既可以作为方法的参数又可以作为方法的返回值;从类型上看,数组可以分为对象数组和基本数据类型数组,两者在使用方法上几乎完全一致,唯一的差别在于对象数组容纳的是对象的引用,而基本类型数组容纳的是具体的数值;对数组的访问不能越界,否则会产生一个运行期错误:

ArrayIndexOutOfBoundsException。

3.字符串

字符串是n(n>=0)个字符的有限序列。

Java中字符串的实现可使用两个类,String和StringBuilder。

它们分别适合于定长和不定长字符串(这两个类都被声明为final,不能被继承)。

Java中容许将字符串常量当做对象来使用,String和StringBuilder类分别提供了大量对字符串进行操作的方法,使得字符串的处理更加容易。

因此,读者应尽可能的熟悉它们,从而提高编程效率。

正则表达式是和字符串操作有关的一个常用概念,使用它可提高在字符串匹配与检索方面的编程效率。

2.2实验练习

【实验目的】

通过调试、完成、编制多个Java程序,熟练掌握Java的基本语法及数组、字符串的使用。

并注意从一开始就养成良好的编程习惯,遵守Java程序设计的行业规范。

【实验内容】

1.上机运行下列程序,注意观察输出的结果。

//认识args的作用

publicclassMainTest{

publicstaticvoidmain(Stringargs[]){

intn=args.length;

if(n==0)

System.out.println("noparament!

");

else{

System.out.println("numberofparaments:

"+n);

for(inti=0;i

System.out.println("args["+i+"]="+args[i]);

}

}

}

2.上机运行下列程序,注意观察输出的结果。

//认识Unicode字符集,因此Java代码中可以出现汉字,但不建议使用。

publicclassUnicodeTest{

publicstaticvoidmain(Stringargs[]){

for(int汉字编码=20302;汉字编码<=20322;汉字编码++)

System.out.print((char)汉字编码);

}

}

3.填充、运行下面程序,并注意观察输出的结果。

//输出英文字母表,了解原始数据类型间的相互转换

publicclassEnglish{

publicstaticvoidmain(Stringargs[]){

intstartPosition=0,endPosition=0;

charcStart=‘a’,cEnd=‘z’;

代码1//把cStart转换成int类型,并将结果赋给startPosition

代码2//把cEnd转换成int类型,并将结果赋给endPosition

System.out.println(“英文字母共有:

”+endPosition-startPosition+1+”个”);

for(inti=startPosition,i<=endPosition,i++){

charc=‘\0’;

代码3//把i转换成char类型,并将结果赋给c

System.out.println(“”+c);

}

}

}

请修改、补充上述程序使其能够输出俄文、日文等字母表。

4.填充、运行下面程序,并注意观察输出的结果。

//猜数游戏,让学生了解循环及分支语句

importjava.util.*;

publicclassGuessNumber{

publicstaticvoidmain(Stringargs[]){

System.out.println(“给你一个1至100之间的整数,请猜猜这个数”);

intrealNumber=(int)(Math.random()*100)+1;

intyourGuess=0;

Scannerreader=newScanner(System.in);

System.out.println(“输入你的猜测:

”);

代码4//reader调用方法获取用户从键盘输入的整数,并赋给yourGuess

while(代码5){

if(代码6){

System.out.println(“大了,请继续:

”);

代码7//reader调用方法获取用户输入的整数,并赋给yourGuess

}elseif(代码8){

System.out.println(“小了,请继续:

”);

代码9//reader调用方法获取用户输入的整数,并赋给yourGuess

}

}//endofwhile

System.out.println(“猜对了!

”);

}

}

了解并掌握Scanner类及其对象的使用。

5.填充、运行下面程序,并注意观察输出的结果。

//用switch结构实现两个数据的和、差、积、商的运算,让学生了解多条件分支语句。

importjava.io.*;

publicclassCalculator{

publicstaticvoidmain(Stringargs[])throwsIOException{

intx=10,y=5,z;

charch;//变量ch用来存放从键盘输入的字符

代码段10//从键盘输入+、-、*、/赋给变量ch

//下面用switch结构实现计算器的功能

switch(代码11){

case'+':

z=x+y;

System.out.println("x+y="+z);//'+'时输出x+y的值

break;

case'-':

z=x-y;

System.out.println("x-y="+z);//'-'时输出x-y的值

break;

case'*':

z=x*y;

System.out.println("x*y="+z);//'*'时输出x*y的值

break;

case'/':

z=x/y;

System.out.println("x/y="+z);//'/'时输出x/y的值

break;

default:

System.out.println("InputError!

");

//输入其它字符时提示出错

}

}

}

可以有几种不同的方法从键盘输入数据?

6.优化下面的程序

//实现对数组元素的快速查找,通过该例加强学生对数组的掌握,并了解Arrays类的功能(利用Arrays类的静态方法sort()可以轻松实现对数组的快速排序)。

importjava.util.*;

publicclassSortFind{

publicstaticvoidmain(Stringargs[]){

intn=0,start,end,middle;

System.out.println(“从键盘输入一个整数,程序将判断该数是否在一个数组中”);

inta[]={12,34,56,78,31,154,-11,99,101};

Arrays.sort(a);

Scannerreader=newScanner(System.in);

while(reader.hasNextInt()){

n=reader.nextInt();

start=0;

end=a.length;

middle=(start+end)/2;

intcount=0;

while(n!

=a[middle]){

if(n>a[middle])

start=middle;

else

end=middle;

middle=(start+end)/2;

count++;

if(count>a.length/2)

break;

}

if(count>a.length/2)

System.out.println(“:

”+n+“不在是数组中”);

else

System.out.println(“:

”+n+“是数组中的元素”);

}//endofouterwhile

System.out.println(“你输入的数据不是整数”);

}//endofmain

}//endofclass

7.仔细阅读下面程序,并分别尝试在版本1.4和1.5以上的jdk中调试并注意观察结果。

//了解JDK1.5中的新增特性---自动装包和拆包

publicclassTest2{

publicstaticvoidmain(Stringargs[]){

Booleanb=newBoolean(“TRUE”);

if(b){

for(Integeri=0;i<10;++i)

System.out.println(i);

}

}

}

Java的每一个原始数据类型都对应有它们的包装类,如int的包装类是Integer,float的包装类是Float,char的包装类是Character等。

原始数据类型和它们的包装类分别适用于不同的场合,如要进行算数运算应使用原始数据类型的数据,要实现原始数据类型的数据与其它类型的转换应使用相应包装类中的方法。

但为了简化代码编写JDK1.5提供了一新的特性---自动装包和拆包,实现原始数据类型与包装类间的自动转换。

自动装包指Java编译器会自动的把原型类型的数据按照需要包装成为对象类型,自动拆包就是把对象类型的数据根据需要自动转换成原型类型数据的过程。

8.仔细阅读、填充、运行下面程序,并注意观察输出的结果。

importjava.util.*;

publicclassDemoStringTokenizer{

publicstaticvoidmain(Stringargs[]){

Strings="sheisagoodteacher!

";

StringTokenizerfenxi=代码12//空格或逗号做分隔符

intnumber=代码13//统计可分隔的单词数

while(代码14){//判断是否还有未提取的单词

Stringstr=代码15;//取下一个单词

System.out.println(str);

System.out.println("还剩"+fenxi.countTokens()+"个单词");

}

System.out.println("s共有单词"+number+"个");

}

}

利用字符串对象的split()方法重写上面程序。

9.下面程序的功能是将一个字符串中的小写字母变成大写字母,将大写字母变成小写字母。

阅读、填充并运行下面程序。

importjava.util.*;

publicclassTransform{

publicstaticvoidmain(Stringargs[]){

Strings=newString("abcABC123");

System.out.println(s);

chara[]=代码16;

for(inti=0;i

if(代码17)//如果是小写

a[i]=Character.toUpperCase(a[i]);

elseif(Character.isUpperCase(a[i]))

代码18;//转换为小写

}

s=newString(a);

System.out.println(s);

}

}

10.根据下面注释的要求将程序补充完整,并上机运行。

通过该例熟悉Java的String类提供的各种字符串操作方法。

classStringExample{

publicstaticvoidmain(Stringargs[]){

Strings1=newString("youareastudent"),

s2=newString("howareyou");

if(代码19){//判断s1与s2是否相同

System.out.println("s1与s2相同");

}else{

System.out.println("s1与s2不相同");

}

Strings3=newString("61030219851022024");

if(代码20){//判断s3的前缀是否是“610”

System.out.println("陕西省的身份证");

}

Strings4=newString("你"),s5=newString("我");

if(代码21){//按照字典顺序比较s4与s5

System.out.println("按字典序s4大于s5");

}else{

System.out.println("按字典序s4小于s5");

}

intposition=0;

Stringpath="c:

\\java\\jsp\\A.java";

position=代码22//获取path中最后出现目录分隔符号的位置

System.out.println("c:

\\java\\jsp\\A.java中最后出现\\的位置:

"+position);

StringfileName=代码23//获取path中“A.java”子字符串

System.out.println("c:

\\java\\jsp\\A.java中含有的文件名:

"+fileName);

Strings6=newString("100"),s7=newString("123.678");

intn1=代码24//将s6转化成int型数据

doublen2=代码25//将s7转化成double型数据

doublen=n1+n2;

System.out.println(n);

Strings8=newString("ABCDEF");

chara[]=代码26//将s8存放到数组a中

for(inti=a.length-1;i>=0;i--){

System.out.printf("%3c",a[i]);

}

}

}

2.5习题

一、选择题

1.声明inta=10;请判断下面3个运算中不能通过Java编译器。

a.a=a/2; b.a=a/3; c.a=a*2.89;d.都不能

2.下面赋值语句中错误的是。

a.floatf=23.1fb.doubled=2.3E12c.charc=‘\r’d.bytebb=445

3.设a=8,则表达式a>>>1的值是。

a.1b.2c.3d.4

4.下面会产生编译错误的语句是。

a.floatf=65.0fb.doubled=65.0c.byteb=300d.c=65

5.对于以下代码,变量result的可声明的类型为。

byteb=11;

shorts=13;

result=b*++s;

a.byte,short,int,long,float,doubleb.boolean,byte,short,int,long,float,double

c.byte,short,char,int,long,float,doubled.int,long,float,double

6.表达式(short)10/10.2*2的运算结果是类型。

a.shortb.intc.doubled.float

7.表达式5.4+”3.2”的运算结果是。

a.double型的8.6b.String型的”8.6”c.long型的8d.String型的”5.43.2”

8.下面程序段的结果。

publicclassTemp{

publicstaticvoidmain(Stringargs[]){

System.out.println(3.0/0);

}

}

a.编译失败b.运行期异常

c.打印输出Infinityd.java.lang.ArithmeticException异常抛出

9.publicclassTest{

publicstaticvoidmain(Stringargs[]){

try{

doublex=64.0,y=0.0;

System.out.println(x%y==x%y);

}catch(Exceptione){

System.out.println(“Exception”);

}

}

}

a.编译失败b.运行期异常c.打印输出trued.打印输出false

10.下面程序插入语句后程序可正常运行。

publicclassTest{

publicstaticvoidmain(Stringargs[]){

;

switch(x){

default:

System.out.println(“Hereitis!

”);

}

}

}

a.intx=6b.shortx=3;c.charx=’y’d.longx=4L

11.阅读下面的程序,描述正确的是。

publicclassMan{

  staticintarr[]=newint[10];

  publicstaticvoidmain(Stringa[]){

  System.out.println(arr[1]);

  }

}

 a.编译时将发生错误  b.编译时正确但是运行时出错

 c.输出为0d.输出为null

二、判断下面程序片段的对错,并指出相应的错误。

1.publicclassTest1{

privatefinalintI=10;

privatebytek=I;

publicstaticvoidmain(Stringargs[]){

System.out.println(k);

}

}

2.publicclassTest1{

publicstaticvoidmain(Stringargs[]){

for(i=0;j=0,i<10;++i,j+=i){

k+=i*j+j*j;

}

}

}

3.for(inti=0;i<10;i++){

if(x[i]>100)break;

if(x[i]<0)continue;

x[i+1]=x[i]+x[j]

}

4.while(x>>2){

x*=y

}

5.if(x++){

y=x*z;

x/=2;

}

else{

y=y*y;

++z;

}

6.publicclassTest2{

publicstaticvoidmain(Stringargs[]){

Booleanb=newBoolean(“TRUE”);

if(b){

for(Integeri=0;i<10;++i){

System.out.println(i);

}

}

}

}

//上面程序请基于jdk1.4以下版本回答问题

7.publicclassTest2{

publicstaticvoidmain(Stringargs[]){

intx=3,y=1;

if(x=y)

System.out.println(“Theyareequal”);

}

}

8.switch(i==10){

case‘1’:

i++

case“2”

i--;

case3:

i*=5;

default:

i%=3;

}

9.publicclassTest{

publicstaticvoidmain(Stri

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1