SlideShare una empresa de Scribd logo
1 de 20
操作符
Agenda
•   基本介绍
•   优先级
•   赋值操作符=
•   算数运算符
•   一元运算符
•   自增与自减
•   关系运算符
•   逻辑操作符
•   位操作符
•   三元if-else操作符
•   字符串合并
•   强制类型转换
•   溢出
基本介绍
• Java发展自c/c++, 因此它们的操作符基本上
  是相同的, Java操作符在c/c++的基础上作了
  一些简化和改进. 如果你熟悉c/c++的操作符,
  那么可以略过此章节;
• 基本的java操作符有: 加(+), 减(-), 乘(*), 除(/),
=(赋值), ==(等于), !=(不等于); 这些操作符基本
上只用于原语类型, 其中=/==/!=可以用于所有
的对象, +/+=也可以用于字符串.
优先级
• 遵循如下原则: 有括号先算括号, 乘除优先
  于加减;
• 示例: demo/Demo1.java
int x = 1, y = 2, z = 3;
int a = x + y - 2/2 + z; // (1)
int b = x + (y - 2)/(2 + z); // (2)
System.out.println("a = " + a + " b = " + b);
赋值操作符=
• 赋值操作符是将某个值赋给某个指定的变量;
  赋值操作中左值(lvalue)是指等号左边的变量,
  右值(rvalue)是指等号右边的常量(4, “String”)/
  表达式(a+1)/变量;
• 原语类型的赋值比较直观, 比如 int a = 4; 整型
  变量a的值为4;
• 引用赋值: 将指向某个对象的引用赋值给另一
  个变量时, 该变量会指向同一个对象; eg, c和d
  是两个非原语类型的对象:
c=d; // c和d将会指向同一个对象
• 示例: demo/Demo2.java
赋值操作符=
• 在调用方法的参数传递中, 也会发生引用的
  赋值, 效果与上述的一致.
• 示例: demo/Demo3.java
算数运算符
• 基本算数运算符: +, -, *, /, %;
• 组合基本运算符和赋值:
+=, -=, *=, /=, %=, 先进行基本运算然后将结果
赋给左值; eg: i+=3 等价于i=i+3
• 示例: demo/Demo4.java
一元运算符
• 一元运算符(+/-) 与 加减运算符是一样的, 但
  它们的操作数只有一个, 示例:
x=-a;
x=a * -b;
x = a * (-b);
自增与自减
• 自增运算符(++)对变量加1, 比如i++等价于i=i+1;
  自减运算符(--)对变量减1, 比如i--等价于i=i-1;
• 自增/减运算符可以使用在变量的前面或者后
  面, 如果位于变量的前面则先返回变量的值, 然
  后自增/减; 如果位于后面则先自增/减, 然后返
  回变量值, 示例:
int i = 5;
int j = i++;   // j == 5, i == 6
int k = ++i;   // k == 7, i == 7
• 示例: demo/Demo5.java
关系运算符
• 关系运算符返回布尔值(boolean), 关系运算符
  有<(小于), >(大于), <=(小于或等于), >=(大于或
  等于), ==(等于), !=(不等于);
• 示例:
if(i == 4) {         //如果i等于4, 则执行相应的动作
……
} else if (i > 4) { //如果i大于4, 则执行相应的动作
……
} else {
……
}
关系运算符
               判断对象是否相等
• 关系运算符==用于判断两个对象是否指向同一
  个对象, 如果指向同一个对象则返回true, 否则
  返回false;
• 示例:
Integer i1 = new Integer(4);
Integer i2 = new Integer(4);
i1==i2; // 返回false, 因为i1和i2指向两个不同的对象.
Integer i3 = i1;
i1==i3; // 返回true, i1和i3指向同一个对象
• 通过覆盖Object类中的equals方法来实现对象
  的比较, 将会在以后介绍.
逻辑操作符
• 逻辑操作符&&(与), ||(或), !(非) 返回一个布尔值
  (boolean);
