运算符及其练习

 

 * 运算符:

 * 有六大类

 *  算术运算符

 *  赋值运算符

 *  比较运算符

 *  逻辑运算符

 *  位运算符号

 *  三目运算符

 * 

 * 

 * 1,算术运算符:

 *  +,-,*,/,% , ++(前加加,后加加),--(前减减,后减减)举例说明:

 * 

 * 

 * 

 *@author jerry

 *

 */

public class OperatorDemo1 {

 

       publicstatic void main(String[] args) {

 

              //定义一个int类型的变量a,并且赋初值为10

              inta = 10;

             

              //定义一个int类型的变量b,并且赋初值为20

              intb = 20;

             

              //求和,定义一个int的变量sum,并且赋值为变量a 和变量b的和

              intsum = a + b;

             

             

              //如何查看变量sum里面存在的值呢?

              System.out.println("a+ b = " + sum);

             

             

              //演示除法 /

             

             

              intc = b/a;

             

              System.out.println("b/a=" + c );

             

             

              intd = a/b;

              //eclipse 的快捷键: alt+方向键 移动当前行

              System.out.println("a/b=" + d );

             

              doublee = a*1.0/b;

              System.out.println("a/b=" + e );

             

             

              //演示取模操作 % (取余数)

              intf = a%b;

             

              System.out.println("a%b= "+f);

             

             

              intg = b % a;

              System.out.println("b% a=" + g );

             

             

              //演示 ++ 前加加 和后加加

             

              intx = 1;

//            inty = ++x; // 前++, 数值先将自己的值 自增1,然后再将参与运算

              inty = x++;// 后++, 数值先参与运算,然后再将自己的值 自增1

             

          

              System.out.println("y="+y);//将内存中的值,直接输出到控制台

              System.out.println("x="+x);// 将内存中的值,直接输出到控制台

              System.out.println("x="+x++);//? 3  3   2

              System.out.println("x="+++x);//? 4  3   4

             

             

              //同理,前减减,后减减 与加加一样,省略

             

              System.out.println("hello" + "world");

             

             

              //除数不能为零

             

              //什么叫除数,什么叫被除数  c =a/b; a 被除数, b除数

             

              //定义一个int类型的变量z,并且赋值为10/5

              intz = 10/5;

             

              //重新给变量z赋值,为10/0;

              z= 10/0;

              //Exceptionin thread "main" java.lang.ArithmeticException: / by zero

             

              System.out.println(z);

             

             

             

             

             

             

       }

 

}

 

 * 2,演示赋值运算符

 * 符号:

 * =,+=,-=,*=,/=,%=

 *

 *

 *@author jerry

 *

 */

public class OperatorDemo2 {

 

       publicstatic void main(String[] args) {

             

              inta = 10;

              intb = 20;

             

             

              System.out.println("a="+a);

              System.out.println("b="+b);

             

             

              //在a值的基础上,加上20,然后再赋值给自己

              a+=20;// 等价于 a = a+20;

             

              a-=10;// a = 20

              a/=5; // a = 4;

              a%=2; // a =0;

              System.out.println("a="+a);

              /**

               * 面试题:

               * short s=1;s = s+1;

               * short s=1;s+=1;

            * 上面两个代码有没有问题,如果有,那里有问题

               */

             

//            shorts = 1;

              //Typemismatch: cannot convert from int to short

              //s= (short) (s+1); // 左边为short类型= 右边int类型,隐式转换无法成功的发生,需要强制类型转换

              //byte,char ,short 类型不能直接参与运算,参与运算前,先转换为int类型

             

               short s=1;

               s += 1;

             

             

             

       }

}

3,

 * 演示三目运算符(三元运算符)

 *

 * (关系表达式)?表达式1:表达式2;

 *

 * 如果关系表达式为真,就返回表达式1的值

 * 如果关系表达式为假,就返回表达式2的值

 *

 *@author jerry

 *

 */

