JAVA编程基础.doc_第1页
JAVA编程基础.doc_第2页
JAVA编程基础.doc_第3页
JAVA编程基础.doc_第4页
JAVA编程基础.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二讲 JAVA编程基础2.1JAVA中的基本类型JAVA语言是强类型语言,JAVA编译器对所有的表达式和参数都要进行类型相容性的检测,以保证类型是兼容的。任何类型的不匹配都是错误的,在编译器完成编译之前,错误必须被改正。2.1.1变量和数据类型数据类型关键字占用位数取值范围默认值布尔型boolean8true、falsefalse字节型byte8-1281270字符型char160216-1u0000短整型short16-215215-10整型int32-231231-10长整型long64-263263-10浮点型float321.4013E-453.4028E380.0F双精度浮点型double642.22551E-2081.7977E3080.0D2.1.2变量的类型转换当目的类型能够完全包容源类型时,可以进行安全的类型转换(不会编译错误),称为自动类型转换(也叫隐式类型转换),否则要进行强制转换。int i=4;double d=3.99;i=d; /errori=(int)d;int ( byte, char, short)long ( int )float( int )double ( float , long) byte by=1;char c=by;2.1.3字面量(立即数)数字前加“0”表示八进制数字前加“0x”或“0X”表示十六进制0123 123 0x123整数字面量将被视作整形(int),但是如果它的值没有超过对应类型的范围时,不会产生错误,否则编译错误如果字面量的值超过了int的范围,要在字面量后加上小写或大写的“L”表示是一个long型,否则编译错误231 =2*230=2*230=2*210*210*210小数型字面量将视作double类型,如果要表示float型,要在否面加上“f”或“F”例2.1:byte i=4;byte j=130;/error!long l=0x7fffffffffffffffL;float f=3.14;/error - float f=3.14f-float f= (float)3.4;int a=(int)3.14;2.1.4常量在JAVA中通过关键字final定义常量final int DATA=5;DATA=6;2.1.5表达式运算过程中的类型提升计算结果的类型将使用操作数中最大的类型a+b*c+d例2.2class Testpublic static void main(String args)byte b=5;b= (b-2);System.out.println(b);这个例子看似简单,但是暗藏“杀机”:b-2运算中,b是byte类型,2是int型,所以b-2的结果为int型,再将int型的结果赋值给b时程序报了错。程序可以修改为:b=(byte)(b-2);2.1.6变量的作用域变量的作用域是自声明后到其所在的代码块结束为止。例2.3public class TestScopepublic static void main(String args)int x = 12; int q = 96; / x和q都可用 System.out.println(x is +x); System.out.println(q is +q); q = x; /* 错误的行,只有x可用, q 超出了作用域范围 */ System.out.println(x is +x); 在一个变量的有效作用域中,不能再定义一个与其相同名称的变量。例2.4public class TestScopepublic static void main(String args)int x = 12; int x = 96; System.out.println(x is +x); /* 错误*/ q = x; System.out.println(x is +x); 2.2运算符2.2.1算术运算符+:加-:减*:乘/:除%:取模 5%2+:自增 i+ +i-:自减 i- -i例2.5:假设有x个球要放进y个盒子中,每个盒子只能放z个球,请完成下面程序:class TestBallpublic static void main(String args)int x=10;int y=_;System.out.println(y);答案:(x+5)/62.2.2赋值运算=-= a-=b; a=a-b; a-=b+c*3; a=a-(b+c*3)+=*=/=%=2.2.3比较运算符=!=instanceof 检查是否是某个类的对象,如: “Hello” instanceof String 值为true待检测对象 instanceof 类型3.4 instanceof int2.2.4逻辑运算符& 与| 或 异或(相同为假,不同为真)! 非& 短路与| 短路或True & True =TrueTrue & False =false1 0True & False & True& True& True& True& True& True& TrueTrue| True = TrueTrue|false= TrueFalse| True= TrueFalse|False=FalseTrue| false| false| false| false| false| false| false| false| false| |false| |false| |false| |false| false“&”和“&”都是逻辑与的关系。他们的区别在于,无论那种情况“&”两边的表达式都会执行。而如果使用的是“&”时,当其左边的值为false时,不会执行右边的表达式。“|”和“|”都是逻辑或的关系。他们的区别在于,无论那种情况“|”两边的表达式都会执行。而如果使用的是“|”时,当其左边的值为true时,不会执行右边的表达式。2.2.5位运算符右移无符号右移10000000001110000100000001001110bc=b1b1例2.6public class ShiftTestpublic static void main(String args)int x=0x80000000;int y=0x80000000;x=x1;y=y1;System.out.println(0x800000001 = + Integer.toHexString(x);System.out.println(0x800000001 = + Integer.toHexString(y);输出:0x800000001=c00000000x800000001=400000002.3程序的流程控制2.3.1、分支语句(1) if-else它的功能是根据布尔表达式的值(true或者false)选择要执行的语句序列,使用时要注意else应和最近的if语句匹配。常见形式有:(1) 单独使用if语句,不加else语句if ( 布尔表达式 ) 布尔表达式为真时执行的语句序列(2) if语句和else语句配套使用的单条件测试if ( 布尔表达式 ) 布尔表达式为真时执行的语句序列else 布尔表达式为假时执行的语句序列(2)switch 语句switch 语句也叫case语句switch语句常用形式为:switch(expr1)case expr2:ststements;break;case expr3:ststements;break;default:ststements;break;switch(expr1)中的expr1必须与int类型是附值兼容的;byte、short、char可自动升级;不能使用浮点或long型case expr2中的expr2必须与int类型是附值兼容的常量表达式;当变量或表达式的值不能与任何case相匹配时,将执行default后的程序代码。如果没有break语句作为某一个case代码段的结束语句,则程序继续执行下一个case的代码段,而不管case表达式是否相符。例:2.7int x=9;final int Y=2;switch(x)default:System.out.println(default);case 1:System.out.println(case 1);case Y:System.out.println(case Y);则输出:defaultcase 1case Y例2.8int x=9;int y=2;switch(x)default:System.out.println(default);case 1:System.out.println(case 1);case y:System.out.println(case y);编译错误: y不是常量例:2.9int i=4;switch(i)default:System.out.println(default);case 0:System.out.println(0);break;case 1:System.out.println(1);break;case 2:System.out.println(2);break;输出default0例2.10水是生命之源,然而当今世界上70%以上的城市严重缺水。为了既满足居民的正常用水需求,又限制水的浪费,很多城市都采用了阶梯形水费收取制度。假定某城市居民用水价格为3.7元/吨,每人每月用水定额为3.5吨。居民用水超过定额20%以内者(含20%),超额部分按水价的二倍交费;超过20%以上40%以下(含40%)的部分,按照水价3倍交费;超过40%以上的部分,按照水价4倍交费。现在请你编写一个收缴税费的程序,在程序中定义家庭总人数n、当月用水总量t,输出应缴水费y。分析:(1)当t=n*3.5时,y=t*3.7;(2)当n*3.5t=n*3.5*(1+20%)时:y=n*3.5*3.7+(t-n*3.5)*3.7*2;(3)当n*3.5*(1+20%)tn*3.5*(1+40%)时:y=n*3.5*3.7 + n*3.5*20%*3.7*2 + n*3.5*(40%-20%)*3.7*3 + (t-n*3.5*(1+40%)*3.7*4;转换为程序:class Program public static void main(String args) double t=20;int n=3;double y=0;if(tn*3.5&t=n*3.5*(1+0.2)y=n*3.5*3.7+(t-n*3.5)*3.7*2;if(n*3.5*(1+0.2)t&tn*3.5*(1+0.4)y=n*3.5*3.7 + n*3.5*0.2*3.7*2 + n*3.5*(0.4-0.2)*3.7*3 + (t-n*3.5*(1+0.4)*3.7*4;System.out.println(应缴水费+y+元);输出:应缴水费156.14000000000001元虽然程序正确了,但是还有很多可以改进的:l 输出的值小数点后位数太多,无意义l if语句中条件冗余例2.11改进后的程序:import java.text.DecimalFormat; /引入java.text.DecimalFormat包,相当于includeclass Program public static void main(String args) double t=20;int n=3;double y=0;if(t=n*3.5) /使用if else 改进分支语句y=t*3.7;elseif(t=n*3.5*(1+0.2)y=n*3.5*3.7+(t-n*3.5)*3.7*2;elseif(t= n*3.5*(1+0.4)y=n*3.5*3.7 + n*3.5*0.2*3.7*2 + (t-n*3.5*(1+0.2)*3.7*3;elsey=n*3.5*3.7 + n*3.5*0.2*3.7*2 + n*3.5*(0.4-0.2)*3.7*3 + (t-n*3.5*(1+0.4)*3.7*4;DecimalFormat df=new DecimalFormat(0.00);System.out.println(应缴水费+df.format(y)+元); /保留小数点后2位数2.3.2循环语句(1)for循环语法:for(初始化语句;布尔表达式;增值语句)循环体;(2)while循环while(布尔表达式)循环体;(3)do-while语句do循环体;while(布尔表达式);一般惯例:for用于循环次数已知的情况下;while、do-while用于次数不可知的情况下例2.12一辆卡车撞人后逃跑了,当时有三人目击现场,但是都忘了车牌号(车牌是介于1000到9999之间的一个自然数),只能回忆起车牌的一些零碎信息。甲:车号的前两个数字相同;乙:车号的后两个数字相同;丙:它的平方根刚好是个整数。请根据线索编写程序,为警方提供帮助。class TestNumberpublic static void main(String args)int g,s,b,q,sqr_root;for(int i=1000;i=9999;i+)g=i%10;s=(i/10)%10;b=(i/100)%10;q=i/1000;sqr_root=(int)Math.sqrt(i);if(g=s & b=q & sqr_root*sqr_root=i)System.out.println(i);输出:7744 (88*88)例2.13使用for嵌套class TestNumber_2public static void main(String args)int num=0;for(int i=0;i=9;i+)for(int j=1;j=9;j+)num=j*1000+j*100+i*10+i;double sqr_root=Math.sqrt(num);if(sqr_root=(int)sqr_root)System.out.println(i);2.3.3特殊流程控制(1)break从switch语句、循环语句中退出(2)continue跳过本次循环,执行下一轮循环2.4上机练习任选一题:1、编写JAVA程序,根据人的体重和身高,计算其体质数:判断某人是否肥胖,要根据其身高(h)和体重(w)两个因素综合考虑。医务工作者经过广泛的调查分析,提出了按“体质数”(t=w/h2,其中,w:公斤,体重;h:米,身高)对肥胖程度进行划分:当t18时,瘦,营养不良当t介于18到25之间(18=t25)时,正常当t介于25到27之间(25=t=27时,有必要作医学减肥2、以下是一条手机短信:想知道您的性格指数么?随便取一个介于125到999之间的整数,乘以81后把得到的数各位上的数字相加取和。如果和是个两位数,还要把这个两位数的个位与十位相加。得到的和减去不吉利的数字4,再乘以50,这就得到了您的“性格指数”。编写JAVA程序,输出125到999中每个数值的“性格指数”3、研究人员发现,一个成年人的身高主要有以下几个方面的因素综合决定:自身的性别、先天遗传因素如父亲身高、母亲身高、后天因素如是否

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论