逻辑与: 表达式1&&表达式2, 当两个表达式同时为true, 结果为true否则为
 false;
逻辑或: 表达式1&&表达式2, 当两个表达式有至少一个为true, 结果为true
 否则为false;
逻辑非: !表达式, 表达式返回true结果为false否则为true;
• 示例:
if(i==1 && j==2) {   // 逻辑与
     …….
}
if(k!=3) {           // 逻辑非
     …….
}
逻辑操作符
           短路运算
• 对于逻辑与&&操作, 从左到右依次计算表达
  式, 遇到返回为false则停止计算并返回false;
  如果所有的表达式都返回true则返回true;
• 对于逻辑或||操作, 从左到右依次计算表达
  式, 遇到返回为true则停止计算并返回true;
  如果所有的表达式都返回false则返回false;
• 这种短路设计的好处是避免不必要的运算,
  对于性能有好处;
• 示例: demo/Demo6.java
位操作符
• 位与(&), 如果参与运算均为1则返回1, 否则返回0;
• 位或(|), 如果参与运算的至少有一个为1则返回1, 否
  则返回0;
• 示例:
int i = 100;
int j = 120;
print(Integer.toBinaryString(i)); // 1100100
print(Integer.toBinaryString(j)); // 1111000
print(Integer.toBinaryString(i&j)); // 1100000
print(Integer.toBinaryString(i|j)); // 1111100


• 示例: demo/Demo7.java
位操作符
• 左移(<<), 将比特位向左移指定的位数; 比如: i<<5 表示i
   的比特位向左移动5位, 并返回位移操作之后的数字, i的
   值不变;
• 右移(>>),将比特位向右移指定的位数, 空出来的比特位
   如下处理:
1), 如果该数值为正数则补0;
2), 如果该数值为负数则补1;
• 无符号右移(>>>), 与>>操作的不同之处在无符号右移始
   终在高位补零;
• 取反(~), 对某个数进行取反操作, 如果比特位为0则置为1,
   否则置为0; 取反是一个一元操作符.
• 示例: demo/Demo8.java
三元if-else操作符
• java中唯一一个三元操作符, 用于条件判断然后返回一个结果, 格
    式:expression?val1:val2;
expression需要返回true或者false, 如果true则
返回val1, 否则返回val2;
• 该表达式等价于if/else条件判断, 示例:
return i<100?i*100:i*10;
等价于:
if(i<100) {
    return i*100;
} else {
    return i*10;
}
• 示例: demo/Demo9.java
字符串合并
             操作符
• 字符串合并操作符: +/+=, 与加法运算相同; 示
   例: “hello” + “world” 返回hellworld;
• 在字符串合并操作中如果操作数不是一个字符
   串类型, 那么会将该操作数转换为字符串, 分两
   种情况:
1, 原语类型, 直接转换为字符串. 比如:
“string” + 1 返回string1
2, 对象类型, 则调用该对象上的toString方法转换
   为字符串
• 示例: demo/Demo10.java
强制类型转换
• 对于整数类型(int, long), 由字节数较少的转换为字节数较多的,
  无需强制类型转换; 反过来则需要强制类型转换, 示例:
int i = 200;
long lng = i; // 无需转换
long lng = (long)i;
int j = (int)lng; // 必须强制类型转换
• 在浮点型(double, float)与整型之间进行转换时, 会将小数点之后
  的部分给截掉, 示例:
int i = (int)2.5f; // i = 2
• 在强制类型转换中, 如果超出了目标类型的范围则会出现字节被
  截断的情况, 比如:
long lng = 2147483648L;         // 超出了int类型的范围
int i = (int)lng;               // i= -2147483648
• 对象类型转换通常发生在将一个对象转换为该对象对应的具体
  类型, eg:
Object obj = new Integer(4);
Integer itg = (Integer)obj;
溢出
• 对于数字类型(int, long, double, float等) 都有它
  们对应的范围, 比如int是-2147483648 –
  2147483647, 如果在进行算术运算时结果超出
  了该范围则会出现溢出.
