【文档说明】JAVA大学教学课件第三章语言基础.ppt,共(32)页,439.535 KB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-45157.html
以下为本文档部分文字说明:
《Java语言程序设计》第三章:Java语言基础3.1引入程序举例:publicclassBasicsDemo{publicstaticvoidmain(String[]args){intsum=0;f
or(intcurrent=1;current<=10;current++){sum+=current;}System.out.println("Sum="+sum);}}可以看出,即使是一个小的程序,都
要使用JAVA编程语言的许多传统特性,其中包括变量、操作符和流程控制语句。本章将教给大家这些JAVA编程语言的基础知识。3.2变量-1变量:变量是程序语言中的名词,你可以在程序中使用变量来容纳数据,变量是Java程序中的基本存储单元
。变量的三要素:变量名,变量类型,变量作用域。变量名:变量的名字,使用变量名来引用变量包含的数据。变量类型:变量的数据类型,决定可以容纳什么样类型的数值,以及可以对它进行什么的操作。举例:intlargestIn
teger;floatlargestFloat;变量的作用域:变量的生存周期,由其所处的位置决定的。3.2变量-2变量名:(1)它必须是一个合法的标识符。一个标识符是以字母开头的一串Unicode字符。(2)它必须不是一个关键字、布尔型字符(true或者false)或者保留字null
。(3)它必须在作用域中是唯一的。在不同的作用域才允许存在相同名字的变量。[注]这里有个约定:变量名是以小写字母开头,而类名是以一个大写字母开头的。如果变量名包含了多个单词,而每个单词要组合在一起,则在每个单词
的第一个字母大写,比如isVisible。而下划线(_)可以处在变量的任何地方,但是一般地它只用在常数中分离单词,因为常数名都是用大写字母的,利用下划线可以看得更清楚。3.2变量-3标识符:用来标识类名、变量
名、方法名、类型名、数组名、文件名的有效字符序列,且满足如下命名规则。命名规则:Java语言规定标识符由字母、下划线、美元符号和数字组成,并且第一个字符不能是数字字符。关键字:就是Java语言中已经被赋予特定意义的一些单词。不可以把这类词作为名字来用。3.2变量-4变量的数据类
型:分类:原始数据类型和引用数据类型。JAVA支持的所有原始数据类型,及它们的大小和格式以及简短的描述。关键字描述大小/格式整型byte字节长度整型8位两个补码short短整型16位两个补码int整型32位两个补码long长整型64位两个补码实数float单精度浮点型32位IEEE754d
ouble双精度浮点型64位IEEE754其它类型char单个字符16位Unicode字符boolean布尔型数值(true或者false)真或假3.2变量-5各种原始数值举例:数值类型178int8864Llong37.266double37.266Ddouble87.363Ffl
oat26.77e3double'c'char'\u0000'char'\t'chartruebooleanfalseboolean3.2变量-6包装类:Java为基本类型提供包装类,这使得任何对对象的操作,也可以用来操作基本
类型。Java共有六个包装类,分别是Boolean、Character、Integer、Long、Float和Double,除了首字母大写之外,包装类与基本类型名字相似。3.2变量-7变量的作用域:变量的作用域是一个程序的区域,既该变量的生存期。根据程序中变量声明的
位置把变量的作用域分为四类:成员变量作用域局部变量作用域方法参数作用域异常处理参数作用域publicclassTest{privateinta;intgetA(){returna;};voidsetA(intaa){inttemp;temp=aa;a=temp;try{/
/…}catch(Exceptione){//…e.toString();};}}3.2变量-8常量(final变量):用final修饰的变量,其数值不能在初始化之后进行改变。这样的变量跟其它语言中的常量很相似。为了声明一个final变量,你可以在类型之前的变量声明使用fi
nal关键字,比如:finalintaFinalVar=0;前面的语句声明了一个final变量并一起对它进行了初始化。如果你在后面还想给aFinalVar赋其它的值的话,就会导致一个编译错误。在必要的时候,你可
以推迟对一个final本地变量进行初始化。3.3操作符-1操作符分成以下几类:算术运算符关系和条件运算符移位和逻辑运算符赋值运算符其它的运算符3.3操作符-2算术运算符运算符使用描述+op1+o
p2op1加上op2-op1-op2op1减去op2*op1*op2op1乘以op2/op1/op2op1除以op2%op1%op2op1除以op2的余数++op如果op是一个byte、short或者char型的,op变成int型--op取op的相反数
++op++自增1;它是在自增之前计算op的数值的。++++op自增1;它是在自增之后计算op的数值的。--op--自减1;它是在自减之前计算op的数值的。----op自减1;它是在自减之后计算op的数值的。3.3操作符-3关于前
增量和后增量的说明:inti=2;intj=3;intm=++j+i;intk=m+i++;3.3操作符-4关系与条件运算符运算符用法在什么情况下返回true>op1>op2op1大于op2的时候>=op1>=op2op1大于等于op2的时候
<op1<op2op1小于op2的时候<=op1<=op2op1小于等于op2的时候==op1==op2op1等于op2的时候!=op1!=op2op1不等于op2的时候3.3操作符-5逻辑运算符运算符用法在什么情况下返回true&&op1&&op2
op1和op2都是true,有条件地计算op2||op1||op2op1或者op2是true,有条件地计算op2!!opop为false3.3操作符-5classTest{publicstaticvoidmain(Stringarg[]){intb=2;intc=3;inta=0;if((6<
5)&&((a=b+c)>1))System.out.println("a="+a);System.out.println("a="+a);System.out.println("b="+b);System.out.println("
c="+c);}}3.3操作符-6位运算符运算符用法在什么情况下返回true>>op1>>op2将op1右移op2个位<<op1<<op2将op1左移op2个位>>>op1>>>op2将op1右移op2个位(无符号的)&op1&o
p2按位与|op1|op2按位或^op1^op2按位异或~~op2按位取反3.3操作符-6-13.3操作符-7其它运算符运算符描述?:作用相当于if-else语句[]用于声明数组,创建数组以及访问数组元
素.用于访问对象实例或者类的类成员函数(params)意义一个以逗号分开的参数系列(type)将数值转换为一个的类型new创建一个新的对象或者新的数组instanceof决定是否第一个运算对象是第二个运
算对象的一个实例3.3操作符-8各种运算符的优先顺序后缀运算符[].(params)expr++expr--单元运算符++expr--expr+expr-expr~!创建运算符new(type)expr乘法运算符*/%加法运算符+-移位运算符<<>>>>>关系运
算符<><=>=instanceof相等与不等==!=按位运算符AND&按位运算符OR^按位运算符OR|逻辑运算符AND&&逻辑运算符OR||条件运算符?:赋值运算符=+=-=*=/=%=&=^=|=<<=>>=>
>>=3.3操作符-9类型转换:类型按精度从“底”到“高”排列了顺序。byte->short->int->long->float->doublechar->int级别低的赋给级别高的变量,系统自动完成
数据类型的转换。floatx=100;如果输出x的值,结果将是100.0例如intx=50;floaty;y=x;如果输出y的值,结果将是50.0。级别高的值赋给级别底变量,必须使用显示类型转换运算。例如:intx=(int)23.89;longy=(long)34.98
F;强制转换运算可能导致精度的损失。3.3操作符-10问题:1、两个byte类型的数相加是什么样的呢?2、char和short类型?3.4流程控制语句-11、If语句:(条件表达式必须是布尔类型的)public
classIfElseDemo{publicstaticvoidmain(String[]args){inttestscore=76;chargrade;if(testscore>=90){grade='A';}elseif(te
stscore>=80){grade='B';}elseif(testscore>=70){grade='C';}elseif(testscore>=60){grade='D';}else{gr
ade='F';}System.out.println("Grade="+grade);}}程序的输出为:Grade=C3.4流程控制语句-22、switch语句:publicclassSwitchDemo{publicstaticvoidmain(String[]
args){intmonth=8;switch(month){case1:System.out.println("January");break;case2:System.out.println("Fe
bruary");break;case3:System.out.println("March");break;case4:System.out.println("April");break;case5:Sys
tem.out.println("May");break;case6:System.out.println("June");break;case7:System.out.println("July");break;case8:System.out.pri
ntln("August");break;case9:System.out.println("September");break;case10:System.out.println("October");br
eak;case11:System.out.println("November");break;case12:System.out.println("December");break;default:System.out.println(“Error");brea
k;}}}***switch表达式与case表达式的类型可以是bytecharshortintlong3.4流程控制语句-33、while语句:publicclassWhileDemo{publicstaticvoi
dmain(String[]args){StringcopyFromMe="Copythisstringuntilyou"+"encountertheletter'g'.";StringBuffercopyToMe=newStringBuffer();inti=0;char
c=copyFromMe.charAt(i);while(c!='g'){copyToMe.append(c);c=copyFromMe.charAt(++i);}System.out.println(copyToMe);}}最后一行打印出来的数值
为:Copythisstrin思考题:请用dowhile(直到型)语句改写3.4流程控制语句-44、for语句:publicclassForDemo{publicstaticvoidmain(Strin
g[]args){int[]arrayOfInts={32,87,3,589,12,1076,2000,8,622,127};for(inti=0;i<arrayOfInts.length;i++){System.out.print(arrayOfI
nts[i]+"");}System.out.println();}}这个程序的输出为:3287358912107620008622127.无限循环for(;true;)for(;;)while(true)dowhile(true)//5.0以后版本使用新的for语句for(:)比如:
for(inttem:arrayOfInt)3.4流程控制语句-55、break语句:publicclassBreakDemo{publicstaticvoidmain(String[]args){i
nt[]arrayOfInts={32,87,3,589,12,1076,2000,8,622,127};intsearchfor=12;inti=0;booleanfoundIt=false;for(;i<
arrayOfInts.length;i++){if(arrayOfInts[i]==searchfor){foundIt=true;break;}}if(foundIt){System.out.println("Found"+se
archfor+"atindex"+i);}else{System.out.println(searchfor+"notinthearray");}}}这个程序的输出为:Found12atindex43.4流程控制语句-66、continue语句:pub
licclassContinueDemo{publicstaticvoidmain(String[]args){StringBuffersearchMe=newStringBuffer("peterpiperpickedapecko
fpickledpeppers");intmax=searchMe.length();intnumPs=0;for(inti=0;i<max;i++){//interestedonlyinp'sif(searchMe.charAt(i)!='p')continue
;//processp'snumPs++;searchMe.setCharAt(i,'P');}System.out.println("Found"+numPs+"p'sinthestring.");System.out.println(searchMe);}}这
个程序的输出为:Found9p'sinthestring.PeterPiPerPickedaPeckofPickledPePPers3.4流程控制语句-77、带标号break和continue语句:classLabeledBrea
k{publicstaticvoidmain(Stringargs[]){intj;outer:for(;true;){inner:for(j=1;j<10;j++){if(j==1){System.out.println(j);continueinner;}i
f(j==2){System.out.println(j);continue;}if(j==3){System.out.println(j);breakouter;}}}}}思考题:另外一次跳出多重循环的方法。使用标记变量的连环跳。3.4流程控制
语句-88、return语句:最后讲讲分支结构的最后一个return语句。你可以使用return来退出当前的方法。控制流程返回到调用方法的下一个语句。这个return语句有两种形式:一种是返回一个数值,另外一种没有返回数值。为了返回一个数值,简单地,可以将数值放置在ret
urn关键字后面即可。例如:return++count;由return返回的数值类型必须匹配方法声明返回的数值类型。当方法被声明void,return的使用就不返回一个数值:return3.6小程序设计-11、计算程序的运行时间的方法:im
portjava.util.Calendar;classLesson2{publicstaticvoidmain(Stringargs[]){longcur1,cur2,interval;Calendarcal=Calendar.getInstance();cur1=
cal.getTimeInMillis();for(inti=1;i<1000;i++){System.out.println(i);}cal=Calendar.getInstance();cur2=cal.getTimeInMillis();System.out.pr
intln(cur1);System.out.println(cur2);interval=cur2-cur1;System.out.println(interval);}}3.6小程序设计-22、数学函数与随机数。3、随机产生26个字母A~Z
中的一个。4、计算n!的两种方法:递归和循环。5、输出100以内的素数,要求每行五个数。6、汉诺塔问题。