文档库 最新最全的文档下载
当前位置:文档库 › Java探究心得之三元运算符

Java探究心得之三元运算符

Java探究心得之三元运算符
Java探究心得之三元运算符

首先看一下三元运算符的格式

[条件语句]?[表达式1]:[表达式2]

其中如条件语句为真执行表达式1,否则执行表达式2.简单的例子就不举了,来点其它的。在JDK1.5以前的版本中,表达式1和表达式2都要求是相同的类型,比如都是String或者char 之类的,在JDK1.5以后,有了自动拆箱和装箱的原因,两者只要其中一种或者两者都能被拆箱即可,比如表达式1为Integer,而表达式2为int类型的,比如如下

1int a=1;

2Integer b=2;

3boolean c=ture;

4int d=c?b:a;

还有个需要注意的是,如果表达式1和表达式2的类型不相同,那么他们需要对交集类型的自动参考转换。例如如下这段代码

1String str="abc";

2StringBuilder strbu=new StringBuilder("def");

3boolean boo=true;

4CharSequence cs=boo?str:strbu;

因为String和StringBuilder都实现了CharSequence这个接口。

确定条件表达式结果类型的规则的核心是以下3点:

1如果表达式1和表达式2操作数具有相同的类型,那么它就是条件表达式的类型。

2如果一个表达式的类型是byte、short、char类型的,而另外一个是int类型的常量表达式,且它的值可以用类型byte、short、char三者之一表示的,那么条件表达式的类型就是三者之一

3否则,将对操作数类型进行二进制数字提升,而条件表达式的类型就是第二个和第三个操作数被提升之后的类型

以上的三点可以用如下的代码来帮助理解:

1char ch='a';

2int num=0;

3boolean bool=true;

4System.out.print(bool?ch:0);//这里不是bool?ch:num,那样会打印两个97

5System.out.print(!bool?num:ch);

这段代码打印的是a97。很显然,第二点的规则应用到第一个打印上了,返回的是char,第三点的规则应用到第二个打印上了,返回的是int。但是谁会在乎这个顺序导致的打印结果,所以为了避免不必要的麻烦,很显然显式强制类型转换是个很不错的选择-_-

1char ch='a';

2int num=0;

3boolean bool=true;

4System.out.print(bool?(char)ch:(char)0);

5System.out.print(!bool?(int)num:(int)ch);

还有值得注意的是表达式1和表达式2不一定非得是数据类型,还可以是自己定义的方法,只要方法有返回值就行。例如

1static int test1(int i){

2i+=1;

3return i;

4

5}

6

7static int test2(int i){

8i+=2;

9return i;

10}

11

12public static void ternary(){

13boolean boo=false;

14int c=boo?test1(1):test2(2); 15}

第三章 运算符和表达式

第三章运算符和表达式 3.1 运算符和表达式概述 使用运算符可以对运算对象(包括常量和变量)进行计算以得到计算结果。用运算符将运算对象连接成一个符合C语言语法规则的式称为表达式。另外,C语言中的表达式是可以嵌套的,即简单表达式经过运算符连接后还可以形成更为复杂的表达式。 根据运算符所连接的运算对象(操作数)的个数,可以将C语言中的运算符分为三类: (1) 单目(一元)运算符:只连接一个操作数的运算符。 (2) 双目(二元)运算符:带有两个操作数的运算符。 (3) 三目(三元)运算符:同时对三个操作数进行计算的运算符。 C语言中的表达式可以分为三类: (1) 单个常量或者单个变量是最简单的表达式。 (2) 带有运算符的表达式。 (3) 函数调用。 任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。所以运算对象、运算符和运算结果是运算的三大要素。 3.2 算术运算符和算术表达式 一、基本算术运算符和简单算术表达式 1. 基本算术运算符 C语言为用户提供的基本算术运算符包括:+(加)、-(减)、*(乘),/(除)、%(求余),这些运算符都是双目运算符,也即在生成算术表达式的时,基本算术运算符左右两侧都必须出现运算对象。 2. 简单算术表达式 当用基本算术运算符去连接常量或者变量时,就形成简单算术表达式。简单算术表达式的基本形式:data1 op data2。data1和data2表示某个常量或者变量,op代表上述5个基本算术运算符之一。假设有变量定义:int a=20,b=-5;则a+b、a-b、a*-2、20/-b、20%6、a%b等都是简单算术表达式。 3. 基本算术运算符使用说明 (1) +、-、*,/既可以连接整型数据,也可以连接实型数据。当参与这4个运算符的运算对

C语言第三章表达式与运算符笔记