• 示例:
int big = Integer.MAX_VALUE;
System.out.println("big = " + big);
int bigger = big * 4;
System.out.println("bigger = " + bigger); // -4

• 当出现溢出时, java不会提示仸何错误, 因此必
  须小心在程序中避免这种情况发生.
END

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Python程式設計 - 基本資料運算
Python程式設計 - 基本資料運算Python程式設計 - 基本資料運算
Python程式設計 - 基本資料運算
 
Python變數與資料運算
Python變數與資料運算Python變數與資料運算
Python變數與資料運算
 
Java Script 引擎技术
Java Script 引擎技术Java Script 引擎技术
Java Script 引擎技术
 
Python 迴圈作業
Python 迴圈作業Python 迴圈作業
Python 迴圈作業
 
Ch 8
Ch 8Ch 8
Ch 8
 
Python系列2
Python系列2Python系列2
Python系列2
 
Java 8 與 retrolambda
Java 8 與 retrolambdaJava 8 與 retrolambda
Java 8 與 retrolambda
 
C 02 c语言的基本数据类型与表达式
C 02 c语言的基本数据类型与表达式C 02 c语言的基本数据类型与表达式
C 02 c语言的基本数据类型与表达式
 
Scala+RDD
Scala+RDDScala+RDD
Scala+RDD
 
第4章函数
第4章函数第4章函数
第4章函数
 
1 C入門教學
1  C入門教學1  C入門教學
1 C入門教學
 
Scala再探
Scala再探Scala再探
Scala再探
 
Chap 07
Chap 07Chap 07
Chap 07
 
Hi Haskell
Hi HaskellHi Haskell
Hi Haskell
 
第2章数据类型、运算符和表达式
第2章数据类型、运算符和表达式第2章数据类型、运算符和表达式
第2章数据类型、运算符和表达式
 
Python分支作業
Python分支作業Python分支作業
Python分支作業
 
Intro to C++ Basic
Intro to C++ BasicIntro to C++ Basic
Intro to C++ Basic
 
Python学习笔记
Python学习笔记Python学习笔记
Python学习笔记
 
Swift基礎
Swift基礎Swift基礎
Swift基礎
 

Destacado

Isla workshop 2015-03-08
Isla workshop 2015-03-08Isla workshop 2015-03-08
Isla workshop 2015-03-08pictonio
 
9, interfaces
9, interfaces9, interfaces
9, interfacested-xu
 
Agribusiness courses and ag training victoria
Agribusiness courses and ag training victoriaAgribusiness courses and ag training victoria
Agribusiness courses and ag training victoriaConor Hall
 
презентация электрод
презентация электродпрезентация электрод
презентация электродsergey_smailov
 
Lynette Community Of Learners
Lynette    Community Of LearnersLynette    Community Of Learners
Lynette Community Of LearnersKevin Hodgson
 
гиа 9 - для школьного сайта
гиа 9  -  для школьного сайтагиа 9  -  для школьного сайта
гиа 9 - для школьного сайтаАня Иванова
 
гиа 9 - график проведения
гиа 9  -  график проведениягиа 9  -  график проведения
гиа 9 - график проведенияАня Иванова
 
Sobre el concepto 'Posverdad'
Sobre el concepto 'Posverdad' Sobre el concepto 'Posverdad'
Sobre el concepto 'Posverdad' Antoni
 
Using Social Media in Business - iWIN Forum - Scot McKee
Using Social Media in Business - iWIN Forum - Scot McKee Using Social Media in Business - iWIN Forum - Scot McKee
Using Social Media in Business - iWIN Forum - Scot McKee BirddogB2B
 
Effective communication skill IN NURSING
Effective communication skill IN NURSINGEffective communication skill IN NURSING
Effective communication skill IN NURSINGAmbily Ulahannan
 

Destacado (15)

Isla workshop 2015-03-08
Isla workshop 2015-03-08Isla workshop 2015-03-08
Isla workshop 2015-03-08
 
9, interfaces
9, interfaces9, interfaces
9, interfaces
 