public class OperatorDemo7 {

 

       publicstatic void main(String[] args) {

 

              //求两个数的最大值

              int x = 3;

              inty = 4;

              intz;

             

             

              z= (x>y)? x : y;

              //语句 : 表达式 +;

              //表达式: 是运算符和操作数组成的式子

             

             

              System.out.println("x="+x+",y="+y+"中的最大值:"+z);

             

             

              //获取三个整数中的最大值(x=3,y=4,z=5)

 

             

              intx1 = 323234312;

              inty1 = 334432321;

              intz1 = 334344312;

              intmax = 0;

             

              max= (x1>y1)? x1:y1;

             

              max= (max>z1)? max : z1;

             

              System.out.println("x1="+x1+",y1="+y1+",z1="+z1+"中的最大值:"+max);

             

             

              //比较两个整数是否相同

 

              inta = 10;

              intb = 20;

             

              System.out.println("a="+a+",b="+b+"是否相等呢?"+(a==b?true:false));

             

             

       }

 

}

4,*

 * 位运算符

 *

 *<< 左移

 *>> 右移

 *>>> 无符号的右移

 *& 与

 * | 或

 * ^ 异或

 * ~ 取反

*

 *@author jerry

 *

 */

public class OperatorDemo5 {

 

       publicstatic void main(String[] args) {

             

             

              //<< 左移

             

              inta = 3;

//            00000011

              //00000110左移一位 6

              //00001100左移一位 12

              //规律: 左移一位,就是乘以2. 而且比 a = a*2 运算速度快,位运算时速度最快的一种运算

             

             

              System.out.println("a<<2= " + (a << 2));

             

              byteb = -3;

              //1 0000011 原码

              //1 1111100 反码

              //1 1111101 补码

              //1 1111111 补码, 求原码

              //1 1111110 反码

              //1 0000001 原码  十进制的-1;

              System.out.println("b>>2= " + (b >> 2));

             

             

              //无符号右移

              byteb1 = -3;

              System.out.println("b1>>2= " + (b1 >> 2));

             

              //& 运算 ,规则:与0 进行&运算,结果是0; 与1 进行&运算,结果为原值

             

              System.out.println("6&3=" + (6&3));

             

              /**

               *  00000110

               * & 00000011

               * ------------

               *  00000010

               *   

               */

             

              //| 运算, 规则: 与0进行|运算,结果为原值;与1进行|运算,结果为1.

             

              System.out.println("6|3=" + (6|3));

              /**

               *  00000110

               * | 00000011

               * ------------

               *  00000111

               *   

               */

             

              //^ 异或 规则:任何相同二进制位进行 ^ 运算,结果是0;不相同二进制位 ^ 运算结果是1

             

              System.out.println("6^3=" + (6^3));

              /**

               *  00000110

               * ^ 00000011

               * ------------

               *  00000101

               *   

               */

             

              //~ 反码: 按位取反

             

              System.out.println("~6="+ (~6));

             

              /**

               * 00000110 补码 反码 原码

               *

               * ~ 的作用就是按位取反

               *

               * 11111001 补码,由补码,请原码?

               *

               * 先减去1,然后按位取反

               * 11111000

               * 1 0000111 原码 -7

               */

             

             

             

 

       }

 

}

5,演示 逻辑运算符

 *

 *&

 * |

 * ^

 * !

 *&&(短路与)

 *||(短路或)

 *

 * 逻辑运算符的操作数是boolean类型

public class OperatorDemo4 {

 