3.1概述 1.C语言表达式:用C语言运算符将常量、变量、函数调用连接起来的有意义的式子。.C语言的表达式为算术表达式、赋值表达式、逗号表达式、条件表达式、关系表达式和逻辑表达式。 2.表达式的值的类型取决于参与运算的数据的类型。 3.关系运算表达式成立,则结果为1,代表“真”,否则结果为0,代表“假”。4.运算符按参与运算的对象个数可以分类:单目运算符、双目运算符和三目运算符。 3.2算术运算符与算术表达式 1.除法运算:当两个操作数都是整型时,除法视为整除,运算结果舍去小数部分,只保留整数部分。 2.取模运算(求余):运算结果为一个整型,这个数是整除运算的余数,符号与被除数符号相同。例如:8%3的结果是3,8%(-5)的结果是3。 3.取负运算(单目运算),即只有一个操作数参与运算。 4.注意:’\%’与’%%’都相同于显示% 5.算术运算符的优先级:括号、函数调用、取负、*/%、+- 6.结合性:从左至右。 3.3其他运算符的应用 3.3.1赋值运算符和赋值表达式 1.一般形式:变量赋值运算符表达式例如:a=5+10 2.赋值表达式的计算过程:首先计算表达式的值,然后将该值赋给左侧的变量。 3.复合的赋值运算:+=,-=,*=,/=,%=等例如:a+=b等价于a=a+b 4.说明:(1)赋值号左边只能是变量,不允许出现常量、函数调用和表达式。 (2)赋值表达式中的“表达式”,又可以是另一个赋值表达式。 (3)当赋值号两边的数据类型不同时,一般由系统自动进行类型转换。

其原则是,赋值号右边的数据类型转换成与左边的变量相同的数据类型。 3.3.2自增自减运算符 1.功能:自增、自减运算符的作用是使变量的值增1或减1。 2.当自增、自减运算符的前置(在变量之前)变量本身先自增(或自减),然后再参与运算; 3.当自增、自减运算符的后置(在变量之后)变量先参与运算,然后变量本身再自增(或自减)。 注:自增、自减运算符只能用于整型变量,不能用于常量或表达式。 4.-i++相当于-(i++) 从右至左的右结合性 5.i+++j相当于(i++)+j 3.3.3条件运算符和条件表达式 1.一般形式:表达式1?表达式2:表达式3 2.条件表达式的执行过程:首先计算表达式1,如果非0(真)则计算表达式2,表达式2的值作为条件表达式的值;如果表达式1的值为0(假),则计算表达式3,表达式3的值作为条件表达式的值。 3.3.4逗号运算符和逗号表达式 1.一般形式:表达式1,表达式2,……,表达式n 2.逗号表达式的计算过程是:先计算表达式1,再计算表达式2,依次计算直到表达式n,表达式n,表达式n的值是整个逗号表达式的值。 3.3.5 sizeof运算符 1.一般形式:sizeof(类型名或变量名) 类型名可以是基本类型名,也可以是其他的构造类型名 2.功能:sizeof运算给出指定类型在内存中所占的字节数。 数学函数 1.fabs(x) 求x的绝对值

JAVA运算符和条件结构

运算符和条件结构 3.1 训练的技能点 (1)学会使用关系运算符和逻辑运算符 (2)学会获取键盘输入的数据 (3)学会使用if-else和多重if条件结构 (4)学会使用switch结构 3.2 上机任务 【阶段一】指导:从键盘获取信息并判断是否合法 训练要点 (1)键盘输入 (2)条件运算符 (3)逻辑运算符 需求说明 (1)录入会员信息(会员号、会员生日、会员积分),并打印输出录入的信息; (2)功能1:判断录入的会员号是否合法(必须为4位整数),如果录入合法,显示录入的信息,如果不合法,则显示“录入信息失败”; 实现思路及关键代码 (1)创建文件,命名为AddCust.java。 (2)实现功能1: 使用Scanner获取用户的键盘输入,存储在变量custNo、custBirth、custScore中。Scanner input = new Scanner( System.in ); System.out.println( “请输入会员号<4位整数>:” ); //提示输入4位会员号 int custNo = input.nextInt( ); //从键盘输入会员号,存在变量custNo中 注意 在使用Scanner前,要在AddCust.java文件开头添加如下代码: import java.util.*; (3)在功能1的基础上实现功能2:判断会员号是否合法。 if ( 会员号有效的条件) {

//输出录入的会员信息 } else { //输出信息录入失败 } 参考解决方案 实现功能1: import java.util.*; public class AddCust { public static void main( String[ ] args ) { /* 以下部分是信息输入*/ System.out.println("录入客户信息\n"); //录入客户信息Scanner input = new Scanner( System.in ); System.out.println("请输入会员号(4位数字):"); int custNo = input.nextInt( ); System.out.println("请输入会员生日(月/日<用两位数字表示>):"); String custBirth = input.next(); System.out.print("请输入积分:"); int custScore = input.nextInt(); /* 以下部分是信息输出*/ System.out.println("\n已录入的会员信息是:"); //显示录入的信息System.out.println(custNo+"\t"+custBirth+"\t"+custScore); } } 实现功能2: import java.util.*; public class AddCust { public static void main( String[ ] args ) { /* 以下部分是信息输入*/ System.out.println("录入客户信息\n"); //录入客户信息Scanner input = new Scanner( System.in ); System.out.println("请输入会员号(4位数字):"); int custNo = input.nextInt( ); System.out.println("请输入会员生日(月/日<用两位数字表示>):");

