学习完了变量+常量,现在只能简单的声明变量+赋值+打印变量。

但是程序要做的就是去处理数据,把原本散乱的数据,处理成有意义的数据,供我们来使用,这就涉及到了运算符的应用。

算数运算符常用的种类:

加法:+

减法:-

乘法:*

除法:/

取余:%

自增运算符:++

自减运算符:  --

字符连接符:“+”(不同于数字之间的加法运算)

特别说一下除法,代码如下:

class Trans{

	public static void main(String[] args) {

		int a = 6758;

		a = 6758/1000*1000;

		System.out.print(a);

	}

}

在a = 6785/1000,这个赋值当中,隐式的把(6785/1000)转换成了int型6所以得出了a=6000这个结果。

取余运算的时候eg:int a = 2,b=3; a%b = 2;[ 如果a小于b则余数始终都是a ]

温馨提示:当操作两个不同类型的变量时,很容易造成精度丢失,导致编译失败。除了int型和double这两种默认的类型除外。

比较运算符:

>      大于运算符

>=     大于等于运算符

<      小于运算符

<=       小于等于运算符

!=      不等于运算符

==     等于运算符

===     恒等于运算符

instanceof    是否为某一类的实例

逻辑运算符:

与运算:&  只有当&运算符两侧均为真时结果才为真。在java语言当中3<a<6这种表达式是不成立的。因为3<a此时返回的是一个布尔值,布尔值是没办法跟整数比较的,于是这种方式是不成立的。

或运算:| 当|两侧有一个为真时结果就为真

非运算:!  当操作数为真时结果为假,当操作数为假时结果为真

^ 异或运算符:只有当两个值不一样时,结果才为真。

&& 与短路运算符:当第一个值为真时,第二个值才需要计算。但是当第一个值为假时,第二值不许再去计算。

|| 或短路运算符:同上。

 位运算符:

<<:左移运算符,即把二进制位向左移动两位,不足的补零。将一个数向左移动N位,相当于拿该数跟2的N次幂做乘法运算。

>>:右移运算符,即把二进制为向右移动两位,高位原来是零的补零,是一的补一;将一个数向左移动N位,相当于拿该数跟2的N次幂做除法运算。

>>>:无符号右移运算符,即把二进制为向右移动两位,无论高位是零还是一,一律补零;

&:与位运算符(!!!跟逻辑运算符中的&是不同的),二进制位只有当运算数都是1时才会是1,其他的都是0;

|:或位运算符(!!!跟逻辑运算符中的&是不同的),二进制位当中只要有一个是1,则结果就为1,只有当两个操作数都是0的时候,结果才会是0;

~:取位反运算符,把0变1,然后1变0;

^:异或位运算符:只有当两个位的数字一样时,结果才为1,其他的为0;

位运算符的应用:

1、加密:异或位运算的特点在于,一个数a异或另一个数b:即a^b = c;此时c^b得到的结果就是c^b = a;即:a^b^b = a;也就是一个数异或两次数,得到的最终结果就是他本身。

那么现在有一个需要加密的二进制字符串a,此时我们设置一个密码b;则a^b = c.此时c就是加密后的文本,而b就是密码。如果我们想要得到a,此时就可以利用异或的特点,c^b = a;这样就完成了一个简单的加解密运算。

2、有效率的在不运用第三方变量的情况下互换两个数字:

int a = 10,b = 20;
a = a^b;
b = a^b;//即a^b^b = a;
a = a^b;//即b^a^a = b;
/**
这样就非常高效的完成了两个数的交换;
*/

3、高效的完成乘法运算:

int a = 3;
int b = 8;
int c;
//求a*b的值c;
c = 3 <<3;//一个数与一个2的倍数做乘法运算的时候,可以看作a<<log以2为底b的对数

三元运算符:

  按照被操作数的个数,可以将运算符分为

    1、一元运算符:即只有一个操作数。比如~ 取反运算符,+正运算符,-负运算符,!非运算符;

    2、二元运算符:即有两个操作数:比如 加(+)减(-)乘(*)除(/)与(&)....等等。

    3、三元运算符:即有三个操作数,唯一一种表现方式是(条件表达式)?语句一:语句二;如果条件表达式返回的结果为真,那么将执行语句一、否则执行语句二;

      

int a = 3;
int b = 4;
int max;//得到两个数中较大的一个数 max = (a>b)?a:b//其中需要注意的是括号内必须返回一个真或者是假,其他的都是非法的

总结:运算符运算完之后肯定是要返回一个数,如果运算符运算之后,没有返回任何有用的变量或者常量,那么这就失去了运算符的意义了。

三元运算符和if....else....结构的区别:

三元运算符和if...else...结构虽然在用起来思路是一样的,但是最重要的一点区别就是,三元运算符,必须返回一个值,这个就是运算符的特点。是运算符,就必须返回值。

