《java编程基础(表达式运算符).ppt》由会员分享,可在线阅读,更多相关《java编程基础(表达式运算符).ppt(71页珍藏版)》请在三一办公上搜索。
1、运算符、表达式与语句,3.1 概述,程序是由许多语句组成的语句的基本单位是表达式与运算符,3.2 运算符,Java中提供的运算符,按照运算符的功能可以分为4类。赋值运算符算术运算符 关系运算符 逻辑运算符 位运算符,3.2.1 赋值运算符,3.2.1 赋值运算符,赋值运算符(=)用于为变量赋值。一次可以为多个变量赋值。例如:,int z=50;int x,y;x=y=z;,3.2.2 算术运算符,3.2.2 算术运算符,public class OperatorDemo01public static void main(String args)int i=10;int j=3;System.o
2、ut.println(i+“+”+j+”=”+(i+j);System.out.println(i+“-”+j+”=”+(i-j);System.out.println(i+“*”+j+”=”+(i*j);System.out.println(i+“/”+j+”=”+(i/j);System.out.println(i+“%”+j+”=”+(i%j);,10+3=1310-3=710*3=3010/3=310%3=1,3.2.2 算术运算符,3.2.2 算术运算符,自增与自减运算符也是各个语言中最常见到的语句,在java中仍然将他们保留了下来自增前加加:+a后加加:a+,先把a的值加一,再执行
3、整个语句,再执行整个语句,再把a的值加一,3.2.2 算术运算符,public class OperatorDemo02public static void main(String args)int a=3,b=3;int x=6,y=6;System.out.println(“a=”+a);System.out.println(“t a+=”+(a+)+”,a=”+a);System.out.println(“b=”+b);System.out.println(“t+b=”+(+b)+”,b=”+b);System.out.println(“x=”+x);System.out.println
4、(“t x-=”+(x-)+”,x=”+x);System.out.println(“y=”+y);System.out.println(“t-y=”+(-y)+”,y=”+y);,3.2.2 算术运算符,3.2.3 关系运算符,比较运算符用于测试两个操作数之间的关系,返回一个布尔值。,3.2.3 关系运算符,Public class OperatorDemo03public static void main(String atgs)System.out.println(“31=”+(31);System.out.println(“3=1=”+(3=1);System.out.println(
5、“3=1=”+(3=1);System.out.println(“3=1=”+(3=1);System.out.println(“3!=1=”+(3!=1);,31=true3=1=true3=1=false3=1=false3!=1=true,3.2.4 逻辑运算符,3.2.4 逻辑运算符,逻辑运算符本身也返回一个boolean值1)逻辑与:使用&表示,逻辑与是个双目运算符(即有两个操作数的运算符),只有当两个操作数都为真的时候,结果才为真;其余情况结果均为假。逻辑与表示的并且的意思。2)逻辑或:使用|表示,逻辑或也是个双目运算符,只有当两个操作数都为假的时候,结果才为假;其余情况结果均为真
6、。逻辑或表示或者的意思。关于逻辑运算符的短路特性 1)逻辑与:如果第一个操作数为 false,那么结果肯定就是 false,所以在这种情况下,将不会执行逻辑与后面的运算了,即发生了短路。2)逻辑或:如果第一个操作数为 true,那么结果肯定就是 true,所在在这种情况下,将不会执行逻辑或后面的运算了,即发生了短路。,3.2.4 逻辑运算符,3.2.4 逻辑运算符,Public class OperatorDemo04public static void main(String args)boolean a=true;boolean b=false;System.out.println(“a|
7、b”+(a|b);System.out.println(“a|b”+(a|b);System.out.println(“a,3.2.4 逻辑运算符,3.2.4 逻辑运算符,public class LogicTestpublic static void main(String args)int a=1;int b=2;int c=3;int d=4;/*boolean e=(a b),3.2.4 逻辑运算符,public class LogicTest2public static void main(String args)int a=1;int b=2;int c=3;int d=4;int
8、 f=5;boolean e=(a b),3.2.5 扩展赋值运算符,3.2.5 扩展赋值运算符,3.2.6 字符串连接,3.2.7 三元运算符,三元运算符(?:)可以代替if-else结构。运算过程如下图所示:,?,:,条件,表达式1,表达式2,String type=“工人”;salary=type.equals(“经理”)?3000:2000System.out.println(“我们的薪水是”+salary);,由于type不等于“经理”(条件为false),所以salary=2000。,3.2.7 三元运算符,public class Testpublic static void m
9、ain(String args)int a=1;int b=2;int c=3;int d=4;int e=a b?c:d;System.out.println(e);,3.2.8 运算符优先级,2.13.6 instanceof运算符,instanceof为对象引用运算符;如果在此运算符左侧对象是右侧类型的实例时,它将返回true;使用此运算符可以确定对象是否属于一个特定的类型。,class InstanceDemo public static void main(String args)InstanceDemo ins=new InstanceDemo();if(ins instanceo
10、f InstanceDemo)System.out.println(ins是InstanceDemo的实例!);else System.out.println(ins不是InstanceDemo的实例!);,3.3 流程控制,Java语言中程序流程语句的分类:条件语句循环语句跳转语句,顺序结构,3.3.1 条件语句,1、if else语句,根据条件是true还是false来执行相应的语句。,if(条件)单个语句else 单个语句,if(条件)语句组else 语句组,Java语言的if else语句可以嵌套使用。,1、if else语句,1、if else语句,1、if else语句,1、if
11、else语句,1、if else语句,1、if else语句,public class IfTestpublic static void main(String args)int a=3;int b=2;if(a b)System.out.println(a b);else if(a b)System.out.println(a b);elseSystem.out.println(a=b);,2、switch 语句,switch流程控制的语法如下:,switch(表达式)case 常量数值1语句(组)break;case 常量数值2语句(组)break;.default:语句(组),2、swi
12、tch 语句,public class SwitchTestpublic static void main(String args)int a=3;switch(a)case 3:System.out.println(a=3);break;case 1:System.out.println(a=1);break;case 2:System.out.println(a=2);break;default:System.out.println(default);if(3=a)System.out.println(a=3);else if(1=a)System.out.println(a=1);els
13、e if(2=a)System.out.println(a=2);elseSystem.out.println(default);,3.3.2 循环语句,Java中所提供的循环流程控制有:for循环流程控制while循环流程控制dowhile循环流程forin循环(JDK5.0新增)。,1、for 循环,for循环流程控制的语法如下:,/进入for循环流程控制 for(初始表达式;判断表达式;递增表达式)for循环主体;/结束for循环流程控制,1、for 循环,1、for 循环,1、for 循环,2、while 循环,如果不知道循环控制元素的范围到底是多少时,就可以利用while循环控制流程
14、。在进入while循环流程控制时,用户根本不知道到底要重复运行循环几次,决定权在于while循环的条件表达式以及循环控制元素。,/进入while循环流程控制while(条件表达式)while循环主体;/结束while循环流程控制,2、while 循环,2、while 循环,3、do.while 循环,do.while循环与while循环 的区别是dowhile的循环主体至少运行一次。语法如下:,dodo-while主体;while(条件表达式);,3、do.while 循环,3、do.while 循环,4、for/in 循环,for/in循环通常叫作增强的 for 或者 foreach循环,针
15、对数据群组执行遍历功能。for/in循环是 Java 5.0 中一个极为方便的特性。实际上它没有提供任何新的功能,但它显然能让一些日常编码任务变得更简单一些。如下例:,int primes=new int 2,3,5,7,11,13,17,19,23,29;for(int n:primes)System.out.println(n);,3.3.3 跳转语句,跳转流程控制用来中断循环,或是返回到指定语句的特殊流程控制。break流程控制Break流程控制是用来强迫中断运行该区块内的语句,使得程序流程跳出该区块,继续运行区块外部的语句。continue流程控制 continue流程控制通常与循环流
16、程配合使用,跳出本次循环,运行下次循环。,3.3.3 跳转语句,课堂练习,3.4 数 组,数组(array)是相同类型变量的集合,可以使用共同的名字引用它。数组中的一个特别要素是通过下标来访问它。数组提供了一种将有联系的信息分组的便利方法。,2.15.1 一维数组,一维数组实质上是相同类型变量列表。要创建一个数组,我们必须首先定义数组变量所需的类型。通用的一维数组的声明格式是:type var-name;或者:type var-name;所有数组的下标从0开始。,2.15.2 数组的初始化-1,使用new关键字来为数组分配内存。当运算符new被应用到一维数组时,它的一般形式如下:array-v
17、ar=new typesize;,2.15.3 数组的初始化-2,用运算符new 分配数组后,数组中的各下标的值如下所示:数字数组中的元素将会被自动初始化为零;布尔数组将被初始化为false;对象数组将被初始化为null(空)。,2.15.4 数组的初始化-3,在数组声明时自定义初始化数据,可以如下声明:int month_days=31,28,31,30,31,30,31,31,30,31,30,31;等同于:int month_days=new int 31,28,31,30,31,30,31,31,30,31,30,31;,2.15.5 数组的错误初始化,注意:只能在数组声明时用大括号对
18、来自定义数据,否则只能机械地分别对每个下标元素进行赋值。int month_days=new int12;month_days=31,28,31,30,31,30,31,31,30,31,30,31;/错误我们只能采用如下的方法为已经创建的数组赋值。int month_days=new int12;month_days0=31;month_days1=28;,2.15.6 多维数组,定义多维数组变量要将每个维数放在它们各自的方括号中。例如,下面语句定义了一个名为twoD 的二维数组变量。int twoD=new int45;,2.16 java.lang包,java.lang包是Java语言的
19、核心类库,包括了运行Java程序必不可少的系统类,如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等。每个Java程序运行时,系统都会自动地引入java.lang包。java.lang包的加载是缺省的。,2.12字符串,字符串常量:字符串常量是用双引号括住的一串字符。String对象:String是串的意思,这个类是表示字符串常量的类。StringBuffer对象:StringBuffer类被设计用于创建和操作动态字符串信息。,如:Hello World!,2.12.1 String对象,在Java中,字符串常量是一个类:String类,C语言中,字符串就是字符数组,两者是不同的。,
20、创建一个空的字符串对象。,创建一个非空字符串对象:,可以通过运算符”+”来连接字符串:,Stringtest=newString();或者:Stringtest;test=newString();,Stringhello=newString(“Hello World!”);或者:Stringhello=“Hello World!”;,Stringhello=newString(“Hello World!”);或者:Stringhello=Hello+“Happy”;,2.12.2 String 类方法,charAt():返回字符串中某个特定位置的字符 indexOf():返回字符串中某个特定字
21、符或子字符串首次出现的索引 toUpperCase():将字符串内的所有字符从小写改为大写 toLowerCase():将字符串内的所有字符从大写改为小写,2.12.3 StringBuffer对象,String对象一旦被初始化和赋值,它的值和所分配的内存就被固定了。要改变String对象的值,将会产生一个包含新值的新String对象。StringBuffer对象分配的内存会自动扩展以容纳新增的文本。,2.12.3 创建StringBuffer对象,使用默认构造函数:创建了不包含任何文本的对象,默认的容量是16个字符 StringBuffer sb=new StringBuffer();使用初
22、始化字符串:StringBuffer sb=new StringBuffer(“Hello);设定大小:创建不包含文本,容量是指定大小StringBuffer sb=new StringBuffer(30);,2.12.3 append()方法,通过append()方法将指定的文本添加到当前StringBuffer对象内容的结尾。,StringBuffer sb=new StringBuffer();sb.append(Build);sb.append(er);sb.append(.com);System.out.println(sb.toString();,课堂总结,Java提供了8种基本数据类型,分别是:byte、short、int、long、float、double、char及boolean。在Java中,字符串常量是一个类:String类。StringBuffer类被设计用与创建和操作动态字符串信息。为该对象分配的内存会自动扩展以容纳新增的文本。for/in循环通常叫作增强的 for 或者 foreach循环,它是 Java 5.0 中一个极为方便的特性。,提问时间,