一、运算符:

运算符包括下面几种:

  • 算术运算符
  • 赋值运算符
  • 比较运算符
  • 逻辑运算符
  • 位运算符
  • 三目运算符

最不常用的是位运算符,但也是最接近计算机底层的。

1、算术运算符

(1)+的几种用法:加法、正数、字符串连接符

(2)除法的时候要注意一个问题:整数相除,只能得到整数。要想得到小数,可以将数据自身*1.0,即将数据自身先转换为浮点型。

2、赋值运算符

符号     =    +=  -=   *=  /=   %=

注:=为基本的赋值运算符,其他的为扩展的赋值运算符

面试题:

(1)short s=1, s = s+1;

(2) short s=1, s+=1;

上面两个代码有没有问题,如果有,哪里有问题?

答案:代码(1)是有错误的,会损失精度,byte,short在定义的时候,他们接收的其实是一个int类型的值。这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。效果如下:

代码(2)没有错误,因为:扩展的赋值运算符其实隐含了一个强制类型转换

也就是说,i += 1;  不是等价于 i = i + 1; 而是等价于 i = (i的数据类型)(s + 1);

3、关系运算符

注1:比较运算符的结果都是boolean型,也就是要么是true,要么是false。

注2:比较运算符“==”不能误写成“=” 。举例:

4、逻辑运算符

(1)逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。

(2)“&”和“&&”的区别?同理, “|”和“||”的区别?

  • A:最终结果都一样。例如:A和B必须同时为真,A&B、A&&B的结果才为真。
  • B:&&具有短路效果,左边是false,右边不执行。||具有短路效果,左边是true,右边不执行。

注:开发中常用的逻辑运算符:  &&,||,!

(3)异或( ^ )与或( | )的不同之处是:当左右都为true时,异或的结果为false。

5、位运算符:

虽然开发中用的不多,但会在很多源码中看到,因为计算机底层的计算都是位运算。

面试题1:实现两个整数变量的交换

代码如下:

 /*
面试题:请自己实现两个整数变量的交换
*/
class OperatorTest {
public static void main(String[] args) {
int a = 10;
int b = 20; System.out.println("a:"+a+",b:"+b); //方式1:使用第三方变量(开发中用的)
int c = a;
a = b;
b = c;
System.out.println("a:"+a+",b:"+b);
System.out.println("------------"); //方式2:用位异或实现(面试用)
//左边:a,b,a
//右边:a ^ b
a = a ^ b;
b = a ^ b; //a ^ b ^ b = a
a = a ^ b; //a ^ b ^ a = b
System.out.println("a:"+a+",b:"+b); //方式3:用变量相加的做法
a = a + b; //a=30
b = a - b; //b=10
a = a - b; //a=20
System.out.println("a:"+a+",b:"+b);
* //方式4:一句话搞定
b = (a+b) - (a=b); //b=30-20=10,a=20
System.out.println("a:"+a+",b:"+b);
}
}

 

面试题2:请用最有效率的方式写出计算2乘以8的结果。

答案:2 * 8等价于2 << 3

知识回顾:

  • <<:左移    左边最高位丢弃,右边补齐0
  • >>:右移    最高位是0,左边补齐0;最高为是1,左边补齐1
  • >>>:无符号右移 无论最高位是0还是1,左边补齐0

6、三目运算符:

格式:(关系表达式)?表达式1:表达式2;

如果条件为true,运算后的结果是表达式1;

如果条件为false,运算后的结果是表达式2;

示例:

获取两个数中大数:

int x=3,y=4,z;

z = (x>y)?x:y;//z变量存储的就是两个数的大数。

获取三个整数中的最大值:

         //方式一:分两步
//A:先比较a,b的最大值
//B:拿a,b的最大值在和c进行比较
int temp = ((a > b)? a: b);
//System.out.println(temp);
int max1 = (temp > c? temp: c);
System.out.println("max1:"+max1); //方式二:一步搞定
int max2 = (a > b)?((a > c)? a: c):((b > c)? b: c);
//这种做法不推荐:
//int max2 = a > b?a > c? a: c:b > c? b: c;
//System.out.println("max2:"+max2);

建议用方式一 。另外,方式二中,第10行和第12行是一样的,是三目运算符的嵌套使用。

比较两个整数是否相等:

        //比较两个整数是否相等
int m = 100;
int n = 200; //boolean flag = (m == n)? true: false;
boolean flag = (m == n);
System.out.println(flag);

二 、键盘录入数据

我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改进为键盘录入,提高程序的灵活性。

如何实现键盘录入数据呢?(目前先记住使用)

(1)导包(位置放到class定义的上面):import java.util.Scanner;

(2)创建键盘录入对象:Scanner sc = new Scanner(System.in);

(3)通过对象获取数据:int x = sc.nextInt();

代码举例:

我的公众号

想学习代码之外的软技能?不妨关注我的微信公众号:生命团队(id:vitateam)。

扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:

