JAVA操作符
几乎所有运算符都只能操作“主类型”(Primitives)。例外是“=”、“= =”和“! =”,它们能操作所有对象。除此以外,String类支持“+”和“+=”。
(1)赋值
主类型使用“A=B”,那么B处的内容就复制到A。若修改A,那么B根本不会受修改的影响。
对象“赋值”的时候情况发生了变化。对一个对象进行操作时,我们真正操作的是它的句柄。所以倘若“从一个对象到另一个对象”赋值,实际就是将句柄从一个地方复制到另一个地方。这意味着假若为对象使用“C=D”,那么C和D最终都会指向最初只有D才指向的那个对象。
short s1 = 1; s1 = s1 + 1; (s1+1运算结果是int型,需要强制转换类型)
short s1 = 1; s1 += 1;(可以正确编译) +=运算符无类型转换问题
(2)算术运算符
Java的算术运算符:加号(+)、减号(-)、除号(/)、乘号(*)以及模数(%,从整数除法中获得余数)。整数除法会直接砍掉小数,而不是进位。
(3)自动递增、递减
对于前递增和前递减(如++A或--A),会先执行运算,再生成值。
对于后递增和后递减(如A++或A--),会先生成值,再执行运算。
(4)关系运算符
关系运算符包括<、>、<=、>=、= =、!=
等于和不等于适用于所有内建的数据类型,但其他比较不适用于boolean类型。
想对比两个对象的实际内容是否相同,必须使用所有对象都适用的特殊方法equals()。
equals()方法不适用于“主类型”,那些类型直接使用= =和!=即可。
equals()的默认是比较句柄。所以除非在自己的新类中改变了equals(),否则不可能表现出我们希望的行为
大多数Java类库都实现了equals(),所以它实际比较的是对象的内容,而非它们的句柄
= =和! =比较的是对象句柄,而不是对象的实际内容
(5)逻辑运算符
逻辑运算符&&、||、!能生成一个布尔值
&和&&都可作为逻辑运算符“与”使用,但是&&是“短路与”,运算时先判断符号前面的表达式的值,如果能够确定整个表达式的值,则不进行符号后面的表达式的运算。&可作为位运算符使用。
(6)按位运算符
按位AND运算符(&)
按位OR运算符(|)
按位XOR(^,异或)
按位NOT(~,也叫作“非”运算符)属于一元运算符,生成与输入位的相反的值
(7)移位运算符
左移位运算符(<<)能将运算对象向左移动运算符右侧指定的位数(在低位补0)。
有符号右移位运算符(>>)将运算对象向右移动运算符右侧指定的位数。有符号右移位运算符使用了符号扩展:若值为正,则在高位插入0;若值为负,则在高位插入1
无符号右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0
(8)三元IF-ELSE运算符
布尔表达式 ? 值0:值1 “布尔表达式”的结果为true,就计算“值0”,否则计算“值1”
(9)字符串运算符+
int x = 0, y = 1, z = 2;
System.out.println(“out:” + x + y + z);
在这里,Java编译程序会将x,y和z转换成它们的字串形式,而不是先把它们加到一起
运用“String +”时,若表达式以一个String起头,那么后续所有运算对象都会转换到字串。
想通过“加号”连接字串(使用Java的早期版本),请务必保证第一个元素是字串
(10)造型(Cast)运算符
对于“缩小转换”(Narrowing Conversion)的操作(能容纳更多信息的数据类型,将其转换成容量较小的类型,例如int转short),此时就可能面临信息丢失的危险。此时,编译器会强迫我们进行明确造型
对于“放大转换”(Widening conversion),则不必进行明确造型,因为新类型肯定能容纳原来类型的信息,不会造成任何信息的丢失
布尔值(bollean)根本不允许进行任何造型处理,其它任何主类型可互相造型
将float或double值造型成整数值后,总是将小数部分“砍掉”,不作任何进位处理
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)==12
Math.round(-11.5)==-11
round方法返回与参数最接近的长整数,参数加1/2后求其floor.
(11)优先级
运算符(优先级从低到高)
+ - ++ – [[ rest...]]
* / % + - << >>
> < >= <= == !=
&& || & | ^
A > B ? X : Y
= (and compound assignment like *=)
相关推荐
这份“Java操作符总结-动力节点共20页.pdf”很可能是对Java中各种操作符的一个全面概述,包括它们的用法、优先级和结合性。 在Java中,操作符主要可以分为以下几类: 1. **算术操作符**:用于执行基本的数学运算,...
### Java修饰符总结 #### 一、概述 Java是一种广泛使用的面向对象编程语言,它具有简单、健壮、面向对象和平台无关等特性。在Java中,为了更好地控制类、方法、变量等成员的访问权限以及行为特征,引入了多种修饰...
Java知识体系总结 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle公司收购)于1995年推出。它以其“一次编写,到处运行”的特性闻名,适用于开发跨平台的应用程序,包括桌面应用、企业...
由于性能问题和依赖于操作系统特定的ODBC,这种驱动现在很少使用。 2. **部分Java驱动**:也称为网络纯Java驱动,它使用本机代码与数据库通信,但在客户端仍然需要本地驱动程序。 3. **本地协议纯Java驱动**:这种...
这篇“Java基础知识总结(经典)”涵盖了Java开发中的核心概念和重要知识点,旨在为初学者和有经验的开发者提供一个全面的回顾。以下是主要的学习点: 1. **Java环境配置**:在开始编程之前,必须安装Java ...
在Java编程语言中,占位符是一个非常常见的概念,它用于在字符串模板中预留位置,以便在运行时插入动态内容。通常,我们有多种方法来实现这个功能,每种方法都有其特定的适用场景和性能特点。本篇文章将对三种常用的...
14. **I/O**:Java的I/O流系统支持对文件、网络和系统资源的读写操作,包括字节流、字符流、缓冲流和对象流等。 15. **注解**:注解是一种元数据,提供了一种向编译器和工具提供信息的方式,如用于代码生成、编译时...
5. **访问修饰符**:Java有四种访问修饰符:public、protected、private和默认(包级私有)。它们控制类、方法和字段的可见性。 6. **静态和final**:`static`关键字用于声明类级别的成员,不依赖于对象实例。`...
1. 平台无关性是Java的核心特性之一,这意味着Java程序可以在任何支持Java虚拟机(JVM)的平台上运行,无需针对特定操作系统进行修改。源代码级的平台无关性意味着用Java编写的程序在不同系统中只需重新编译即可,而...
Java提供了丰富的操作符,如算术操作符(+、-、*、/、%)、比较操作符(==、!=、<、>、、>=)、逻辑操作符(&&、||、!)等。 4.3. 数字类型之间的转换 Java中有两种数字类型转换:自动转换(如int到long)和强制...
本资源"Java最全知识总结思维导图"提供了全面的Java学习路径和关键知识点的概览,旨在帮助初学者和有经验的开发者系统地理解和掌握Java的核心概念。 1. **数据库**: Java在数据库交互方面主要依靠JDBC(Java ...
Java语言基础总结 Java是一种广泛使用的面向对象的编程语言,以其跨平台、安全性和稳定性而闻名。本总结将深入探讨Java语言的基础知识,包括语法、类与对象、封装、继承和多态等核心概念。 1. **Java语法基础** ...
以上知识点在"JAVA知识点总结思维导图(xmind)"中可能以思维导图的形式详细展开,包括每个主题的子话题和相关实例,帮助学习者系统地理解和掌握Java编程。通过深入学习和实践这些知识点,可以成为一名熟练的Java...
这份"java知识点总结思维导图(xmind)"是为帮助学习者系统性地理解和掌握Java核心技术而精心整理的资料。思维导图作为一种有效的学习工具,能够帮助我们更好地组织和记忆信息,提高学习效率。 首先,让我们从基础...
Java的关键字包括用于控制程序结构的语句和操作符,如if、for、while等。数据类型包括基本类型和对象类型,基本类型包括整数型、浮点型、字符型和布尔型,对象类型包括类、接口等。数据类型在Java中非常关键,因为...
### 黑马程序员入学Java精华总结 #### 一、Java概述与基础知识 1. **何为编程?** - 编程是指通过编写计算机能够理解的指令来解决问题或完成特定任务的过程。这些指令通常被组织成算法,并使用某种编程语言实现。...