Java私人学习笔记——第2章 数据类型和运算符

2.2 数据类型

2.2.1 Java数据类型

2.3 常用运算符

Java提供了一组运算符丰富的操纵变量。我们可以把所有的Java操作符为以下几组:

  • 算术运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 赋值运算符
  • 其它运算符

算术运算符:

算术运算符用于在数学表达式中,他们是在代数中使用的方法相同。下表列出了算术运算符:

假设整型变量A=10和变量B=20,则:

算术运算实例

运算符 描述 实例
+ Addition - Adds values on either side of the operator A + B = 30
- Subtraction - Subtracts right hand operand from left hand operand A - B = -10
* Multiplication - Multiplies values on either side of the operator A * B = 200
/ Division - Divides left hand operand by right hand operand B / A = 2
% Modulus - Divides left hand operand by right hand operand and returns remainder B % A = 0
++ Increment - Increases the value of operand by 1 B++ =21
-- Decrement - Decreases the value of operand by 1 B-- =19

关系运算符:

有下列由Java语言支持的关系运算符

假设变量A=10和变量B=20,则:

关系运算符实例

运算符 描述 实例
== Checks if the values of two operands are equal or not, if yes then condition becomes true. (A == B) is not true.
!= Checks if the values of two operands are equal or not, if values are not equal then condition becomes true. (A != B) is true.
> Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true. (A > B) is not true.
< Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true. (A < B) is true.
>= Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true. (A >= B) is not true.
<= Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true. (A <= B) is true.

按位运算符:

Java定义了几个位运算符,它可以应用到整数类型,长型,整型,短整型,字符和字节。

位运算符作用于位,并执行逐位操作。假设当a =60和b= 13; 现在以二进制格式,他们将会如下:

a = 0011 1100

b = 0000 1101

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

a&b = 0000 1100

a|b = 0011 1101

a^b = 0011 0001

~a  = 1100 0011

下表列出了按位运算符:

假设整型变量A=60和变量B=13,则:

位运算实例

运算符 描述 实例
& Binary AND Operator copies a bit to the result if it exists in both operands. (A & B) will give 12 which is 0000 1100
| Binary OR Operator copies a bit if it exists in either operand. (A | B) will give 61 which is 0011 1101
^ Binary XOR Operator copies the bit if it is set in one operand but not both. (A ^ B) will give 49 which is 0011 0001
~ Binary Ones Complement Operator is unary and has the effect of ‘flipping‘ bits. (~A ) will give -61 which is 1100 0011 in 2‘s complement form due to a signed binary number.
<< Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand. A << 2 will give 240 which is 1111 0000
>> Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand. A >> 2 will give 15 which is 1111
>>> Shift right zero fill operator. The left operands value is moved right by the number of bits specified by the right operand and shifted values are filled up with zeros. A >>>2 will give 15 which is 0000 1111

逻辑运算符:

下表列出了逻辑运算符:

假设布尔变量A=ture,变量B=false,那么:

逻辑运算符实例

运算符 描述 实例
&& Called Logical AND operator. If both the operands are non-zero, then the condition becomes true. (A && B) is false.
|| Called Logical OR Operator. If any of the two operands are non-zero, then the condition becomes true. (A || B) is true.
! Called Logical NOT Operator. Use to reverses the logical state of its operand. If a condition is true then Logical NOT operator will make false. !(A && B) is true.

赋值运算符:

有下列由Java语言支持赋值操作符:

赋值运算符实例

运算符 描述 实例
= Simple assignment operator, Assigns values from right side operands to left side operand C = A + B will assign value of A + B into C
+= Add AND assignment operator, It adds right operand to the left operand and assign the result to left operand C += A is equivalent to C = C + A
-= Subtract AND assignment operator, It subtracts right operand from the left operand and assign the result to left operand C -= A is equivalent to C = C - A
*= Multiply AND assignment operator, It multiplies right operand with the left operand and assign the result to left operand C *= A is equivalent to C = C * A
/= Divide AND assignment operator, It divides left operand with the right operand and assign the result to left operand C /= A is equivalent to C = C / A
%= Modulus AND assignment operator, It takes modulus using two operands and assign the result to left operand C %= A is equivalent to C = C % A
<<= Left shift AND assignment operator C <<= 2 is same as C = C << 2
>>= Right shift AND assignment operator C >>= 2 is same as C = C >> 2
&= Bitwise AND assignment operator C &= 2 is same as C = C & 2
^= bitwise exclusive OR and assignment operator C ^= 2 is same as C = C ^ 2
|= bitwise inclusive OR and assignment operator C |= 2 is same as C = C | 2