Java语法基础(二)----运算符的更多相关文章

  1. Ruby语法基础(二)

    Ruby语法基础(二) 继续ruby的学习,这次主要把目光放到运算符,条件判断,循环,方法,以及其他ruby特有的基本概念上 运算符 算术运算符:+,-,/,%,**,值的注意的是,ruby中一切皆为 ...

  2. Java语法基础(1)

    Java语法基础(1) 1.      Java是一门跨平台(也就是跨操作系统)语言,其跨平台的本质是借助java虚拟机 (也就是JVM(java virtual mechinal))进行跨平台使用. ...

  3. R语言语法基础二

    R语言语法基础二 重塑数据 增加行和列 # 创建向量 city = c("Tampa","Seattle","Hartford"," ...

  4. Java语法基础(2)

    一.变量与常量 1.标识符与关键字 (1). 标识符 标识符可以简单的理解为一个名字,用来标识类名.变量名.方法名.数组名.文件名的有效字符序列.如图所示. Java语言规定标识符由任意顺序的字母.下 ...

  5. 二:java语法基础:

    1,关键字:其实就是某种语言赋予了特殊含义的单词. 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词. 2,标示符:其实就是在程序中自定义的名词.比如类名,变量名,函数名.包含 0-9. ...

  6. java语法基础(二)

    流程控制语句 表达式语句 在表达式后面添加:就构成了表达式语句,简称“语句” 我们编写java代码,更多时候都是在书写表达式语句. int i;声明语句 i = 10;赋值语句 流程控制语句 流程控制 ...

  7. JavaSE 学习笔记之Java语法基础(二)

    1,关键字:其实就是某种语言赋予了特殊含义的单词. 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词. 2,标示符:其实就是在程序中自定义的名词.比如类名,变量名,函数名.包含 0-9. ...

  8. java语法基础(一)

    这个是自己前两年做java视频教程时候的课件.感兴趣的同学可以参考下. 这里是纯粹的语法行总结. editplus的使用 选择项目目录 打开editplus 左侧目录导航栏 可以打开盘符,文件夹 可以 ...

  9. java语法基础

    Java的基本符号(token) Java的单词符号有五种:关键字.标识符.常量.分隔符和操作符. Java的字符集 Java 采用一种称为unicode的字符集,该字符集合是一种新的编码标准,与常见 ...

随机推荐

  1. IT外包行业与职业发展

          在IT行业,总是有一些IT外包公司的存在,凡是存在的都是合理的.当你做为IT从业人员应该尽量避免去外包公司工作 .特别是你从事软件开发工作.     先来说说缘由,一些外包公司本来是从事软 ...

  2. dbcp/c3p0连接池设置mysql会话变量

    我们有几个计算风控值的定时任务,几乎每隔5秒会更新所有账户的当前总资产并以此通知风控,每隔一小时就产生一两个G的binlog,几十台服务器折腾..数据库是公用的,代码是通过工具自动生成的,直接修改流程 ...

  3. emulator: ERROR: x86 emulation currently requires hardware acceleration!

    emulator: ERROR: x86 emulation currently requires hardware acceleration!Please ensure Intel  is prop ...

  4. SAP_Web_Service开发配置

    第一章    SAP创建WS 1.1       概要技术说明 1.2       创建RFC函数 1.3       创建WS 1.4       外部系统访问配置 第二章    SAP调用WS 2 ...

  5. Q:关于Outlook for CRM 中预览记录窗体的设置

    问题: 如何在Outlook for CRM中,将实体记录的预览窗口的信息做调整? 解决方案: 在Outlook里,在打开实体后选择View=>Customize Reading Pane,这里 ...

  6. SharePoint 2010 文档管理系列之准备篇

    前言:很早自己就想写一个系列的文章,但是不知道写什么,最近在QQ群里,好多人说在做文档管理,其实文档管理也是SharePoint的一个很不错的功能点,自己想了想,也想多学习点东西,所以写这个主题吧,今 ...

  7. 读书笔记2013第10本:《学得少却考得好Learn More Study Less》

    <学得少却考得好Learn More Study Less>这本书最早是从褪墨网站上看到的,crowncheng翻译了全文.这本书介绍了不少学习方法,非常适合在校的学生,原文的作者Scot ...

  8. android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件

    前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...

  9. 【转】IOS高级教程1:处理1000张图片的内存优化

    转载请保留以下原文链接: http://my.oschina.net/taptale/blog/91894 一.项目需求 在实际项目中,用户在上传图片时,有时会一次性上传大量的图片.在上传图片前,我们 ...

  10. 《慕客网:IOS动画案例之会跳动的登入界面(下)》学习笔记 -Sketch的使用

    导出选中的一个图片,比如这里我们选中background,然后点击软件的右下角,可以设置导出的尺寸: 然后添加1倍,2倍,3倍的尺寸,因为在ihpne6之后就需要这三个尺寸倍数的UI,以适应不同设备的 ...