




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java操作符及执行流程控制作符主要操作符:+、-、*、/、=、+、-、+=、-=、=、!=、&、|、!、&、=、 .几乎所有的操作符只能够操作”基本数据类型”,=、=、!=可以操作所有的数据类型及对象String类型支持+、+=连接操作优先级问题:此处注意:任何数据类型与String类型进行+连接都将会先将其他的数据类型转变为String在连接成String类型而此时的+不再会做任何的计算demo:int i = 1;int j = 2;System.out.println(result: + i + j);/result:12System.out.println(i = j : + i = j);/ System.out.println(i = j : + (i = j);/ 关于赋值操作符:取右边的值(即右值),把它复制给左边(即左值)。右值可以是任何常数、变量、或者表达式(只要它能够生成一个值就行)。但左值必须是一个明确的、已命名的变量,也就是必须有一个物理空间可以存储等号右边的值基本数据类型赋值:直接将一个地方的值复制到另外一个地方a = b;/b的内容复制给a,若修改a或b其中的一个值,另外一个值不会受到任何影响对象赋值:真正操作的是对象的引用,所以将对象赋值给另外一个对象实际上是将一个对象的引用复制到另外一个地方它们其实指向的是内存中的同一块内容demo:ObjectRefrenceTest.javapackagejavabase.flowcontrol;publicclassObjectRefrenceTest/*对象赋值测试*/publicstaticvoidmain(Stringargs)Rowidrowid=newRowid();rowid.rowid=LIYIHUIZHANYUANYING;TiptopERPtopprod=newTiptopERP();TiptopERPtoptest=newTiptopERP();topprod.seesionId=0;topprod.DBType=Oracle;topprod.rowid=rowid;toptest=topprod;/对象赋值System.out.println(Before:);System.out.println(topprod:+topprod.seesionId+topprod.DBType+topprod.rowid.rowid);System.out.println(toptest:+toptest.seesionId+toptest.DBType+toptest.rowid.rowid);System.out.println(Afterchangetopprodobject:);/toptest.DBType=Informix;topprod.DBType=Informix;topprod.rowid.rowid=5201314131413141314;/此处改变了topprod.rowid对象的成员变量System.out.println(topprod:+topprod.seesionId+topprod.DBType+topprod.rowid.rowid);System.out.println(toptest:+toptest.seesionId+toptest.DBType+toptest.rowid.rowid);System.out.println(-);TiptopERPerp=newTiptopERP();TiptopERPmrpII=newTiptopERP();erp.seesionId=2;erp.DBType=DB2;erp.rowid=rowid;/此处直接将先前的rowid对象直接赋值给erp.rowidmrpII.seesionId=erp.seesionId;/对象成员变量int单独赋值mrpII.DBType=erp.DBType;/对象成员变量String单独赋值mrpII.rowid=erp.rowid;System.out.println(Before:);System.out.println(erp:+erp.seesionId+erp.DBType+erp.rowid.rowid);System.out.println(mrpII:+mrpII.seesionId+mrpII.DBType+mrpII.rowid.rowid);System.out.println(Afterchangrowid:);erp.rowid.rowid=LIYIHUIZHANYUANYING;/此处改变了erp.rowid对象的成员变量System.out.println(erp:+erp.seesionId+erp.DBType+erp.rowid.rowid);System.out.println(mrpII:+mrpII.seesionId+mrpII.DBType+mrpII.rowid.rowid);System.out.println(Afterchangeerpobject:);erp.seesionId=1;erp.DBType=Mysql;erp.rowid.rowid=5201314131413141314;/此处改变了erp.rowid对象的成员变量System.out.println(erp:+erp.seesionId+erp.DBType+erp.rowid.rowid);System.out.println(mrpII:+mrpII.seesionId+mrpII.DBType+mrpII.rowid.rowid);classTiptopERPintseesionId;/基本数据类型StringDBType;/String对象Rowidrowid;/一般对象classRowidStringrowid;/*输出结果:Before:topprod:0OracleLIYIHUIZHANYUANYINGtoptest:0OracleLIYIHUIZHANYUANYINGAfterchangetopprodobject:topprod:0Informix5201314131413141314/rowid值改变了toptest:0Informix5201314131413141314/rowid值改变了-Before:erp:2DB25201314131413141314/rowid值改变了mrpII:2DB25201314131413141314/rowid值改变了Afterchangrowid:erp:2DB2LIYIHUIZHANYUANYING/rowid值改变了mrpII:2DB2LIYIHUIZHANYUANYING/rowid值改变了Afterchangeerpobject:erp:1Mysql5201314131413141314/rowid值改变了mrpII:2DB25201314131413141314/rowid值改变了*/demo:PassObject.javapackage javabase.flowcontrol;class Letterchar c;public class PassObject /*对象引用*/static void f(Letter y)y.c = z;public static void main(String args) Letter x = new Letter();x.c = a;System.out.println(before:x.c = + x.c);f(x);System.out.println(after:x.c = + x.c);/*输出结果:before:x.c = aafter:x.c = z*/此类对于传递对象引用而引起的问题在Think In Java被称做”别名问题”使用中应注意此类陷阱+或-:前缀+/-先运算再生成值,后缀+/-先生成值再运算=与equals:比较2个实际值是否相等:对象用equals,基本数据类型用=比较对象的地址是否相等:对象/基本数据类型都用=demo:EqualsTest.javapackage javabase.flowcontrol;class ValueIntint id;class ValueStringString id;Overridepublic boolean equals(Object obj) boolean instanceFlag;instanceFlag = obj instanceof ValueString;if(!instanceFlag)return super.equals(obj);elseValueString vTemp = (ValueString)obj;if(vTemp.id.equals(this.id)return true;return false;public class EqualsTest /* =操作符、equals的区别*/public static void main(String args) /基本数据类型int i1 = 100;int i2 = 100;System.out.println(i1 = i2 : + (i1 = i2);/对象Integer n1 = new Integer(250);Integer n2 = new Integer(250);System.out.println(n1 = n2 : + (n1 = n2);System.out.println(n1 equals n2 : + n1.equals(n2);/自定义对象ValueInt vInt1 = new ValueInt();ValueInt vInt2 = new ValueInt();vInt1.id = vInt2.id = 32;System.out.println(vInt1 = vInt2 : + (vInt1 = vInt2);System.out.println(vInt1 equals vInt2 : + vInt1.equals(vInt2);ValueString vString1 = new ValueString();ValueString vString2 = new ValueString();vString1.id = vString2.id = 李艺辉;System.out.println(vString1 = vString2 : + (vString1 = vString2);System.out.println(vString1 equals vString2 : + vString1.equals(vString2);/String 对象比较复杂,后面会有String对象的详细解析/*输出结果:i1 = i2 : truen1 = n2 : falsen1 equals n2 : truevInt1 = vInt2 : falsevInt1 equals vInt2 : false /这是因为equals默认行为是比较2个对象的引用vString1 = vString2 : falsevString1 equals vString2 : true /复写该对象的equals方法后的比较*/逻辑操作符:&、|、!逻辑操作只可以应用于布尔值,注意逻辑操作的”短路”情况test(1) & test(2) & test(3) /顺序判断,只要前面有一个test为假后面的判断就不需要执行了test(1) | test(2) | test(3) /顺序判断,只要前面有一个test为真后面的判断就不需要执行了按位操作符:位与(&)、位或(|)、位非()、有符号位左移():若符号为正则高位补0,若符号为负则高位补1无符号位左移():无论正负高位全部补0如果对char、byte、short类型数值进行移位处理,那么在移位之前它们都将先被转换为int类型,并且得到的结果也是int类型,且移位后的数值结果只有低5位才有用(int类型为2的5次方)三元操作符:文章由郑州北大青鸟/?ws整理boolean-exp ? value0 : value1如果布尔表达式boolean-exp为true则计算value0,否则计算value1控制执行流程关键字:Java控制执行流程主要涉及的关键字if-else、while、do-while、for、return、break、continueJava并不支持goto語句,但是在java中仍然保留了goto条件判断:所有条件判断都利用条件表达式的真或假来决定执行流程注意:java不允许将一个数字等非boolean值作为布尔值使用,如果要在布尔测试中使用一个非布尔值则首先必须用一个条件表达式将其转换成布尔值。Ex:a是非boolean类型值 if(a) if(a!=0) while:先判断条件表达在执行循环体,条件为false则一次都不执行do-while:先执行循环体,再判断条件表达式,因此至少会执行一次for语句:for(int i = 1, j = 5;i 5;i+,j = i+2)for语句初始化部分实际上可以定义任意数量的变量,注意:但是这些变量都必须是同一种数据类型for语句中可以使用一系列有逗号表达式分隔的语句增强行的for循环:for(char c : “hello world”.toCharArray()如果for循环有索引或是步进,则上述增强行的for循环不能够直接满足需求Think in java 建议自写一个range()方法配合增强型的for循环import static net.mindview.util.range.* /此包需下载Ex:for(int i : range(10) /range(10)返回数组,元素为0.9for(int i : range(5,10) /range(5,10)返回数组,元素为5.9for(int i : range(5,10,3) /range(5,10,3)返回数组,元素为5.10 step 3while(true) = for(;)switch . case.break语句:switch(integral-selector) /integral-selector:选择因子必需是int或是char那样的整数值case integral-value1:statement:break;/Default:statement;单一case satatement后面需有break,避免case穿透到下一case statementreturn:指定一个方法的返回值,并退出该方法。如果一个方法声明有非void的返回值,那么必须确保每一条代码路径都将返回一个值break:终止当前循环体continue:停止循环体的当前迭代,然后退回循环起始处,开始下一次迭代goto:虽然java不再使用goto语句,但是依然保留了goto作为关键字在java中如果想实现goto一样跳转语句的功能可以使用标签编程请看如下demo:GotoLabel.javapackage javabase.flowcontrol;public class GotoLabel /*java标签编程应用*/public static void main(String args) int i = 0;outer: /此处不可以写其它的任何代码/System.out.println(outer man!);for(;true;)inner: /此处不可以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省苏州市葛江中学2026届九年级英语第一学期期末达标测试试题含解析
- 华山医院教学体系建设与实践
- 安徽省当涂县2026届九上化学期中考试模拟试题含解析
- 广联达教育培训
- 涉企收费迎检汇报
- 广东省深圳市南山区南山实验学校2026届九年级化学第一学期期中教学质量检测试题含解析
- 学院就业工作总结报告
- 组织部工作总结
- 江苏省无锡市南长实验中学2026届化学九上期中达标检测试题含解析
- 2026届广东省中学山市黄圃镇马新初级中学九年级化学第一学期期中质量检测试题含解析
- 2025年时事政治考试100题及答案
- 护理员安全培训内容课件
- 2025年全国中小学校党组织书记网络培训示范班在线考试题库及答案
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- 饮食营养与健康课件
- 地下车库系统环氧地坪施工组织设计
- 2022年浙江省公务员录用考试《申论》试卷及参考答案
- 医共体成员单位人力资源工作制度
- YY∕T 0953-2020 医用羧甲基壳聚糖(高清正版)
- 生物医学工程导论课件
- 宠物市场调研报告
评论
0/150
提交评论