java运算符与表达式

一、运算符 1、算术运算符 = - * / %: 例子1:怎样判断两个数是否整除? public class Helloword { public static void main(String[] args) { int number1=11; int number2=5; if(number1%number2==0){ System.out.println(number1+"与"+number2+"整除!"); }else{ System.out.println(number1+"与"+number2+"不整除!"); } } } 比如:78 7 和8 public class Helloword { public static void main(String[] args) { int number=78; int a=number/10; int b=number%10; System.out.println("a="+a); System.out.println("b="+b); } } 推广:如果是三位数,四位数?…. ++ 例子3:int a=5; Int b=a++; A=? b=? public class Helloword { public static void main(String[] args) { int a = 5; int b = a++;//先赋值b=a,后自增a=a+1 int b2=++a;//先自增a=a+1,再赋值b=a System.out.println("a=" + a);//a=6

System.out.println("b=" + b);//b=5 System.out.println("b2=" + b2);//b=6 } } -- 2、关系运算符 < <= > >= = = != 关系运算的结果:True false 3、逻辑运算符 !: &&: ||: ~: public class Helloword { public static void main(String[] args) { if( (10>5) && (10/0==0?true:false) ){ System.out.println("ture"); }else{ System.out.println("false"); } } } 报错!因为:执行(10/0==0?true:false)。 public class Helloword { public static void main(String[] args) { if( (10<5) && (10/0==0?true:false) ){ System.out.println("ture"); }else{ System.out.println("false"); } } } 不报错,因为:没有执行:执行(10/0==0?true:false)。 比较两种情况: && :短路与,只要第一个条件是false,第二个条件不判断& : 与不管第一个条件是什么,第二个条件一样判断

《Java范例开发大全》

下面是377个Java的例子。如果你是牛人,看看你能做出多少? 如果有人不相信这些例子都是Java做的,可以看看清华大学的《Java范例开发大全》实例1开发第一个Java程序 实例2自动提升 实例3自动转换 实例4常用基础类型之强制转换 实例5算术运算符 实例6关系运算符 实例7逻辑运算符 实例8位运算符 实例9移位运算符 实例10转型运算符 实例11常量与变量 实例12各种进制的转换 实例13 Java中的进制与移位运算符 实例14判断输入的年份是否为闰年 实例15抽奖活动 实例16xx乘法表 实例17如何列出素数 实例18 Java中的递归 实例19男生女生各多少人

实例20求xx数 实例21求任意一个正数的阶乘 实例22求n的n次方 实例23利用for循环输出几何图形 实例24xx 实例25求1到100之间的和 实例26存上100元需要多少天 实例27输出100之间的所有偶数 实例28如何判断回文数字 实例29输出100之间的所有奇数 实例30求最大的随机数 实例31判断字母分类 实例32优良及差 实例33打印任意一年日历 实例34一年四季的划分 实例35除0发生的算术异常(ArithmeticException) 实例36数组下标越界异常(ArrayIndexOutOfBoundsException)实例37数组元素类型不匹配异常(ArrayStoreException) 实例38强制类型转换异常(ClassCastException) 实例39索引越界异常(IndexOutOfBoundsException) 实例40空指针异常(NullPointerException)

java移位运算符详解

java移位运算符不外乎就这三种:<<(左移)、>>(带符 号右移)和>>>(无符号右移) 1、左移运算符 左移运算符<<使指定值的所有位都左移规定的次数。 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数。 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模。如对int 型移动33位,实际上只移动了33%32=1位。 2)运算规则 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 当左移的运算数是int 类型时,每移动1位它的第31位就要被移出并且丢弃; 当左移的运算数是long 类型时,每移动1位它的第63位就要被移出并且丢弃。 当左移的运算数是byte 和short类型时,将自动把这些类型扩大为 int 型。 3)数学意义 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方 4)计算过程: 例如:3 <<2(3为int型) 1)把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011, 2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位, 3)在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100, 转换为十进制是12。 移动的位数超过了该类型的最大位数, 如果移进高阶位(31或63位),那么该值将变为负值。下面的程序说明了这一点: Java代码 // Left shifting as a quick way to multiply by 2. public class MultByTwo { public static void main(String args[]) { int i; int num = 0xFFFFFFE; for(i=0; i<4; i++) { num = num << 1;

第三章。运算符和表达式2、分支结构

