`
zhongrenmeng
  • 浏览: 13836 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

java基础整理之--操作符

阅读更多

java中的运算符大体分为 算术运算符 ,关系运算 ,位运算符 ,逻辑运算符 等,本文的目的在于大体列出其中这些运算符及其使用的方式和运行的结果,重点在于表示几个易错点。

 

一,算术运算符

      它分为单目运算和 双目运算符及三目运算符,其中单目 运算符有:+(取正),-(取负),++(自增),--(自减); 而双目运算符包括:+,-,*,/,%,;三目运算符为a>b ? true : false 

      这一部分,我们首先提到到一个边界的问题

int a=10 ; int b=4;
System.out.println("a+b  = "+(a+b)) ;//输出 a+b = 14;
System.out.println("a-b  = "+(a-b)) ;//输出 a-b = 6;
System.out.println("a*b  = "+(a*b)) ;//输出 a*b = 40;
System.out.println("-a  = "+(-a)) ;//输出 -a = -10;
System.out.println("a%b = "+(a%b)) ;//输出 2,%即a除于b的余数
System.out.println("a/b = "+(a/b)); //输入2,注意,两个整数相除,会自动的取整,并且按照截尾的规则获值 

 

    上面的运算输出结果, 我想不用我解释,大家都很容易理解,于是乎,我们就想到了两个整数的运算将产生一个正确的整数,事实却未必是如此。

    假如我们将上面代码的例子改为

   

int a=1<<30 ; int b=1<<30;
System.out.println("a+b  = "+(a+b)) ;//输出 a+b  = -2147483648;
System.out.println("a-b  = "+(a-b)) ;//输出 a-b  = 0;
System.out.println("a*b  = "+(a*b)) ;//输出 a*b  = 0;
System.out.println("-a  = "+(-a)) ;//输出 -a  = -1073741824;

    从输入的结果来看,我们可以发现 a+b 和 a*b都不是我们要的结果, 这个结果导致的原因就是int数据类型的长度是 32 bit,当一个运算的结果超出了这个大小存储的空间时,

    就会得到不正确的值。虽然一般情况下,不会有这种情况,但并不能保证不会出现这样的情况, 所以在编写相关的代码时,要考虑的越位的边界问题。

 

    接着我们 注意的是++(自增),--(自减),两个运算符,这也是很多java面试时很多公司挺喜欢出来的笔试试题,

    对于自增和自减运算符,又可以透过其所在的位置,分为 “前缀式” 和 “后缀式”,对两种方式可以按以下的方式去理解;

    前缀式运算就是先对变量自身增(减)然后再将其用于运算

    后缀式运算就是先将变量用于运算,再进行增(减)

    从上面两点说明来看,对于自增运算符,我们可以将它拆分成两条语句来执行(实际上java也是这样做的, 使用javap 你可以看到它将生产两条语句,所以对自增(减)运算不是线程安全的);

    如

int i=0; count=1;
count=count +(i++);

 可拆分成

int i=0; count=1;
count=count +i;
i=i+1;

 而

int i=0; count=1;
count=count +(++i);

 

可拆分为

int i=0; count=1;
i=i+1;
count=count +i;

 

对于自减运算也是一样的拆分规则。

二,关系运算

     该类运算符主要用于判断两个对象的关系,相等或者大于等于等等 ,其包括 等于符号:==,不等于符号: != ,大于符号:>, 小于符号:<,大于等于符号: >= ,小于等于符号: <=

     关于关系运算符的几个注意点在于:

     1,除了==,!=,其他的所以关系运算符都只能用于除boolean外基本数据及字符串

     2,==,!=在对象的比较时,不是值比较, 而是比较两个引用时否相同

     3,在很多语言中if(a=b){},这得写法编译是不会报错, 并且永远是true,即if里面的代码总会运行,但在java中除非 a和b都是boolean型,否则这样的写法编辑是不通过的 。

三,位运算符

       与(&)、非(~)、或(|)、异或(^)

       &:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000

   | :当两边操作数的位有一边为1时,结果为0,否则为1。如1100|1010=1110

   ~:0变1,1变0

   ^:两边的位不同时,结果为1,否则为0.如1100^1010=0110

  四,逻辑运算符  与(&&)、非(!)、或(||)

        逻辑与和逻辑非提供短路原则,即对于与运算,一定出现false的结果,将不再运行后面的 条件,而对于或运算,一旦出现了true,将不再运行后面的条件

五,赋值运算符 = += -= *= /= %= &= ^= |= <<= >>=

 

  六,位移运算符  << 带符号左移 >>带符号右移 >>> 无号右移

         <<带符号左移:按照操作符右侧指定的位数将左边的操作数向左移动(地位补0),在不越界的情况下,相当于每移动一位都乘于一个2

         >>带符号右移:按照操作符右侧指定的位数将左边的操作数向右移动,若符号位为正,则在高位插入0,若符号位为负则插入1,

         >>> 无号右移:按照操作符右侧指定的位数将左边的操作数向右移动,无论符号位为正负,都在高位插入0

        

 

七,运算符的优先级

      按优先级从高到低排列如下:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 。

分享到:
评论

相关推荐

    Java基础视频教程-深入浅出学Java精华版

    ### Java基础视频教程知识点概述 ...以上是根据给定的文件内容整理的Java基础视频教程的知识点概述。通过这些章节的学习,初学者可以系统地建立起Java编程的基础知识体系,为进一步深入学习打下坚实的基础。

    JAVA SE基础篇-资料整理

    ### JAVA SE基础篇-资料整理 #### JAVA历史特点、开发环境 Java 作为一种跨平台的高级编程语言,自1995年由Sun Microsystems公司推出以来,迅速成为了软件开发领域的重要工具之一。Java 最初的设计目的是为了实现...

    java基础(1-3章,后续还未整理,随时更新)

    ### Java基础知识点详解 #### 一、Java简介 1. **Java是什么?** - Java是一种广泛使用的计算机编程语言。 - **计算机语言定义:** 计算机语言是人与计算机之间进行通信的一种手段。它使人们能够指导计算机执行...

    Java基础上机题-分类整理版.doc

    【Java基础知识】 Java是一种广泛使用的面向对象的编程语言,其设计目标是具有良好的可移植性、健壮性和安全性。本题主要考察了Java中类和对象的基础知识,包括类的定义、对象的实例化、构造方法的使用、属性与方法...

    java面试基础整理

    Java 面试基础知识整理 本节课主要讲解了 Java 面试基础知识,包括面向对象的特征、访问修饰符的区别、基本数据类型、类型转换等。 一、面向对象的特征 面向对象的特征主要有以下几个方面: * 抽象:抽象是将一...

    【Java面试资料】-JAVA核心面试知识点整理

    这份"【Java面试资料】-JAVA核心面试知识点整理"PDF文档,很可能是求职者或开发者提升技能、准备面试的重要参考资料。以下是根据标题和描述提炼出的一些关键Java面试知识点,以及它们在实际编程和面试中的重要性。 ...

    【Java技术资料】-JAVA核心知识点整理

    1. **Java基础** - **语法特性**:包括变量声明、数据类型(如整型、浮点型、字符型、布尔型)、运算符(算术、比较、逻辑、位运算等)、流程控制(if-else、switch、for、while循环、break和continue)。 - **类...

    java基础及javaWEB

    毕向东和方立勋是知名的Java技术教育者,他们分别在Java基础和Java Web方面拥有深入的研究,并将这些知识整理成为教程和笔记。以下是从提供的文件内容中挖掘出的Java基础知识和Java Web的知识点。 首先,Java基础...

    Java基础面试题整理(附答案)

    ### Java基础面试题知识点解析 #### 一、面向对象的特征 面向对象编程(OOP)是Java编程的核心概念之一,其主要特征包括: - **封装**:将对象的状态信息(属性)隐藏在对象内部,仅对外提供有限的操作接口。封装提高...

    Java基础整理

    ### Java基础知识点整理 #### 第一章 搭建开发环境 **1.1 配置Java环境** 在配置Java开发环境之前,首先需要下载并安装JDK(Java Development Kit)。JDK是Java语言的核心组件,包含了Java运行时环境(JRE)及编译...

    尚硅谷JAVA基础笔记吐血整理

    “尚硅谷JAVA基础笔记”涵盖了Java语言的基础知识,包括语言概述、基本语法、面向对象概念、封装、继承和多态,以及一些关键概念如形参与实参、属性与局部变量、构造器、this关键字、包和MVC设计模式的使用。...

    java学习笔记,java基础知识整理

    ### Java学习笔记——Java基础知识整理 #### 一、Java技术入门 Java是一种广泛使用的编程语言,因其跨平台性、安全性和高效性而受到青睐。Java最初由Sun Microsystems开发,并于1995年首次发布。 ##### 1. Sun ...

    思维导图-Java基础

    Java基础是编程学习的重要部分,尤其对于初学者来说,掌握好Java基础知识至关重要。思维导图是一种有效的学习工具,它能帮助我们系统地整理知识结构,加深理解和记忆。在这个"思维导图-Java基础"中,我们可以预期...

    Java基础知识整理

    ### Java基础知识整理 #### 一、初识Java 1. **Java的由来** - Java语言最初由Sun Microsystems公司于1995年推出,它是由James Gosling领导的一个团队设计并实现的。Java的设计目标是实现面向网络的、跨平台的...

    Java课件---配书浏览效果更好

    以下是根据压缩包中的文件名称整理出的关键知识点: 1. **JSP内置对象**(第四讲 JSP内置对象.ppt): - JSP(JavaServer Pages)是Java Web开发中的重要组成部分,它允许开发者在HTML页面中嵌入Java代码。 - JSP...

    JAVA面试题集-个人网络收集整理。

    ### JAVA面试题集知识点解析 #### 一、Java与C++中的异常处理机制对比 - **Java中的异常处理**:Java通过内置的异常处理机制来管理程序运行时可能发生的错误情况。当Java程序中出现异常时,系统会抛出一个异常对象...

    java笔记整理(超详细) java笔记整理(超详细)

    Java是一种广泛使用的高级编程语言... - 引用相等是指两个引用指向同一个对象,使用`==`操作符判断。 以上知识点涵盖了Java的基本特性、核心概念以及一些高级特性,理解这些将有助于深入学习和使用Java进行软件开发。

    V20-Java笔记整理-重要概念和常见陷阱梳理.docx

    - 使用`==`操作符比较字符串引用是否相等。 **7.5 包装类、基本数值类型和字符串之间转换关系** - **基本数值类型转换为包装类**:使用对应的包装类的构造函数。 - **包装类转换为基本数值类型**:使用包装类的`xxx...

    JAVA核心面试知识整理-最全

    Java是世界上最流行的编程语言之一,尤其在企业级应用开发领域占据主导地位。为了在Java面试中脱颖而出,了解其核心概念和技术至关重要。以下是一份全面的Java核心面试知识点总结: 一、基础语法 1. 变量与数据类型...

    java 面试 百度入职老哥整理 全是干货

    1. Java基础 - Java的8种基本数据类型包括了byte、short、int、long、float、double、char、boolean,并涉及到了装箱和拆箱的概念。装箱是将基本类型转换为对应的包装类对象,拆箱则是相反的过程。 - String与基本...

Global site tag (gtag.js) - Google Analytics