其它运算符

Java 语言支持一些其他的运算符。

条件运算符 ( ? : ):

条件运算符也被称为三元运算符。该运算符包括三个操作数,用于评估计算布尔表达式。此运算符的目标是确定哪些值应分配给该变量。可写为:

variable x = (expression) ? value if true : value if false

下面是例子:

public class Test {

   public static void main(String args[]){
      int a , b;
      a = 10;
      b = (a == 1) ? 20: 30;
      System.out.println( "Value of b is : " +  b );

      b = (a == 10) ? 20: 30;
      System.out.println( "Value of b is : " + b );
   }}

这将产生以下结果:

Value of b is : 30Value of b is : 20

instanceof运算符:

这个操作符只用于对象引用变量。操作检查对象是否为特定类型(类类型或接口类型)。instanceof 运算符被写为:

( Object reference variable ) instanceof  (class/interface type)

如果运算符的左侧提到的变量的对象传递了IS-A检查右侧的类/接口类型,那么结果将为 true。下面是例子:

public class Test {

   public static void main(String args[]){
      String name = "James";
      // following will return true since name is type of String
      boolean result = name instanceof String;
      System.out.println( result );
   }}

这将产生以下结果:

true

这个操作符仍然会返回true,如果被比较的对象是分配在右侧的类型兼容。下面是一个例子:

class Vehicle {}

public class Car extends Vehicle {
   public static void main(String args[]){
      Vehicle a = new Car();
      boolean result =  a instanceof Car;
      System.out.println( result );
   }}

这将产生以下结果:

true

优先级的Java操作符:

运算符优先级决定的条件在表达式中分组。这会影响一个表达式如何计算。某些运算符的优先级高于其它,例如,乘法运算符的优先级比加法运算高:

例如x= 7+3* 2;这里x被赋值13,而不是20,因为运算符*的优先级高于+,所以它首先被乘以3 * 2,然后加7。

这里,具有最高优先级的操作出现在表格上方,那些具有最低出现在底部。在表达式中,优先级较高的运算符将首先评估计算。

分类  运算符 关联 
Postfix  () [] . (dot operator) Left to right 
Unary  ++ - - ! ~ Right to left 
Multiplicative   * / %  Left to right 
Additive   + -  Left to right 
Shift   >> >>> <<   Left to right 
Relational   > >= < <=   Left to right 
Equality   == !=  Left to right 
Bitwise AND  Left to right 
Bitwise XOR  Left to right 
Bitwise OR  Left to right 
Logical AND  &&  Left to right 
Logical OR  ||  Left to right 
Conditional  ?:  Right to left 
Assignment  = += -= *= /= %= >>= <<= &= ^= |=  Right to left 
Comma  Left to right 
时间: 2024-08-02 00:11:55

Java私人学习笔记——第2章 数据类型和运算符的相关文章

Java私人学习笔记——第4章 类和对象基础