       publicstatic void main(String[] args) {

             

              //&

              //左右两边的操作数都为真,结果才为真

             

              System.out.println(true& true);

              System.out.println(false& false);

              System.out.println(true& false);

              System.out.println(false& true);

             

              System.out.println("================");

              //|

              //左右两边的操作数只要有一个为真,结果就为真

              System.out.println(true| true);

              System.out.println(false| false);

              System.out.println(true| false);

              System.out.println(false| true);

             

              System.out.println("================");

             

              //^ 异或

              //左右两边的操作数,相同为假,不同为真

              System.out.println(true^ true);

              System.out.println(false^ false);

              System.out.println(true^ false);

              System.out.println(false^ true);

             

             

              System.out.println("================");

              //!

              //非真即为假,非假即为真

             

              System.out.println(!true);

              System.out.println(!false);

             

              System.out.println("================");

             

             

              //&&(短路与)

              //结果跟单与一样,但是有短路现象

              //左右两边的操作数 都为真,结果就为真

              //短路现象,&& 前面如果有false,不论后面的操作数为真或为假,结果都为假,减少判断的逻辑

              System.out.println(true&& true);

              System.out.println(false&& false); //Dead code 执行不到的代码

              System.out.println(true&& false);

              System.out.println(false&& true);

             

              System.out.println("================");

              //||(短路或)

              //结果跟单或一样,但是有短路现象

              //左右两边的操作数只要有一个为真,结果就为真

              //同理 ,短路现象,导致,如果第一个操作数为true,那么不论第二个操作数为true orfalse

              //结果都为true

              System.out.println(true|| true);//Dead code 执行不到的代码

              System.out.println(false||  false);

              System.out.println(true||  false);

              System.out.println(false||  true);

             

              /**

               * 在eclipse中

               * 黄色的线:警告 warning   可以忽略

               * 红色的线:错误 异常 error,必须要解决

               */

             

             

             

              System.out.println("================");

              inta = 10;

              intb = 20;

              intc = 30;

             

              System.out.println(a>c&& b>c);//?

              System.out.println(a>c&& b<c);//?

              System.out.println(a<c&& b>c);//?

              System.out.println(a<c&& b<c);//?

 

 

       }

 

}

7,比较运算符的演示

 *==,!=,<,>,<=,>=,instanceof

 *

 * 所有的比较运算的返回值都为 boolean类型,要是true,要么是false

* @author jerry

 *

 */

public class OperatorDemo3 {

 

       publicstatic void main(String[] args) {

 

              System.out.println(1==2);

              System.out.println(1!=2);

              System.out.println(1<2);

              System.out.println(1>2);

              System.out.println(1<=2);

              System.out.println(1>=2);

       }

 

}

8,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1) 本套课程针对高校大学生系统学习C语言而录制,从0基础入门讲起,循序渐进,通俗易懂,同时适用于计算机系及非计算机系的同学。通过学习可以帮助大家掌握C语言本质,轻松面对C语言全国二级考试,并达到能独立完成中型C项目、C游戏的水平;2) 多数高校都开设了C语言课程,网上C语言课程也很多,但普遍存在两个问题: (1) 授课方式单一,大多是照着代码念一遍, 对刚刚接触编程的同学来说,感觉晦涩难懂 (2) 授课内容过度注重语法,没有项目实战支撑,造成课程枯燥无趣。本课程针对上述问题进了改进 (1) 授课方式采用语法讲解+内存布局示意图+项目的方式,让课程生动有趣好理解 (2) 系统全面的讲解了C语言的核心技术点,还配套录制了《全国计算机二级C语言真题精讲》,让学员在掌握C语言编程的同时,还能轻松面对二级考试;3) 课程详细内容: 常量-变量、分支语句、循环语句、操作符和表达式、函数(库函数、自定义函数、递归调用 )、数组(一维数 组、二维数组、数组作为函数参数、指针数组)、指针(指针和指针类型、二级指针和多级指针、指针表达式解析、指针运算、数 组指针、函数指针、回调函数)、调试技巧、程序环境和预处理(翻译环境、运环境、预定义符号、#define和#undef、宏和函 数、条件编译、文件包含)、 数据在内存中的存储、内存块分配、static、字符函数和字符串函数、自定义类型(结构体、枚举 、联合)、动态内存管理、文件操作(i/o常量、i/o函数、流)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值