Top 1.运算符和表达式-2 2.分支结构 1. 运算符和表达式-2 1.1. 赋值运算 1.1.1. 使用“=”进行赋值运算 “=”称为赋值运算符,用于对变量赋值。关于赋值运算符,除了将右边的表达式计算出来赋给左边以外还具备如下特点:赋值表达式本身也有值,其本身之值即为所赋之值。示例代码如下所示: 1.int num =18, index; 2.System.out.println(index = num %5);// 结果为:3,赋值表达式本身也有值 3.System.out.println(index);// 结果为:3 4.int a, b, c; 5. a = b = c =100; 6.// c=100 整个表达式的值为100,将其赋值给b,同样b=(c=100)整个表达式 的值也为100,然后有将这个值赋给了a,所以a 的值也是100。 1.1. 2. 使用扩展赋值表达式 在赋值运算符”= ”前加上其它运算符,即为扩展赋值运算符,其效率高于赋值运算符,推荐使用,扩展赋值运算符如下图- 5所示:

图- 5 1.2. 字符连接运算 1.2.1. 使用“+”进行字符串连接 “+”除了可以进行算术运算以外,还可以实现字符串的连接,同时可以实现字符串与其他数据类型的“相连”。 当+ 号作用于两个数字类型变量时,是在进行算术运算。 当+ 号两边的变量有一个是字符串类型,即””括起来的时候,则其进行的是字符串的连接,连接后的结果为字符串类型。示例代码如下所示: 1.int a =100; 2.String msg ="a="+ a; 3.System.out.println(msg);//a=100,字符串拼接 4.msg =""+100+200; 5.System.out.println(msg);//结果为: 100200,””+100,为字符串100再拼 上200为100200 6.msg =100+200+""; 7.System.out.println(msg);//结果为:300,100+200为算术运算结果为300, 再加上””为300 1.3. 条件(三目)运算 1.3.1. 使用条件(三目)运算符

java中常见的几种运算符

Java中常见的几种运算符 第一:算术运算符:{+、-、*、/、%取余或是取模、++与--递增和递减。} 需要注意的几个地方:在进行除法运行时当两个整数相除时结果为整数,若除以一个整数除不尽时,这是就会返回整数部分,小数部分则将省略,这时就要涉及到浮点型数据了!递增和递减应注意的是:++或—写在变量前面,则该式子的值等于变量变化以前的值。2)++或—写在变量后面,则该式子的值等于变量变化以后的值。 第二:关系运算符:{==等于若两个值相等,返回一个真值、!=不等于、<小于、>大于、<=小于等于、>=大于等于}主要用于根据某个变量的值来执行特定的操作,并且返回一个布尔值,一般形式为:做操作数关系运算符右操作数! 第三:位运算符:{“&”代表与运算符两个条件都成立才算成立;“︳”代表或运算符,满足其中一个即可成立,对应的二进制位有一个为1 则为1,否则为0;“?”代表异或运算符,对应的二进制位相同为零,不相同为1}

第四:逻辑运算符:{“&&”代表与逻辑运算符两个条件都成立算成立,“︳︳”代表或逻辑运算符,满足其中一个条件即可,他们的结果都是boolean类型的ture或false} 第五:移位运算符:{“<<”代表向左移多少位;“>>”代表向又移多少位;“>>>”又移补零} 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 语法格式:需要移位的数字<<(>>)移位的次数 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2 的1 次方,左移n 位就相当于乘以2 的n 次方;右移n 位相当于除以2 的n 次方。如:b<<8相当于b*16;b>>8相当于b/16. 第六:三元运算符{语法格式:(布尔表达式)?(真值):(假植)}如果布尔表达式的条件为真那么执行的条件位真值,否则反之。【a=a+5等于a+=5】 第七:运算符的优先级: 1 () [] . 从左到右 2 ! +(正) -(负) ~ ++ -- 从右向左 3 * / % 从左向右 4 +(加) -(减) 从左向右 5 << >> >>> 从左向右

第三章 数据类型、运算符与表达式

