位运算符用于处理整型和字符型的操作数.位运算符是完全针对二进制位(bit)单位的操作.
下面介绍两种位运算符的巧妙应用!
1.位移运算(<<左移,>>右移,>>>无符号右移)
TIP:一個數左移n位,就是將這個數乘以2的n次方,一個數右移n位,就是將這個數除以2的n次方.
如y<<2与y*4的结果相同;y>>1的结果与y/2的结果相同.
下面是一个例子:位移运算实现数字乘以2的8次幂
public class ANumber {
public static void main(String[] args) {
int number = 16;// 定义整数变量
int result = number << 8;// 位移运算
System.out.println(number + "乘以2的8次幂等于=" + result);
}
}
结果:
16乘以2的8次幂等于=4096
2.异或运算实现变量值交换
TIP:变量的交换常见于数组排序算法中,当两个数组元素需要交换时,将创建一个临时变量来共同完成互换,
临时变量的创建增加了系统资源的消耗.如果需要交换的是两个整数类型的变量,那么就可以使用更高效的方法.
下面代码使用异或运算实现两个整数类型变量的高效交换,其中未使用临时变量.
异或,数学术语之一,是一个数学运算符。指的就是说两个值相异结果为真 。
import java.util.Scanner;
public class VariableExchange {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); // 创建扫描器
System.out.println("请输入变量A的值");
long A = scan.nextLong(); // 接收第一个变量值
System.out.println("请输入变量B的值");
long B = scan.nextLong(); // 接收第二个变量值
System.out.println("A=" + A + "\tB=" + B);
System.out.println("执行变量互换...");
A = A ^ B; // 执行变量互换
B = B ^ A;
A = A ^ B;
System.out.println("A=" + A + "\tB=" + B);
}
}
结果是:
請輸入變量A的值:20
請輸入變量B的值:30
A與B交換前: A = 20 B = 30
執行A與B的交換...
A = 30 B = 20
分享到:
相关推荐
char占两个字节,数字大小为0———216-1,是unicode编码。 字符的本来面目,我们为什么可以直接将一个数字赋给字符变量。 Boolean占一个字节,其取值只有两个,true和false。 等等 详细介绍用法
按位异或运算符(^) 对两个表达式执行按位异或操作。 blink 方法 将 HTML 的 <BLINK> 标识添加到 String 对象中的文本两端。 bold 方法 将 HTML 的 <B> 标识添加到String 对象中的文本两端。 Boolean 对象 创建...
按位异或运算符“^”,只有在两个比较的位不同时其结果是 1。否则,结果是零。下面的例子显示了“^”运算符的效果。这个例子也表明了XOR 运算符的一个有用的属性。注意第二个运算数有数字1的位,42对应二进制代码的...
1.5.1 情景应用1——计算两个整数的和 19 1.5.2 情景应用2——输出当前日期 19 1.5.3 情景应用3——在控制台接收用户输入数字 20 1.5.4 情景应用4——计算用户输入数字的乘积 21 1.6 自我测试 22 1.7 行动指南 ...
补充说明:unicode编码占用两个字节,所以,char类型的变量也是占用两个字节。 备注:后面一部分回答虽然不是在正面回答题目,但是,为了展现自己的学识和表现自己对问题理解的透彻深入,可以回答一些相关的知识,...
第3章 Java中的基本数据类型和运算符 33 教学视频:1小时5分钟 3.1 Java中的基本数据类型 33 3.1.1 基本数据类型——编程语言中的数据原子 33 3.1.2 Java中的基本上数据类型介绍 34 3.1.3 基本数据类型值域 34 ...
第3章 Java中的基本数据类型和运算符 33 教学视频:1小时5分钟 3.1 Java中的基本数据类型 33 3.1.1 基本数据类型——编程语言中的数据原子 33 3.1.2 Java中的基本上数据类型介绍 34 3.1.3 基本数据类型值域 34 ...
6、Java源程序在转换为机器语言执行过程中既有编译也有解释。 ( ) 7、// 是java的多行注释符。 ( ) 面向对象 3.Java 仅支持类间的单重继承。 ( ) 17.方法可以没有返回值,或有一个返回值,也可以有多个返回值。...
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变...
给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46.访问修饰符“public/private/protected/缺省的修饰符”的使用 47.用关键字final修饰一个类或者方法时,有何意义? 48.掌握类和...
15 applet java可以编写两类程序,applications和applet,applications可以在控制台直接运行,与其他高级编程语言没有太大区别,而java的特色在于它具有编制小应用程序的功能,applet可以在internet上传输并在兼容...
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要...
4、编写第一个Java程序并运行 5、CLASSPATH指的是类加载路径 6、程序注释,对以后的所有代码都要进行注释,主页可以方便进行开发需求 7、标识符和关键字 8、Java数据类型的划分以及数据类型的操作 java数据类型的...
现实世界中的对象具两个特征:状态和行为。例如:自行车有状态(传动装置、步度、 两个车轮和齿轮的数目等)和行为(刹车、加速、减速和换档等)。 其次,我们再来看看软件对象。软件对象是现实世界对象的模式化产物...
5. 拼由两个字符组成的运算符,如:>=、等等,识别后将类别存放在SYM中。 6. 打印源程序,边读入字符边打印。 由于一个单词是由一个或多个字符组成的,所以在词法分析程序GETSYM中定义一个读字符过程GETCH。