运算符:是一种特殊的符号,用以表示数据的运算、赋值和比较。

1、算数运算符(+、-、*、/、%、++、--)

  a)除:

    int i = 12;
    int j = i / 5; //
    double d1 = i / 5; //2.0
    double d2 = (double)i/5; //2.4
    double d3 = i/5.0; //2.4

  b)前++和后++区别

    前++:先自增一赋值给自己,后做运算赋值

    后++:先做运算赋值,后自增一赋值给自己

    int a = 10;
    int b = ++a; //a=11 b=11
int c = a++; //a=11 c=10

    自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误的!

2、赋值运算符(+=、-=、*=、/=、%=、=)

    int i = 10;
    i += 3;//运算结果等于 i = i + 3;

  i+=3的运算结果是相当于i = i + 3,但是还是有一些区别的。

  例如:

    short s = 10;
    s = s + 3; //编译错误
    s += 3; //既可以实现运算,又不会改变s的数据类型

  【知识点】:赋值运算+=、-=、/=、%=进行了运算但是不会改变变量的数据类型

  笔试题:

    1、考核赋值运算符使用

    int a = 1;
    a *= 0.1;
System.out.println(a);//
a++;
System.out.println(a);//

    2、考核=和==的区别

    boolean b = false;
    if (b==true) {
      System.out.println("==结果为真");
}
else{
System.out.println("==结果为假");
}
if(b=true){
System.out.println("=结果为真");
}
else{
System.out.println("=结果为假");
}

    输出结果:

      ==结果为假
      =结果为真

3、比较运算符(==、!=、<、>、<=、>=、instanceof)

  比较运算符的结果都是boolean型

  instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例

4、逻辑运算符(&-逻辑与、&&-短路与、|-逻辑或、||-短路或、!-逻辑非、^-逻辑异或)

  a)逻辑运算符左右两边运算的变量都是boolean型。

  b)&和&&的结果是一模一样的,|和||的结果是一模一样的。

  c)&和&&的区别?

    &:不管左边是true还是false,右端都会运算。

    &&:当左边是false,那么右端则不会运算。

    所以只要当左边是false才会有区别,如果左端是true的时候,就一模一样了。

    当然我们在开发的过程中绝对推荐&&,这样可以减少右端运算的开销。

    |和||的区别就不再阐述了一样的思路。

  c)异或顾名思义,当a和b只要不一致就会返回true,都一样则返回false。

5、位运算符(<<、>>、>>>、&、|、^、~)

  a)<< 左移(左移几位,后面用0补齐)

    3<<2 = 3*2*2=12

    0000 0000 0000 0011  = 3

    0000 0000 0000 1100  = 2的3次方 + 2的2次方 = 12

  b)>> 右移(右移几位,前面需要看第一位是0还是1,如果是1就用1补齐,如果是0就用0补齐)

    31>>2 = 7

  c) >>> 无符号右移(右移几位,前面不管第一位是0还是1,全部用0补齐)

    31>>>2 = 7

  d)&是与运算。

  e)|是异或算

  f)^异或(只要相异,就是1,否则就是0)

    0000 0000 0000 1100  = 12

     ^ 0000 0000 0000 1001 =  9

-------------------------------------

    0000 0000 0000 0101 = 5

    所以 12 ^ 9 = 5

    g)笔试题:在讲到变量的类型转换,在不声明第三方变量的情况下互换一下a和b的值。用异或方法绝对是完美的。

    int a = 10;

    int b = 15;

    答案:

    a = a ^ b;

    b = a ^ b;

    a = a ^ b;

6、三元运算符(? :)

  用来完成简单的选择逻辑,即根据条件判断,从两个选择中选择一种执行。

  格式:(条件表达式)?表达式1:表达式2

  三元运算符涉及到一种成为双目数值提升(binary numeric promotion)的语言特性。所谓的双目数值提升,可以简单的理解为双目运算符的类型转换问题。

 char a= 'a';
int i = 96;
// ① 变量(基本数据类型)与常量(基本数据类型),结果自动转换为精度高的
System.out.println(true?i:9.0); //结果为:96.0
// ② 两个变量(基本数据类型),结果自动转换为精度高的
System.out.println(true ? a : i);//结果为:97
// ③ 两个常量(基本数据类型),结果自动转换为精度高的
System.out.println(true ? 99 : 9.0);//结果为:99.0
// ④ 只要数值类型和char类型的,如果数值类型在0-65535之间的都转成char
System.out.println(true ? 1000 : 'b');//结果为:Ϩ(这可不是8 这是个符号)

