`
tangqs
  • 浏览: 18979 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

第二章 Java基础语法(8)

阅读更多

 2.6.7   位运算符

 

Java中共包含四个位运算符:~(取反),&(与),|(或)和 ^(异或)。我们应该还记得,&| ^在逻辑运算符中也扮演了角色的。在这他们也拥有和逻辑运算符中相同的名字,实际上,位运算符和逻辑运算符的运算规则从本质上是完全相同的。下面列出了位运算符的运算规则。

 

&

0

1

 

|

0

1

0

0

0

0

0

1

1

0

1

1

1

1

 

^

0

1

 

0

1

0

0

1

 

1

1

1

1

0

 

 

不过了解这些运算规则仅仅是了解位运算的开始,我们还需要了解更多的内容,比如二进制与十进制之间的转换,原码、反码、补码的表示等等。在本书中,我们把重点放在Java的介绍上,因此我们就不对这些内容做详细介绍,如果需要学习这些内容的话,可以参考一下其他的书籍。

 

最后,给出几个相关例子,大家可以熟悉一下位运算符的用法。

 

public class BitOpTester { 

  public static void main(String[] args) {

    int i1 = -14;

    int i2 = 15;

    int j = ~i1;

    int k = i1 & i2;

    int m = i1 | i2;

    int n = i1 ^ i2;

    System.out.println(j + ", " + k + ", " + m + ", " + n); //结果为:13, 2, -1, -3

  }

}

 2.6.8    三元运算符

 

这个运算符的名字非常难取,按照C语言的中文译名,我在这里也给用了“三元运算符”这个名字,但从运算符的特征来讲,取名“if-else运算符更为恰当一些”。这个运算符的语法如下:

 

布尔表达式?值1:值2

 

意思是:如果表达式的结果为true,则返回值1,否则返回值2。看看下面这几个例子:

 

int i = 20;

int j = 15;

int max = (i>j) ? i:j ;

 

上面代码实际需要做的是将ij之间那个比较大的赋值给max。由于条件i>jtrue,因此返回i的值,因此max最终等于20

 

三元运算符属于常使用的那一类运算符,对于一个有经验的程序员来说,使用三元运算符替代简单的if……else语句可以使语句变得更为简单一些(当然,在新手面前,这样会显得比较酷一些)。不过,使用三元运算符也需要谨慎,有时候过度的使用也会造成降低代码的可维护性。看看下面这个:

 

int min = (x<y)?(x<z)?x:z:(y<z)?y:z;

 

有没有被上面这个搞糊涂?这个表达式用于求xyz之间最小的那个数。而实际上,这还不算是一个非常复杂的表达式。如果再写复杂,那么三元表达式就丧失了它的简单特性了。

 2.6.9    与“=”号联合使用

 

在程序中,我们经常会使用下面的表达式:

 

i = i + 10;

j = j - 5;

 

当碰到这些语句时,我们可以使用运算符和“=”的联合运算符来优化我们的代码,在Java中常见有如下联合赋值运算符:+=-=*=/=%=&=|=<<=>>=>>>=等。以+=为例,i += 5 等价于 i=i+5。而上面的代码也可以利用联合运算符转变为如下代码段:

 

i += 10;

j -= 5;

 

可能有读者会问,除了看上去更简单一些,联合运算符还有什么优势呢?由于Java虚拟机针对联合运算符的操作与普通的赋值运算符有区别,而联合运算符的速度更快,因此从性能上考虑的话,也更建议使用联合运算符。

 2.6.10 +”另一个作用:字符串连接

 

在前文已经介绍“+”是加法运算符,可以对两个数值型数据进行加法运算。实际上,除了这个作用之外,“+”还能作为字符串的连接运算符。例如下面的例子:

 

String str = “hello,” + “world”;

 

在上面的代码中“+”运算符将字符串”hello,””world”连接在一起组成新字符串”hello,world”。有些人可能会问,既然字符串不是基本数据类型,那为什么要使用“+”运算符进行字符串连接的操作呢?其实原因我们在前文中就提到过:因为字符串使用非常频繁,而字符串的连接又是字符串中最为常见的操作,因此有必要使用一些方式简化字符串的连接。

 

不过,“+”号可不仅仅只能用在字符串的连接上,它还能处理非字符串数据和字符串的连接。由于字符串的高使用率与通用性,因此在Java中有这样一个规定:只要“+”某一端是一个字符串,那么另一端的数据将会转换成字符串,然后再和这个字符串连接。也就是说:字符串达到“见谁灭谁”的境界了。让我们通过上面的几个例子来感受一下字符串类型的强大:

 

public class StrUnionTester {

  public static void main(String[] args) {

    String str = null;   

    str = "hello" + 1.0; // 结果为:hello1.0

    System.out.println(str);

    str = "hello" + true; //结果为:hellotrue

    System.out.println(str);

    str = "hello" + 1 + 2 + 3;  //结果为:hello123

    System.out.println(str);

    str = 1 + 2 + 3 + “hello”;  //结果为:6hello

    System.out.println(str);

  }

}

 

可能有人为str=1+2+3+hello;的结果感到迷惑——结果为什么不是123hello?这里的奥秘在于“+”号:要注意,当+两边都是数值类型的时候,它就是一个简单的加法运算符,因此我们要先进行1+2+3的运算,然后再和字符串“hello”进行连接。

 

分享到:
评论

相关推荐

    Java语言程序设计:第二章 Java语言语法基础.ppt

    Java 语言程序设计:第二章 Java 语言语法基础 Java 语言程序设计的第二章主要讲解 Java 语言的语法基础,包括标识符、关键字、注释、分隔符、数据类型等内容。本章将对这些概念进行详细的讲解,并提供了多个实例来...

    JAVA语言程序设计--第二章JAVA基础

    在“JAVA语言程序设计--第二章JAVA基础”这个主题中,我们主要探讨的是Java编程语言的基本概念和核心特性。Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司)于1995年发布。它以其“一...

    java第一章java概述教学课件

    相比C和C++,Java在语法上做了很多简化和改进,例如不支持全局变量和goto语句,以增强代码的可读性和结构化。Java对指针进行了严格的控制,禁止直接的指针操作,以提高程序的安全性。同时,Java采用自动内存管理,...

    第2章 Java基础语法.pdf

    本章将深入探讨Java的基础语法,帮助初学者掌握编程的基本概念。 一、Java环境搭建 在开始学习Java编程之前,你需要先安装Java Development Kit (JDK)。JDK包含了编译Java源代码和运行Java程序所需的所有工具,如...

    第二章 JAVA语言基础

    Java语言基础是编程学习的重要部分,它包含了程序设计的基本元素。本章主要讲解了以下几个核心概念: 1. **Java的基本数据类型**: Java提供了多种数据类型来存储不同种类的数据。整数型包括byte(1字节)、short...

    java基础语法.doc

    ## 第二课、变量和数据类型 Java有8种基本数据类型,分为整型(byte, short, int, long)、浮点型(float, double)、字符型(char)和布尔型(boolean)。此外,还有引用数据类型,如类、接口和数组。变量是用来...

    java_第二章_语法(2)

    在Java编程语言中,语法是构建程序的基础,本章我们将深入探讨其中的三大控制结构:顺序结构、选择结构和循环结构,以及访问修饰符的概念,包括它们的不同作用和使用场景。此外,我们还将讨论方法这一核心概念,以及...

    计算机后端-Java-Java核心基础-第06章 Java基本语法4 16. 质数输出的实现方式二.avi

    计算机后端-Java-Java核心基础-第06章 Java基本语法4 16. 质数输出的实现方式二.avi

    计算机后端-Java-Java核心基础-第06章 Java基本语法4 22. 项目二登记收入功能的实现.avi

    计算机后端-Java-Java核心基础-第06章 Java基本语法4 22. 项目二登记收入功能的实现.avi

    Java程序设计-第02章-Java基础语法PPT课件.ppt

    第二章主要讲解Java的基础语法,这是学习任何编程语言的基础。在这个章节中,学生将深入理解Java中的标识符、关键字、基本数据类型、变量和常量、运算符、语句以及输入参数的处理方式。 标识符在Java中用于给变量、...

    第2章-Java语言基础语法.pptx

    Java语言基础语法 Java语言基础语法是Java程序设计的基础,涵盖了数据类型、变量、运算符、控制流语句、数组等知识点。在本章节中,我们将详细介绍Java语言的基础语法。 数据类型是Java语言的基础,Java语言定义了...

    Java程序设计与数据结构第二章习题答案

    在Java程序设计与数据结构的学习过程中,第二章通常会涵盖基础的编程概念和初步的数据结构。这个主题旨在帮助初学者建立坚实的编程基础,理解和运用核心的Java语法,以及理解数据结构的基本原理。以下是对这些知识点...

    第二章 Java语言基础.ppt

    值得注意的是,保留字是具有特殊含义的关键字,如abstract、break、byte等,不能作为普通标识符使用,因为它们在Java语法中有特定的用途。 变量是程序的基本存储单元,其定义包括变量名、变量类型和作用域。变量的...

    accp5.0java第二章变量(二)

    在"accp5.0 Java第二章变量(二)"中,我们将深入探讨Java变量的各个方面,包括类型、声明、初始化以及它们在程序中的作用。 首先,Java变量有三种基本类型:整型(如int)、浮点型(如float和double)和字符型(如...

    《Java基础案例教程(第2版)》课后习题答案1

    4. **Java基础语法** - Java程序以类(class)为单位,每个类都有自己的方法和变量。 - 注释类型包括单行注释、多行注释和文档注释。 - 数据类型分为基本数据类型(如byte、short、int、long、float、double、char...

    java程序设计教程(第七版)源代码第二章

    在《Java程序设计教程(第七版)》的第二章中,我们深入探讨了Java编程的基础概念和关键元素,这是每一个Java开发者必须掌握的核心知识。这一章涵盖了诸多重要的知识点,包括但不限于: 1. **Java环境搭建**:首先...

Global site tag (gtag.js) - Google Analytics