4.1 面向对象基础 4.1.2 面向对象的基本特征 1.封装性     2.继承性     3.多态性 4.2 Java类和对象 4.2.1 类的定义 类的定义包括类声明和类体的定义: 1.类声明 [public][abstract | final]class ClassName[extends SuperClass][implements InterfaceNameList]{ //成员变量声明 //成员方法声明 } 抽象类不能实例化,final最终类不能被继承: 4.2.2 对象的使用 引

Java私人学习笔记——第1章 Java语言综述

1.1 Java起源与发展 1.1.3 Java语言的特点 1.简单   2.面向对象   3.分布性   4.解释型   5.平台独立   6.可移植 7.健壮性   8.安全性   9.高性能   10多线程   11.动态性 1.2 面向对象编程概述 1.2.2 OOP(面向对象程序设计)的优势 1.易维护   2.可重用   3.可扩展 1.3 简单的Java程序 1.3.2 编译过程 编译器——>源代码 .java——>Java编辑器——>字节码——>Java调试器——&

Java私人学习笔记——第3章 程序流程控制

3.1 分支结构 3.1.1 if语句结构 if( ){ }else{ } 3.1.2 条件运算符 condition ? expr1 : expr2 3.1.3 switch语句结构 switch( ){ case value1: ...           [break;] case value2: ...           [break;] case value3: ...           [break;] } 3.2 循环结构 3.2.1 while循环结构 while(boole

java JDK8 学习笔记——第16章 整合数据库

第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程序. 2.JDBC标准主要分为两个部分:JDBC应用程序开发者接口和JDBC驱动程序开发者接口.应用程序需要联机数据库,其相关API主要在java.sql和javax.sql两个包中. 3.应用程序使用JDBC联机数据库的通用语法: Connection conn = DriverManager.g

JavaScript学习笔记【2】表达式和运算符、语句、对象

笔记来自<JavaScript权威指南(第六版)> 包含的内容: 表达式和运算符 语句 对象 表达式和运算符 数组直接量中的列表逗号之间的元素可以省略,这时省略的空位会填充值undefined.元素列表末尾可以留下单个逗号,这时并不会创建一个新的值为undefined元素. 属性访问表达式,.identifier的写法只适用于要访问的属性名称是合法的标识符,并且需要知道要访问的属性的名字.如果属性名称是一个保留字或者包含空格和标识符,或是一个数字(对于数组来说),则必须使用方括号的写法.当属性

Java Web 学习笔记 第三章 java基础(二)

第三章 java基础(二) 一.转义符 转义字符是"\",通过转义字符,可表示一些特殊的字符. 例如: '\n'  表示回车 '\t'   表示 制表符字符,一个制表符表示向右跳8-10个字符 '\\'   表示\ '\''   表示单引号 '\"'  表示双引号 "\u4e2d"表示unicode编码对应的字符(汉字:中). 二.布尔类型的概念和用法 boolean 类型用来表示肯定或否定两种可能. boolean 常用在分支语句.循环语句中. true

java JDK8 学习笔记——第13章 时间与日期

第十三章 时间与日期 13.1 认识时间与日期 13.1.1 时间的度量 1.格林威治标准时间GMT 格林威治标准时间的正午是太阳抵达天空最高点之时.现在已经不作为标准时间使用. 2.世界时UT世界时是借由观测远方星体跨过子午线而得,在引入UTC之前,GMT和UT是相同的. 3.国际原子时TAI 将秒的国际单位定义为铯原子辐射振动91926331770周耗费的时间,从UT的1958年开始同步. 4.世界协调时UTC 采用了闰秒修正,确保UTC与UT相差不会超过0.9秒,加入闰秒的时间通常会在6月

java JDK8 学习笔记——第17章 反射与类加载器

第十七章 反射与类加载器 17.1 运用反射 反射:.class文档反映了类基本信息,从Class等API取得类信息的方式称为反射. 17.1.1 Class与.class文档 1.java.lang.Class的实例代表Java应用程序运行时加载的.class文档,类.接口.Enum等编译过后,都会生成.class文档.Class类没有公开构造函数,实例时候JVM自动产生,每个.class文档加载时,JVM会自动生成对应的Class对象. 2.取得Class对象的方式: (1)通过Object

java JDK8 学习笔记——第15章 通用API

第十五章 通用API 15.1 日志 15.1.1 日志API简介 1.java.util.logging包提供了日志功能相关类与接口,不必额外配置日志组件,就可在标准Java平台使用是其好处.使用日志的起点是Logger类,Logger类的构造函数标示为protected,不是java.util.logging同包的类不能直接以new创建,要取得Logger实例,必修使用Logger的静态方法getLogger(). 2.调用getLogger()时,必须指定Logger实例所属名称空间,名称