Agribusiness courses and ag training victoria
Agribusiness courses and ag training victoriaAgribusiness courses and ag training victoria
Agribusiness courses and ag training victoria
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
 
презентация электрод
презентация электродпрезентация электрод
презентация электрод
 
Lynette Community Of Learners
Lynette    Community Of LearnersLynette    Community Of Learners
Lynette Community Of Learners
 
Presentation1
Presentation1Presentation1
Presentation1
 
визитница 0
визитница 0визитница 0
визитница 0
 
гиа 9 - для школьного сайта
гиа 9  -  для школьного сайтагиа 9  -  для школьного сайта
гиа 9 - для школьного сайта
 
гиа 9 - график проведения
гиа 9  -  график проведениягиа 9  -  график проведения
гиа 9 - график проведения
 
Sobre el concepto 'Posverdad'
Sobre el concepto 'Posverdad' Sobre el concepto 'Posverdad'
Sobre el concepto 'Posverdad'
 
Using Social Media in Business - iWIN Forum - Scot McKee
Using Social Media in Business - iWIN Forum - Scot McKee Using Social Media in Business - iWIN Forum - Scot McKee
Using Social Media in Business - iWIN Forum - Scot McKee
 
Effective communication skill IN NURSING
Effective communication skill IN NURSINGEffective communication skill IN NURSING
Effective communication skill IN NURSING
 
Nursing Communication
Nursing CommunicationNursing Communication
Nursing Communication
 
Prf box
Prf box Prf box
Prf box
 

Similar a 3, operators

C 02 c语言的基本数据类型与表达式
C 02 c语言的基本数据类型与表达式C 02 c语言的基本数据类型与表达式
C 02 c语言的基本数据类型与表达式1138177709
 
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法Justin Lin
 
Ecmascript
EcmascriptEcmascript
Ecmascriptjay li
 
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型Justin Lin
 
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programmingted-xu
 
建造与理解-用Python实现深度学习框架
建造与理解-用Python实现深度学习框架建造与理解-用Python实现深度学习框架
建造与理解-用Python实现深度学习框架ZhenChen57
 
Javascript 培训第二节 基础上
Javascript 培训第二节 基础上Javascript 培训第二节 基础上
Javascript 培训第二节 基础上liziqi7
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanupted-xu
 
Bash入门基础篇
Bash入门基础篇Bash入门基础篇
Bash入门基础篇Zhiyao Pan
 
2, bash synax simplified
2, bash synax simplified2, bash synax simplified
2, bash synax simplifiedted-xu
 
Java面试题集
Java面试题集Java面试题集
Java面试题集yiditushe
 
4, controlling execution
4, controlling execution4, controlling execution
4, controlling executionted-xu
 
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法Justin Lin
 
Erlang培训
Erlang培训Erlang培训
Erlang培训liu qiang
 
Polarity analysis for sentiment classification
Polarity analysis for sentiment classificationPolarity analysis for sentiment classification
Polarity analysis for sentiment classificationShiang-Yun Yang
 
C++11综述/新特性描述/Overview of C++11 New Features
C++11综述/新特性描述/Overview of C++11 New FeaturesC++11综述/新特性描述/Overview of C++11 New Features
C++11综述/新特性描述/Overview of C++11 New FeaturesPeien Luo
 
6, awk
6, awk6, awk
6, awkted-xu
 
Javascript 培训第四节 深入了解
Javascript 培训第四节 深入了解Javascript 培训第四节 深入了解
Javascript 培训第四节 深入了解liziqi7
 

Similar a 3, operators (20)

C 02 c语言的基本数据类型与表达式
C 02 c语言的基本数据类型与表达式C 02 c语言的基本数据类型与表达式
C 02 c语言的基本数据类型与表达式
 
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
 
Ecmascript
EcmascriptEcmascript
Ecmascript
 
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
 
2, object oriented programming
2, object oriented programming2, object oriented programming
2, object oriented programming
 