跟着刚哥梳理java知识点——运算符(五)的更多相关文章

  1. 跟着刚哥梳理java知识点——IO(十五)

    凡是与输入.输出相关的类.接口都定义在java.io包下 java.io.File类 1.File是一个类,可以有构造器创建其对象.此对象对应着一个文件或者一个目录. 2.File中的类,仅涉及到如何 ...

  2. 跟着刚哥梳理java知识点——深入理解String类(九)

    一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Ser ...

  3. 跟着刚哥梳理java知识点——多线程(十六)

    创建多线程第一种方式:① 继承:继承Thread.② 重写:重写Thread类的run()方法③ 创建:创建一个子类的对象④ 调用:调用线程的start()方法,启动此线程,调用run()方法 cla ...

  4. 跟着刚哥梳理java知识点——面向对象(八)

    面向对象的核心概念:类和对象. 类:对一类事物描述,是抽象的.概念上的定义. 对象:实际存在的该类事物的每个个体,因而也成为实例(Instance). Java类及类的成员:属性(成员变量Field) ...

  5. 跟着刚哥梳理java知识点——变量之间的类型转换(四)

    变量之间的类型转换主要包括自动类型转换和强制类型转换. 1.自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动的转换成容量大的类型. [知识点]: a)char,byte,sh ...

  6. 跟着刚哥梳理java知识点——泛型(十三)

    一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...

  7. 跟着刚哥梳理java知识点——注释(二)

    1.单行注释 // //这是main方法,程序的入口 public static void main(String[] args) { //输出语句 System.out.println(" ...

  8. 跟着刚哥梳理java知识点——HelloWorld和常见问题(一)

    1.按照国际惯例,写一段输出HelloWorld的java语句: public class HelloWorld { //这是main方法,程序的主入口 public static void main ...

  9. 跟着刚哥梳理java知识点——枚举和注解(十四)

    enum Season{ SPRING("spring","春暖花开"), SUMMER("summer","夏日炎炎" ...

随机推荐

  1. JS排序算法

    1.冒泡排序 冒泡算法是比较相邻的两项,如果前者比后者大,就交换他们. 假设一共有n项,那么一共需要n-1趟,第一趟需要交换n-1次,但是第一趟结束后,最后一项基本确定就是最大项了,所以第二次需要交换 ...

  2. 数据库笔试面试题库(Oracle、MySQL等)

    数据库笔试面试题库(Oracle.MySQL等) 版权声明:版权所有,欢迎分享本文,转载请保留出处,否则追究法律责任,谢谢合作. 注:本文将持续更新,可关注作者微信公众号以便获得最新笔试面试资料. ⊙ ...

  3. 你知道自己执行的是哪个jre吗?

    多个JRE 我在做<Java日志工具之java.util.logging.Logger>的DEMO时,修改java.util.logging.Logger的配置文件,怎么修改都不起作用,因 ...

  4. H3 BPM总部乔迁 开启新篇章 筑梦新征程

    近日,国际一流的BPM解决方案服务商H3 BPM总部迎来乔迁之喜,办公新址泰邦科技大厦位于国家火炬计划软件产业基地.国家高新技术产业标准化示范区.国家文化和科技融合示范基地的深圳高新技术产业园区,办公 ...

  5. ASP从HTML标签中提取中文

    Function delHtml(strHtml) '做了一个函数名叫delhtml Dim objRegExp, strOutput Set objRegExp = New Regexp ' 建立正 ...

  6. Objective-c日记-之属性列表

    属性列表 1,概述 在Cocoa中,有一类名为属性列表的对象(常简写为plist),Cocoa知道如何将它们保存到文件和从文件中加载.包括以下类NSArray,NSDictionary,NSStrin ...

  7. .Net程序员学用Oracle系列(21):分组查询(GROUP BY)

    1.GROUP BY 标准分组 1.1.GROUP BY 概述 1.2.WHERE 和 HAVING 的区别? 2.GROUP BY 扩展分组 2.1.ROLLUP 分组 2.2.CUBE 分组 2. ...

  8. springmvc.xml或spring.xml 能运行配置文件总是出现错误

    1:在java开发时总遇到配置文件配置正确,可以运行但有时显示错误.例如下图 上面配置文件正确但有时显错就不能运行.原因是配置文件的约束项错了. 原因是自己的jar包和配置文件版本不同.如果电脑联网它 ...

  9. 部署Cloudera Management for centos 7

    hadoop生态圈框架工具甚多,自己整合起来很是繁琐,特别是oozie以及hue结合来实现hive.mr.spark等定时依赖任务更是一步一个坑,为了减少踩坑,只好从apache hadoop,转向C ...

  10. less可以做什么?less详解!(less嵌套选择器实现纯CSS二级导航)

    前端技术众多,作为一名前端工程师,我们每接触新技术首先要懂得此技术的优势和劣势,这是最基本的.往深入了说还需要懂得技术的应用场景,配合的技术等,方便为以后架构做准备.而less作为一门CSS预处理语言 ...