第三章数据类型、运算符与表达式 一、选择题 1.以下选项中合法的c语言标识符是。 A) long B) _2Test C)3Dmax D)A.dat 2.以下不能定义为C语言标识符的是。 A) scanf B) V oid C)int D)_3com_ 3.在以下各组标识符中,合法的c语言标识符是①;②;③。 ①A)B0l B) table_l C) 0_t D) k% int t*.1 W10 point ②A)Fast_ B) void C)pb1 D) Fast+Big Abs fabs beep ③A)xy_ B) longdouble C)*p D)CHAR 变量l signed history Flaut 4.在以下各组标识符中,合法的c语言标识是①;②。 ①A)print B) i’am C)Pxg D)Cpp oodb one-half line# pow aBc 3pai His.age while ②A)_maln B)If C)txt D)int enclude _max REAL k_2 sln turbo 3COM _001 5.以下不能定义为c语言标识符的是。 A)_1234_ B)2_int_ C)int_2_ D)_1_2 6.以下不能定义为c语言标识符的是。 A) Main B) _0 C)_int D)sizeof 7.以下叙述中错误的是。 A) c语言的标识符允许使用保留字 B) c语言的标识符应尽量做到“见其名知其意” c) c语言的标识符必须以字母或下划线开头 D) c语言的标识符中,大、小写字母代表不同标识 8.以下叙述中正确的是。 A) 可以把define和if定义为C语言标识符 B) 可以把define定义为C语言标识符,但不能把if定义为c语言标识符 C) 可以把if定义为c语言标识符,但不能把define定义为c语言标识符 D) define和if都不能定义为c语言标识符 9.下面不属于c语言保留字的是。 A) char B) while C)typedef D)look 10.下面属于c语言保留字的是。 A) define B) include C)main D)enum 11. 是c语言的数据类型说明保留字。 A) Float B) signed C)integer D)Char 12.不合法的C语言字符常量是。 A) '\2' B) " " C) ' ' D) "\483" 13.合法的c语言长整型常量是。 A) 5876 B) 0L C)2.0E10 D)(long)58762

第三章 数据类型、运算符与表达式 练习与答案