建造与理解-用Python实现深度学习框架
建造与理解-用Python实现深度学习框架建造与理解-用Python实现深度学习框架
建造与理解-用Python实现深度学习框架
 
Javascript 培训第二节 基础上
Javascript 培训第二节 基础上Javascript 培训第二节 基础上
Javascript 培训第二节 基础上
 
Fp
FpFp
Fp
 
5, initialization & cleanup
5, initialization & cleanup5, initialization & cleanup
5, initialization & cleanup
 
Bash入门基础篇
Bash入门基础篇Bash入门基础篇
Bash入门基础篇
 
2, bash synax simplified
2, bash synax simplified2, bash synax simplified
2, bash synax simplified
 
Java面试题集
Java面试题集Java面试题集
Java面试题集
 
4, controlling execution
4, controlling execution4, controlling execution
4, controlling execution
 
Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法Java SE 8 技術手冊第 3 章 - 基礎語法
Java SE 8 技術手冊第 3 章 - 基礎語法
 
Erlang培训
Erlang培训Erlang培训
Erlang培训
 
Polarity analysis for sentiment classification
Polarity analysis for sentiment classificationPolarity analysis for sentiment classification
Polarity analysis for sentiment classification
 
C++11综述/新特性描述/Overview of C++11 New Features
C++11综述/新特性描述/Overview of C++11 New FeaturesC++11综述/新特性描述/Overview of C++11 New Features
C++11综述/新特性描述/Overview of C++11 New Features
 
6, awk
6, awk6, awk
6, awk
 
Javascript 培训第四节 深入了解
Javascript 培训第四节 深入了解Javascript 培训第四节 深入了解
Javascript 培训第四节 深入了解
 
SCJP ch17
SCJP ch17SCJP ch17
SCJP ch17
 

Más de ted-xu

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashbackted-xu
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rmanted-xu
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rmanted-xu
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recoveryted-xu
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle securityted-xu
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storageted-xu
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networkingted-xu
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a databaseted-xu
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture introted-xu
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuningted-xu
 
7, business event system
7, business event system7, business event system
7, business event systemted-xu
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneousted-xu
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activityted-xu
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & apited-xu
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebsted-xu
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflowted-xu
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow introted-xu
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & apited-xu
 

Más de ted-xu (20)

11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
10, OCP - flashback
10, OCP - flashback10, OCP - flashback
10, OCP - flashback
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
 
8, OCP - backup with rman
8, OCP - backup with rman8, OCP - backup with rman
8, OCP - backup with rman
 
7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery7, OCP - configure database for backup and recovery
7, OCP - configure database for backup and recovery
 
6, OCP - oracle security
6, OCP - oracle security6, OCP - oracle security
6, OCP - oracle security
 
5, OCP - oracle storage
5, OCP - oracle storage5, OCP - oracle storage
5, OCP - oracle storage
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
2, OCP - installing and creating a database
2, OCP - installing and creating a database2, OCP - installing and creating a database
2, OCP - installing and creating a database
 
1, OCP - architecture intro
1, OCP - architecture intro1, OCP - architecture intro
1, OCP - architecture intro
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuning
 
7, business event system
7, business event system7, business event system
7, business event system
 
6, workflow miscellaneous
6, workflow miscellaneous6, workflow miscellaneous
6, workflow miscellaneous
 
5, workflow function activity
5, workflow function activity5, workflow function activity
5, workflow function activity
 
4, workflow tables & api
4, workflow tables & api4, workflow tables & api
4, workflow tables & api
 
3, workflow in ebs
3, workflow in ebs3, workflow in ebs
3, workflow in ebs
 
2, a simple workflow
2, a simple workflow2, a simple workflow
2, a simple workflow
 
1, workflow intro
1, workflow intro1, workflow intro
1, workflow intro
 
8, bes tables & api
8, bes tables & api8, bes tables & api
8, bes tables & api
 

