Java语法基础(二)----运算符
2014-07-03 19:53
155 查看
一、运算符:
运算符包括下面几种:
算术运算符
赋值运算符
比较运算符
逻辑运算符
位运算符
三目运算符
最不常用的是位运算符,但也是最接近计算机底层的。
1、算术运算符
(1)+的几种用法:加法、正数、字符串连接符
(2)除法的时候要注意一个问题:整数相除,只能得到整数。要想得到小数,可以将数据自身*1.0,即将数据自身先转换为浮点型。
2、赋值运算符
符号=+=-=*=/=%=
注:=为基本的赋值运算符,其他的为扩展的赋值运算符
面试题:
(1)shorts=1,s=s+1;
(2)shorts=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:实现两个整数变量的交换
代码如下:
/* 面试题:请自己实现两个整数变量的交换 */ classOperatorTest{ publicstaticvoidmain(String[]args){ inta=10; intb=20; System.out.println("a:"+a+",b:"+b); //方式1:使用第三方变量(开发中用的) intc=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;
示例:
获取两个数中大数:
intx=3,y=4,z;
z=(x>y)?x:y;//z变量存储的就是两个数的大数。
获取三个整数中的最大值:
//方式一:分两步
//A:先比较a,b的最大值
//B:拿a,b的最大值在和c进行比较
inttemp=((a>b)?a:b);
//System.out.println(temp);
intmax1=(temp>c?temp:c);
System.out.println("max1:"+max1);
//方式二:一步搞定
intmax2=(a>b)?((a>c)?a:c):((b>c)?b:c);
//这种做法不推荐:
//intmax2=a>b?a>c?a:c:b>c?b:c;
//System.out.println("max2:"+max2);
建议用方式一。另外,方式二中,第10行和第12行是一样的,是三目运算符的嵌套使用。
比较两个整数是否相等:
//比较两个整数是否相等
intm=100;
intn=200;
//booleanflag=(m==n)?true:false;
booleanflag=(m==n);
System.out.println(flag);
二、键盘录入数据
我们目前在写程序的时候,数据值都是固定的,但是实际开发中,数据值肯定是变化的,所以,我准备把数据改进为键盘录入,提高程序的灵活性。
如何实现键盘录入数据呢?(目前先记住使用)
(1)导包(位置放到class定义的上面):importjava.util.Scanner;
(2)创建键盘录入对象:Scannersc=newScanner(System.in);
(3)通过对象获取数据:intx=sc.nextInt();
代码举例:
相关文章推荐
- 黑马程序员——Java基础语法(一)---关键字、常量、变量、运算符
- ——Diary2(Java基础语法1——关键字,标示符,注释,常量和变量,运算符)
- 黑马程序员----Java语法基础(1){标示符,变量,常量,运算符}
- 黑马程序员——Java基础语法---关键字、常量、变量、运算符
- 黑马程序员——高新技术---Java基础语法-数据类型和运算符
- 黑马程序员—————Java基础语法(1)----关键字、标示符、注释、常量、进制、变量、运算符
- Java学习笔记之java基础语法,运算符(三)
- 黑马程序员--------------java基础语法(—)------常量,变量,数据类型和运算符
- 黑马程序员——Java基础语法(一)---关键字、常量、变量、运算符
- 黑马程序员_java语法基础【1】(关键字,标识符,注释,常量与变量,运算符)
- Java的基础语法总结 (运算符、控制流程、函数和数组)
- 黑马程序员——Java基础语法(二)—运算符、流程控制
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- 黑马程序员——java第二天:基础语法(关键字、标示符、进制转换、变量类型、运算符)
- 黑马程序员——java基础语法之关键字、常量、变量、运算符
- Java基础语法(一)---关键字、常量、变量、运算符 (黑马程序员)
- Java基础语法(一)---关键字、常量、变量、运算符
- Java基础语法(二)(基本类型的转换,运算符)
- JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)
- java笔记03 基础语法02 运算符