第三章数据类型、运算符与表达式 [试题分类]: 1.{ 下列程序执行后的输出结果是________________。 #define MA(x) x*(x-1) mian() \{int a=1,b=2; pirntf(“%d\n”,MA(1+a+b));\} } 试题编号:E54749 答案:8 题型:填空题 2.C语言中基本数据类型包括整型、实型、字符型。() 试题编号:E57279 答案:正确 题型:判断题 3.{ 要得到下列结果: a, b A, B 97,98,65,66 请按要求完善程序。 main( ) \{char c1,c2; c1=’a’;c2=’b’; printf(“%c,%c ”,c1,c2); printf(“%c,%c\n”, ___); printf(“%d,%d,%d,%d\n”,_c1,c2,c1-32,c2-32); \} } 试题编号:E55118 答案:c1-32,c2-32 题型:填空题 4.能表示“整型变量x的绝对值小于5”的表达式是___。(注意本题答案中规定不得使用系统函数)。 试题编号:E55113 答案:(x<5)&&(x>-5) 题型:填空题

5.设有定义"int a,b=10;",则执行语句"a=b<<2+1;"后a的值___。试题编号:E55111 答案:80 题型:填空题 6.设有定义"int x=4;",则表达式"x+=x*=x+1"的值是___。 试题编号:E55110 答案:40 题型:填空题 7.有下列运算符:>>、&&、|、!=,优先级别最高的是___。 试题编号:E55109 答案:>> 题型:填空题 8.用十进制来表示无符号短整型数据的数值范围是___。 试题编号:E55108 答案:0~65535 题型:填空题 9.{ 设有以下变量说明语句 char w='A'; int x=10; float y=20; double z=30; 则执行赋值语句 x=w*x+z-y; 之后x所得值的数据类是___。 } 试题编号:E55106 答案:int型 & 整型 题型:填空题 10.{ 设有变量说明语句 double d=5.4; int a,b; 则执行下述语句组的输出结果是___。 b=((a=2.1)+1.5)/3.6; d*=b; printf("%f\n",d); } 试题编号:E55104

JAVA语言中常用的运算符

JAVA中常用的运算符有以下几种 我们日常了解到的运算符有有+(加号)、-(减号)、*(乘号)、/(除号)和%(求余),那么在JAVA中有哪些我们不知晓的运算符呢,下面就介绍下JAVA中的运算符。 一、自增和自减运算符 自增、自减运算符是单目运算符,可以放在操作元之前,也可以放在操作元之后。操作元必须是一个整型或浮点型变量。放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后再使该变量参与表达式的运算;放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后再将该变量加1(减1)。 二、算术运算符 ava中的算术运算符主要有+(加号)、-(减号)、*(乘号)、/(除号)和%(求余),它们都是二元运算符。 三、比较运算符 比较运算符属于二元运算符,用于程序中的变量和变量之间、变量和常量之间以及其他类型的信息之间的比较。比较运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果是true,否则结果是false。比较运算符通常用在条件语句中来作为判断的依据。 四、逻辑运算符 逻辑运算符包括&&(&)(逻辑与)、||(|)(逻辑或)和!(逻辑非),返回值为布尔类型的表达式,操作元也必须是boolean型数据。

和比较运算符相比,逻辑运算符可以表示更加复杂的条件,例如连接几个关系表达式进行判断。在逻辑运算符中,除了“!”是一元运算符之外,其余的都是二元运算符。 五、位运算符 位运算符用于处理整型和字符型的操作数,对其内存进行操作,数据在内存中以二进制的形式表示,例如int型变量7的二进制表示是00000000 00000000 00000000 00000111,-8的二进制表示是111111111 111111111 1111111 11111000,最高位是符号位,0表示正数,1表示负数。 六、运算符优先级 七、三元运算符 三元运算符是Java中唯一一个三目运算符,其操作元有三个,第一个是条件表达式,其余的是两个值,条件表达式成立时运算取第一个值,不成立时取第二个值,示例代码如下所示: boolean b = 20 < 45 ? true : false;

Java上机作业2_运算符和表达式分析

第三章运算符和表达式 一、大纲 1.理解表达式以及其相关概念 2.掌握算术赋值等运算符的使用 二、实验目标: 1.掌握表达式,优先级,结合性的概念。 2.掌握算数,赋值,增减量,逗号表达式的使用。 3.理解类型转换的含义和使用方法。 4.掌握输入输出运算符的使用。 5.能使用输入输出运算符结合变量和算术、赋值等运算符实现一个简单的现实功能。 三、实验方式: 要求学生自己独立完成 四、任务 4.1任务1:使用变量参与各种运算(时间:40分钟) 4.1.1.2(20分钟) 要求从键盘上接收三个整数a,b,c,分别求++a + b + c,a++ + b + c++,a + b++ + ++c 和++a + ++b + ++c的和,并将其输出。 a=1 b=2 c=3

4.1.2 任务目的 (1)理解变量在未被初始化的情况下其值随机。 (2)理解增量运算符的运算规则。 (3)理解优先级的概念。 4.1.3 任务要求 (1)先分析程序的执行结果,以及每一步语句执行后程序中各自变量的变化情况。 (2)如果分析有困难,可以先查看执行结果,再分析程序的执行情况。 4.1.4 难点提示 前++和后++的运算规则,以及优先级概念。 4.2任务2:变量与输入输出运算符的结合使用(时间:70分钟) 4.2.1 任务描述 4.2.1.1(15分钟) (1)分别定义三个int变量,从键盘上接收三个整数,然后对它们求和,输出求和结果。 (2)注意需要将求和的结果另外保存到一个变量中,然后再执行输出操作。 4.2.1.2(20分钟) 定义一个int类型的变量a,并从键盘接收一个整数,将其赋予a,定义一个float类型的变量b,并从键盘接收一个浮点数,将其赋予b,再定义一个float类型的变量c,计算a+b 的值,并将其赋予c。 4.2.1.3(15分钟) 编写一个程序,该程序要求输入一个float类型的数字并打印该数的立方值,并将其立方值赋给一个int类型的变量,打印该int类型的值。

java运算符基础入门

1 运算符 1:运算 对常量和变量进行操作的过程称为运算。 2:运算符 对常量和变量进行操作的符号称为运算符 3:操作数 参与运算的数据称为操作数 4:用运算符把常量或者变量连接起来符号java语法的式子就可以称为表达式。不同运算符连接的式子体现的是不同类型的表达式。 举例: int a = 3 + 4; 这是做了一个加法运算 +就是运算符,是算术运算符,我们还有其他很多的运算符 3,4就是参与运算的操作数据 3 + 4整体其实就是一个算数表达式

●+,-,*,/都是比较简单的操作,简单演示即可 ●+的几种作用: ?加法 ?正数 ?字符串连接符 ●除法的时候要注意一个问题: ?整数相除,只能得到整数 ?要想得到小数,可以*1.0 ●/和%的区别 ●++和--的应用 ?单独使用效果相同 ?参与运算使用,在操作数的前后效果不同●1:基本小题目 ●int a = 10; ●int b = 10; ●int c = 10; ● a = b++; ● c = --a; ● b = ++a; ● a = c--; ●请分别计算出a,b,c的值 ●2:比较复杂的题目 ●int a = 4; ●int b = (a++)+(++a)+(a*10); ●引出运算符的优先级

2 赋值运算符 ●符号: ?= , +=, -=, *=, /=, %= ?=为基本的赋值运算符,其他的为扩展的赋值运算符 ●如下操作写出结果 ?int a,b; a = b = 10; ?System.out.println(a); System.out.println(b); ?int a = 10; a += 20; System.out.println(a); ●面试题 ?short s=1, s = s+1; short s=1, s+=1; ?上面两个代码有没有问题,如果有,那里有问题 1:= 赋值号 2:+=加赋值 把左边和右边的结果赋值给左边。 注意:左边不能是常量 3:通过面试题引出+=运算符的特点: 有一个隐含的默认转换功能。 实际上等价于: short s = 1; s+=1等价于 s=(s的数据类型)(s+1 关系运算符

Java移位运算符

JAVA基础(JAVA移位运算符) . 移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。 三种移位运算符的移动规则和使用如下所示: <<运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。 语法格式: 需要移位的数字<<移位的次数 例如:3 << 2,则是将数字3左移2位 计算过程: 3 << 2 首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义: 在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2

的1次方,左移n位就相当于乘以2的n次方。 >>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1. 语法格式: 需要移位的数字>>移位的次数 例如11 >> 2,则是将数字11右移2位 计算过程:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010.转换为十进制是3.数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。 >>>运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。 其他结构和>>相似。 小结 二进制运算符,包括位运算符和移位运算符,使程序员可以在二进制基础上操作数字,可以更有效的进行运算,并且可以以二进制的形式存储和转换数据,是实现网络协议解析以及加密等算法的基础。 实例操作: public class URShift { public static void main(String[] args) { int i = -1; i >>>= 10;

JAVA运算符

JAVA运算符 JA V A有4大运算符,算术运算、位运算、关系运算、逻辑运算 1算术运算符 序号运算符含义 1 + 加法 2 - 减法 3 * 乘法 4 / 除法 5 % 模运算(取余运算) 6 ++ 递增运算 7 -- 递减运算 8 += 加法赋值 9 -= 减法赋值 1、加法运算符,相当于 1 + 1 = 2(补充浮点数与整数、整数与整数、浮点数与浮点数之间 的运算) 2、减法运算符,相当于 2 – 1 = 1 3、乘法运算符,相当于 2 * 2 = 4 4、除法运算符,相当于 4 / 2 = 2 5、取模运算符,其运算结果是整数除法的余数,它还能被用于浮点类型数的取余运算。 public static void main(String[] args) { 1、System.out.println(5 % 2); //整数运算取余 2、System.out.println(2.0 % 1.0); //浮点数运算取余 } 运算结果第一行为1 ,第二行为0.0 6、递增运算符, 1)、 a = x ++ , x++ 不增值。可以看做a = x ; x = x + 1 2)、 a = ++x , ++x 增值。可以看做a = x + 1; x = x + 1 7、递减运算符 1)、 a = x -- , x-- 不减值。可以看做 a = x ; x = x - 1 2)、 a = --x , --x 减值。可以看做a = x – 1 ; x = x - 1

8、加法赋值符,例如x += 1 , 相当于x = x + 1 9、减法赋值符,例如x -=1 , 相当于x = x - 1 注:JA V A运算符的优先级 运算符的优先级决定了多个运算符在一个表达式中运算的顺序,其中最简单的是乘除的优先级大于加减。而一旦表达式比较复杂时,程序员经常会忘记其他优先级规则,所以应该用括号明确规定计算顺序。 例:int a = 100 - 12.5 * 3 + 5 / 2 + 2 ; 这个表达式的顺序如果不加打括号,任何人都会先计算乘除,然后才计算加减。而只要加上括号后,这个表达式就有了个不同的含义。比如:int a = (100 – 12.5) * 3 + 5 / (2 + 2) 2基本数据类型之间的运算 2.1 整数与整数 整数与整数之间的运算规则如下: int/long a 运算符int/long b 结果 2 + 4 6 4 - 2 2 2 * 4 8 5 / 2 2 5 % 2 1 说明:整数与整数之间的计算,加法、减法、乘法和普通数学运算没什么区别, 但是在除法中,碰到有余数时,结果只取完整结果的整数部分。如果整型和长整 型的数计算的话,计算结果的类型是长整形。 2.2 整数与浮点数 整数与整数之间的运算规则如下: int/long a 运算符float/double b 结果 2 + 4.2 6.2 4 - 2.3 1.72 2 * 4.45 8.9

第三章数据类型、运算符和表达式

设x的值为4,则表达式y=(++x)+(++x)+(++x)后,y的值是(D)。 A.12 B.18 C.16 D.21 下列数据中,为字符的是(D)。 A.‘AB’ B."A" C.How D.‘A' 以下符号中,合法的用户标识符是(D)。 A. -p B. int C. 3ab D. _xt_ 以下实型常量中,符合C语言语法的是(A)。 A. .5E-3 B. 1.2E0.5 C. E15 D. 3.14.159E 若有说明和语句:int a=5,b=6;b*=a+1;则b的值为(D) A. 5 B. 6 C. 31 D. 36 设C 语言中,int 类型数据占4个字节,则short 类型数据占(C)。 A.1个字节 B.2个字节 C.4个字节 D.8个字节 若x=3.5,a=2,y=2.5,b=3则表达式(float)(a+b)/2+(int)x%(int)y的值是()。A.1.5 B.2.5 C.3.5 D.2 以下选项中不属于C语言的类型的是(D)。 A.signed short int

B.unsigned long int C.unsigned int D.long short 关于C语言数据类型的叙述,正确的是(C)。 A. 整型不是基本类型 B. 数组不是构造类型 C. 变量必须先定义后使用 D. 不允许使用空类型 若a=12,则表达式a-=a的值为(A)。 A. 0 B.12 C.1 D. 24 若x=3.5,a=2,y=2.5,b=3则表达式(int)(a+b)/2+(int)x%(int)y的值是(D)。 A. 1.5 B. 2.5 C. 3 D. 3.5 若a是数值类型,则逻辑表达式(a==1)&&(a!=1)的值是(C)。 A.1 B. 2 C. 0 D. 不知道a的值,不能确定 若char x=97,则变量x对应(A)字符。 A. ‘a’ B. ‘A’ C. ‘9’ D. ‘7’ 设C语言中,int类型数据占2个字节,则float类型数据占(C)字节。 A. 1个 B. 2个 C. 4个 D. 8个 下列数据类型不是C语言基本数据类型的是(C)。 A. 字符型 B. 整型 C. 数组

java运算符大全

一、算术运算符: 单目:+(取正)-(取负) ++(自增1) - -(自减1) 双目:+ - * / %(取余) 三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符(可以是">""<""!="等等),一个"?",一个":",冒号前后需要有两个表达式或者是值或者是对象。 二、关系运算: 等于符号:==,不等于符号:!= ,大于符号:>, 小于符号:<,大于等于符号:>= ,小于等于符号:<= . 三、位运算符逻辑运算符: 位运算符与(&)、非(~)、或(|)、异或(^)&:当两边操作数的位同时为1时,结果为1,否则为0.如1100&1010=1000 | :当两边操作数的位有一边为1时,结果为0,否则为 1.如1100|1010=1110 ~:0变1,1变0 ^:两边的位不同时,结果为1,否则为0.如1100^1010=0110 逻辑运算符与(&&)、非(!)、或(||) 四、赋值运算符 = += -= *= /= %= &= ^= |= 《= 》= 五、instanceof运算符 该运算符是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算符运算结果是true,否则是false. 六、运算符综述 Java 的表达式就是用运算符连接起来的符合Java 规则的式子。运算符的优先级决定了表达式中运算执行的先后顺序。例如,x 运算符的结合性决定了并列相同级别的运算符的先后顺序,例如,加减的结合性是从左到右,8-5+3 相当于(8-5)+3.逻辑否运算符的结合性是右到左,x 相当于!(!x)。表3.4是Java 所有运算符的优先级和结合性。 七位移运算符 《带符号左移》带符号右移>>>无号右移 例子:int a1 = 8; // 0000 0000 0000 1000 System.out.println(a1>>>2); //// 0000 0000 0000 0010 输出为2 运算符优先级 按优先级从高到低排列如下:[ ]、( )、++、--、!、~、instanceof、*、/、%、+、-、《、》、>>>、<>、<、=、>、\、==、!=、&、^、&&、||、? :、= . Java强制类型转换 强制和转换 Java语言和解释器限制使用强制和转换,以防止出错导致系统崩溃。整数和浮点数运算符间可以来回强制转换,但整数不能强制转换成数组或对象。对象不能被强制为基本类型。Java中整数运算符在整数运算时,如果操作数是long类型,则运算结果是long类型,否则为int类型,绝不会是byte,short或char型。这样,如果变量i被声明为short或byte,i+1的结果会是int.如果结果超过该类型的取值范围,则按该类型的最大值取模。 运算符操作 一、运算符"+",如果必要则自动把操作数转换为String型。如果操作数是一个对象,它可定义一个方法toString()返回该对象的String方式,例如floata=1.0print("Thevalueofais"+a+"\n");+运算符用到的例子Strings="a="+a;+=运算符也可以用于String.注意,左边(下例中的s1)仅求值一次。s1+=a;//s1=s1+a//若a非String型,自动转换

Java的位运算符详解整理得比较全

Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^) 位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。 1.与运算符 与运算符用符号“&”表示,其使用规律如下: 两个操作数中位都为1,结果才为1,否则结果为0,例如下面的程序段。 public class data13 { public static void main(String[] args) { int a=129; int b=128; System.out.println("a 和b 与的结果是:"+(a&b)); } } 运行结果 a 和 b 与的结果是:128 下面分析这个程序: “a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。 2.或运算符 或运算符用符号“|”表示,其运算规律如下: 两个位只要有一个为1,那么结果就是1,否则就为0,下面看一个简单的例子。

public class data14 { public static void main(String[] args) { int a=129; int b=128; System.out.println("a 和b 或的结果是:"+(a|b)); } } 运行结果 a 和 b 或的结果是:129 下面分析这个程序段: a 的值是129,转换成二进制就是10000001,而 b 的值是128,转换成二进制就是10000000,根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。 3.非运算符 非运算符用符号“~”表示,其运算规律如下: 如果位为0,结果是1,如果位为1,结果是0,下面看一个简单例子。 public class data15 { public static void main(String[] args) { int a=2; System.out.println("a 非的结果是:"+(~a)); } } 4.异或运算符 异或运算符是用符号“^”表示的,其运算规律是:

相关文档
相关文档 最新文档