3, operators

  • 2. Agenda • 基本介绍 • 优先级 • 赋值操作符= • 算数运算符 • 一元运算符 • 自增与自减 • 关系运算符 • 逻辑操作符 • 位操作符 • 三元if-else操作符 • 字符串合并 • 强制类型转换 • 溢出
  • 3. 基本介绍 • Java发展自c/c++, 因此它们的操作符基本上 是相同的, Java操作符在c/c++的基础上作了 一些简化和改进. 如果你熟悉c/c++的操作符, 那么可以略过此章节; • 基本的java操作符有: 加(+), 减(-), 乘(*), 除(/), =(赋值), ==(等于), !=(不等于); 这些操作符基本 上只用于原语类型, 其中=/==/!=可以用于所有 的对象, +/+=也可以用于字符串.
  • 4. 优先级 • 遵循如下原则: 有括号先算括号, 乘除优先 于加减; • 示例: demo/Demo1.java int x = 1, y = 2, z = 3; int a = x + y - 2/2 + z; // (1) int b = x + (y - 2)/(2 + z); // (2) System.out.println("a = " + a + " b = " + b);
  • 5. 赋值操作符= • 赋值操作符是将某个值赋给某个指定的变量; 赋值操作中左值(lvalue)是指等号左边的变量, 右值(rvalue)是指等号右边的常量(4, “String”)/ 表达式(a+1)/变量; • 原语类型的赋值比较直观, 比如 int a = 4; 整型 变量a的值为4; • 引用赋值: 将指向某个对象的引用赋值给另一 个变量时, 该变量会指向同一个对象; eg, c和d 是两个非原语类型的对象: c=d; // c和d将会指向同一个对象 • 示例: demo/Demo2.java
  • 6. 赋值操作符= • 在调用方法的参数传递中, 也会发生引用的 赋值, 效果与上述的一致. • 示例: demo/Demo3.java
  • 7. 算数运算符 • 基本算数运算符: +, -, *, /, %; • 组合基本运算符和赋值: +=, -=, *=, /=, %=, 先进行基本运算然后将结果 赋给左值; eg: i+=3 等价于i=i+3 • 示例: demo/Demo4.java
  • 8. 一元运算符 • 一元运算符(+/-) 与 加减运算符是一样的, 但 它们的操作数只有一个, 示例: x=-a; x=a * -b; x = a * (-b);
  • 9. 自增与自减 • 自增运算符(++)对变量加1, 比如i++等价于i=i+1; 自减运算符(--)对变量减1, 比如i--等价于i=i-1; • 自增/减运算符可以使用在变量的前面或者后 面, 如果位于变量的前面则先返回变量的值, 然 后自增/减; 如果位于后面则先自增/减, 然后返 回变量值, 示例: int i = 5; int j = i++; // j == 5, i == 6 int k = ++i; // k == 7, i == 7 • 示例: demo/Demo5.java
  • 10. 关系运算符 • 关系运算符返回布尔值(boolean), 关系运算符 有<(小于), >(大于), <=(小于或等于), >=(大于或 等于), ==(等于), !=(不等于); • 示例: if(i == 4) { //如果i等于4, 则执行相应的动作 …… } else if (i > 4) { //如果i大于4, 则执行相应的动作 …… } else { …… }
  • 11. 关系运算符 判断对象是否相等 • 关系运算符==用于判断两个对象是否指向同一 个对象, 如果指向同一个对象则返回true, 否则 返回false; • 示例: Integer i1 = new Integer(4); Integer i2 = new Integer(4); i1==i2; // 返回false, 因为i1和i2指向两个不同的对象. Integer i3 = i1; i1==i3; // 返回true, i1和i3指向同一个对象 • 通过覆盖Object类中的equals方法来实现对象 的比较, 将会在以后介绍.
  • 12. 逻辑操作符 • 逻辑操作符&&(与), ||(或), !(非) 返回一个布尔值 (boolean); 逻辑与: 表达式1&&表达式2, 当两个表达式同时为true, 结果为true否则为 false; 逻辑或: 表达式1&&表达式2, 当两个表达式有至少一个为true, 结果为true 否则为false; 逻辑非: !表达式, 表达式返回true结果为false否则为true; • 示例: if(i==1 && j==2) { // 逻辑与 ……. } if(k!=3) { // 逻辑非 ……. }
  • 13. 逻辑操作符 短路运算 • 对于逻辑与&&操作, 从左到右依次计算表达 式, 遇到返回为false则停止计算并返回false; 如果所有的表达式都返回true则返回true; • 对于逻辑或||操作, 从左到右依次计算表达 式, 遇到返回为true则停止计算并返回true; 如果所有的表达式都返回false则返回false; • 这种短路设计的好处是避免不必要的运算, 对于性能有好处; • 示例: demo/Demo6.java
  • 14. 位操作符 • 位与(&), 如果参与运算均为1则返回1, 否则返回0; • 位或(|), 如果参与运算的至少有一个为1则返回1, 否 则返回0; • 示例: int i = 100; int j = 120; print(Integer.toBinaryString(i)); // 1100100 print(Integer.toBinaryString(j)); // 1111000 print(Integer.toBinaryString(i&j)); // 1100000 print(Integer.toBinaryString(i|j)); // 1111100 • 示例: demo/Demo7.java
  • 15. 位操作符 • 左移(<<), 将比特位向左移指定的位数; 比如: i<<5 表示i 的比特位向左移动5位, 并返回位移操作之后的数字, i的 值不变; • 右移(>>),将比特位向右移指定的位数, 空出来的比特位 如下处理: 1), 如果该数值为正数则补0; 2), 如果该数值为负数则补1; • 无符号右移(>>>), 与>>操作的不同之处在无符号右移始 终在高位补零; • 取反(~), 对某个数进行取反操作, 如果比特位为0则置为1, 否则置为0; 取反是一个一元操作符. • 示例: demo/Demo8.java
  • 16. 三元if-else操作符 • java中唯一一个三元操作符, 用于条件判断然后返回一个结果, 格 式:expression?val1:val2; expression需要返回true或者false, 如果true则 返回val1, 否则返回val2; • 该表达式等价于if/else条件判断, 示例: return i<100?i*100:i*10; 等价于: if(i<100) { return i*100; } else { return i*10; } • 示例: demo/Demo9.java
  • 17. 字符串合并 操作符 • 字符串合并操作符: +/+=, 与加法运算相同; 示 例: “hello” + “world” 返回hellworld; • 在字符串合并操作中如果操作数不是一个字符 串类型, 那么会将该操作数转换为字符串, 分两 种情况: 1, 原语类型, 直接转换为字符串. 比如: “string” + 1 返回string1 2, 对象类型, 则调用该对象上的toString方法转换 为字符串 • 示例: demo/Demo10.java
  • 18. 强制类型转换 • 对于整数类型(int, long), 由字节数较少的转换为字节数较多的, 无需强制类型转换; 反过来则需要强制类型转换, 示例: int i = 200; long lng = i; // 无需转换 long lng = (long)i; int j = (int)lng; // 必须强制类型转换 • 在浮点型(double, float)与整型之间进行转换时, 会将小数点之后 的部分给截掉, 示例: int i = (int)2.5f; // i = 2 • 在强制类型转换中, 如果超出了目标类型的范围则会出现字节被 截断的情况, 比如: long lng = 2147483648L; // 超出了int类型的范围 int i = (int)lng; // i= -2147483648 • 对象类型转换通常发生在将一个对象转换为该对象对应的具体 类型, eg: Object obj = new Integer(4); Integer itg = (Integer)obj;
  • 19. 溢出 • 对于数字类型(int, long, double, float等) 都有它 们对应的范围, 比如int是-2147483648 – 2147483647, 如果在进行算术运算时结果超出 了该范围则会出现溢出. • 示例: int big = Integer.MAX_VALUE; System.out.println("big = " + big); int bigger = big * 4; System.out.println("bigger = " + bigger); // -4 • 当出现溢出时, java不会提示仸何错误, 因此必 须小心在程序中避免这种情况发生.
  • 20. END