java学习之运算符的更多相关文章

  1. Java学习(运算符,引用数据类型)

    一.  运   算    符 1.算数运算符 运算符是用来计算数据的符号.数据可以是常量,也可以是变量.被运算符操作的数我们称为操作数. 算术运算符最常见的操作就是将操作数参与数学计算,具体使用看下图 ...

  2. java学习day3运算符

    一.算数运算符 1.对于除号“/”,它的整数除和小数除是有区别的:当整数除以整数的时候,会把结果的小数部分舍弃,只保留整数部分,例如: int x=3510; x=x/1000; 输出结果为x=3; ...

  3. java学习笔记----运算符

    一.算数运算符 特别说明: 加 ,减 ,乘 ,除 与数学运算一致 取余符号看被除数 自加(减)运算:++a,--a;先做自加(自减)运算在做其他运算 a++,a--;先做其他运算在做自加(自减)运算 ...

  4. Java学习之运算符使用注意的问题

    运算符使用注意的问题 运算符(掌握) (1)算术运算符 A:+,-,*,/,%,++,-- B:+的用法 a:加法 b:正号 c:字符串连接符 C:/和%的区别 数据做除法操作的时候,/取得是商,%取 ...

  5. Java学习:运算符的使用与注意事项

    运算符的使用与注意事项 四则运算当中的加号“+”有常见的三种用法: 对于数值来,那就是加法. 对于字符char类型来说,在计算之前,char会被提升成为int,然后再计算.char类型字符,和int类 ...

  6. Java 学习(5):修饰符 运算符

    目录 --- 修饰符 --- 运算符 --- 循环结构 --- 分支结构 修饰符: 修饰符用来定义类.方法或者变量,通常放在语句的最前端.如下: public class className { // ...

  7. Java学习笔记(三)——运算符

    一.运算符: 1.分类: 2.java中的运算符 (1)其中,++在左,表示先加了再用,++在右,表示先用了再加. (2)% 用来求余数,也称为"取模运算符" 3.赋值运算符 4. ...

  8. java学习笔记之位运算符

    java的位运算符主要针对二进制数的位进行逻辑运算,主要包括以下几种的位运算符 1.与运算符(&) 与运算符的使用规律是两个操作数中位为1的时候结果为1,否则都是0,例如  3&5=1 ...

  9. java 学习第二篇关系运算符和布尔值

    关系运算符,顾名思义.用来看什么关系.(也就是用来比较) 看下表 JAVA 关系运算符 a=6,b=5 关系运算符 举例 值 解释 > a>b true a大于b < a<b ...

随机推荐

  1. 四种数据持久化方式(下) :SQLite3 和 Core Data

    在上文,我们介绍了iOS开发中的其中2种数据持久化方式:属性列表.归档解档. 本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文 ...

  2. Java基础知识强化之集合框架笔记25:Vector的特有功能

    1. Vector的特有功能: (1)添加功能         public void addElement(Object obj)       -- add() (2)获取功能         pu ...

  3. C++链表与键值对

    <算法>一书中,在算法3.1中提到了Map的实现,这里根据书上的思想,用单向链表简单写了写. #ifndef SEQUENTIAL_H #define SEQUENTIAL_H templ ...

  4. 从ActionFilterAttribute向view传送数据

    [原文转载]http://www.cnblogs.com/QLeelulu/archive/2008/08/17/1269599.html 原文地址:ASP.NET MVC Tip #31 – Pas ...

  5. oracle创建实例SID

    用oracle用户登录 输入startx开发可视化界面,打开命令行模式 (如果只有壁纸,没有桌面图标和任务栏,按下 Ctrl + Alt + T 打开命令行) 输入dbca打开配置窗口 最后就各种下一 ...

  6. SGU 207.Robbers

    题意: 有m(m<=10^4)个金币分给n(n<=1000)个人,第i个人期望得到所有金币的xi/y,现在给分给每个人一些金币ki使得∑|xi/y-ki/m|最小. Solution: 首 ...

  7. 【BZOJ2281】【博弈论+DP】 [Sdoi2011]黑白棋

    Description 黑白棋(game) [问题描述] 小A和小B又想到了一个新的游戏. 这个游戏是在一个1*n的棋盘上进行的,棋盘上有k个棋子,一半是黑色,一半是白色. 最左边是白色棋子,最右边是 ...

  8. Android三种菜单简介

    Android的菜单分为三种类型:选项菜单(Option Menu).上下文菜单(Context Menu).子菜单(Sub Menu). 一.选项菜单 用户点击设备上的菜单按钮(Menu),触发事件 ...

  9. T-SQL语言基础

    1.T-SQL语言 CREATE:创建新对象,包括数据库.表.视图.过程.触发器和函数等常见数据库对象. ALTER:修改已有对象的结构. DROP:用来删除已有的对象.有些对象是无法删除的,因为它们 ...

  10. underscorejs-toArray学习

    2.23 toArray 2.23.1 语法: _.toArray(list) 2.23.2 说明: 把list(任何可以迭代的对象)转换成一个数组,在转换arguments对象时非常有用. 2.23 ...