跟着刚哥梳理java知识点——运算符(五)
运算符:是一种特殊的符号,用以表示数据的运算、赋值和比较。
1、算数运算符(+、-、*、/、%、++、--)
a)除:
int i = 12;
int j = i / 5; //
double d1 = i / 5; //2.0
double d2 = (double)i/5; //2.4
double d3 = i/5.0; //2.4
b)前++和后++区别
前++:先自增一赋值给自己,后做运算赋值
后++:先做运算赋值,后自增一赋值给自己
int a = 10;
int b = ++a; //a=11 b=11
int c = a++; //a=11 c=10
自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误的!
2、赋值运算符(+=、-=、*=、/=、%=、=)
int i = 10;
i += 3;//运算结果等于 i = i + 3;
i+=3的运算结果是相当于i = i + 3,但是还是有一些区别的。
例如:
short s = 10;
s = s + 3; //编译错误
s += 3; //既可以实现运算,又不会改变s的数据类型
【知识点】:赋值运算+=、-=、/=、%=进行了运算但是不会改变变量的数据类型
笔试题:
1、考核赋值运算符使用
int a = 1;
a *= 0.1;
System.out.println(a);//
a++;
System.out.println(a);//
2、考核=和==的区别
boolean b = false;
if (b==true) {
System.out.println("==结果为真");
}
else{
System.out.println("==结果为假");
}
if(b=true){
System.out.println("=结果为真");
}
else{
System.out.println("=结果为假");
}
输出结果:
==结果为假
=结果为真
3、比较运算符(==、!=、<、>、<=、>=、instanceof)
比较运算符的结果都是boolean型
instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例
4、逻辑运算符(&-逻辑与、&&-短路与、|-逻辑或、||-短路或、!-逻辑非、^-逻辑异或)
a)逻辑运算符左右两边运算的变量都是boolean型。
b)&和&&的结果是一模一样的,|和||的结果是一模一样的。
c)&和&&的区别?
&:不管左边是true还是false,右端都会运算。
&&:当左边是false,那么右端则不会运算。
所以只要当左边是false才会有区别,如果左端是true的时候,就一模一样了。
当然我们在开发的过程中绝对推荐&&,这样可以减少右端运算的开销。
|和||的区别就不再阐述了一样的思路。
c)异或顾名思义,当a和b只要不一致就会返回true,都一样则返回false。
5、位运算符(<<、>>、>>>、&、|、^、~)
a)<< 左移(左移几位,后面用0补齐)
3<<2 = 3*2*2=12
0000 0000 0000 0011 = 3
0000 0000 0000 1100 = 2的3次方 + 2的2次方 = 12
b)>> 右移(右移几位,前面需要看第一位是0还是1,如果是1就用1补齐,如果是0就用0补齐)
31>>2 = 7
c) >>> 无符号右移(右移几位,前面不管第一位是0还是1,全部用0补齐)
31>>>2 = 7
d)&是与运算。
e)|是异或算
f)^异或(只要相异,就是1,否则就是0)
0000 0000 0000 1100 = 12
^ 0000 0000 0000 1001 = 9
-------------------------------------
0000 0000 0000 0101 = 5
所以 12 ^ 9 = 5
g)笔试题:在讲到变量的类型转换,在不声明第三方变量的情况下互换一下a和b的值。用异或方法绝对是完美的。
int a = 10;
int b = 15;
答案:
a = a ^ b;
b = a ^ b;
a = a ^ b;
6、三元运算符(? :)
用来完成简单的选择逻辑,即根据条件判断,从两个选择中选择一种执行。
格式:(条件表达式)?表达式1:表达式2
三元运算符涉及到一种成为双目数值提升(binary numeric promotion)的语言特性。所谓的双目数值提升,可以简单的理解为双目运算符的类型转换问题。
char a= 'a';
int i = 96;
// ① 变量(基本数据类型)与常量(基本数据类型),结果自动转换为精度高的
System.out.println(true?i:9.0); //结果为:96.0
// ② 两个变量(基本数据类型),结果自动转换为精度高的
System.out.println(true ? a : i);//结果为:97
// ③ 两个常量(基本数据类型),结果自动转换为精度高的
System.out.println(true ? 99 : 9.0);//结果为:99.0
// ④ 只要数值类型和char类型的,如果数值类型在0-65535之间的都转成char
System.out.println(true ? 1000 : 'b');//结果为:Ϩ(这可不是8 这是个符号)
跟着刚哥梳理java知识点——运算符(五)的更多相关文章
- 跟着刚哥梳理java知识点——IO(十五)
凡是与输入.输出相关的类.接口都定义在java.io包下 java.io.File类 1.File是一个类,可以有构造器创建其对象.此对象对应着一个文件或者一个目录. 2.File中的类,仅涉及到如何 ...
- 跟着刚哥梳理java知识点——深入理解String类(九)
一.String类 想要了解一个类,最好的办法就是看这个类的实现源代码,来看一下String类的源码: public final class String implements java.io.Ser ...
- 跟着刚哥梳理java知识点——多线程(十六)
创建多线程第一种方式:① 继承:继承Thread.② 重写:重写Thread类的run()方法③ 创建:创建一个子类的对象④ 调用:调用线程的start()方法,启动此线程,调用run()方法 cla ...
- 跟着刚哥梳理java知识点——面向对象(八)
面向对象的核心概念:类和对象. 类:对一类事物描述,是抽象的.概念上的定义. 对象:实际存在的该类事物的每个个体,因而也成为实例(Instance). Java类及类的成员:属性(成员变量Field) ...
- 跟着刚哥梳理java知识点——变量之间的类型转换(四)
变量之间的类型转换主要包括自动类型转换和强制类型转换. 1.自动类型转换:当容量小的数据类型与容量大的数据类型做运算时,容量小的会自动的转换成容量大的类型. [知识点]: a)char,byte,sh ...
- 跟着刚哥梳理java知识点——泛型(十三)
一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: public class GenericTest { public static void main(String[] a ...
- 跟着刚哥梳理java知识点——注释(二)
1.单行注释 // //这是main方法,程序的入口 public static void main(String[] args) { //输出语句 System.out.println(" ...
- 跟着刚哥梳理java知识点——HelloWorld和常见问题(一)
1.按照国际惯例,写一段输出HelloWorld的java语句: public class HelloWorld { //这是main方法,程序的主入口 public static void main ...
- 跟着刚哥梳理java知识点——枚举和注解(十四)
enum Season{ SPRING("spring","春暖花开"), SUMMER("summer","夏日炎炎" ...
随机推荐
- SpringMVC4+MyBatis3+SQLServer 2014 整合(包括增删改查分页)
前言 说起整合自然离开ssm,我本身并不太喜欢ORM,尤其是MyBatis,把SQL语句写在xml里,尤其是大SQL,可读性不高,出错也不容易排查. 开发环境 idea2016.SpringMVC4. ...
- 每天一个Linux命令(06)--rmdir命令
终于忙完了公司的事,可以安静的充充电了. 今天学习一下Linux中命令:rmdir 命令,rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的.(注意,rm -r dir 命 ...
- Java多线程——深入重入锁ReentrantLock
简述 ReentrantLock 是一个可重入的互斥(/独占)锁,又称为“独占锁”. ReentrantLock通过自定义队列同步器(AQS-AbstractQueuedSychronized,是实现 ...
- iOS基础之顺传逆传传值(delegate、block)
写给iOS新手的福利! 在项目中经常会用到传值,根据传值的方向分为顺传(从根控制器到子控制器)和逆传(从子控制器到根控制器).在这里写了个Demo简单演示了效果,创建了两个控制器: 一个为根控制器,一 ...
- 清空file文件域的方法
我们在实际应用中经常希望能把文件域给清空,比如使用change事件时,因为不清空再次选择同一文件时将不在触发change事件. 但是在IE中,由于安全设置的原因,是不允许更改文件域的值的,也就是不能使 ...
- [HDU1282]回文数猜想
Problem Description 一 个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒 序数相加, ...
- Pascal's Triangle II leetcode
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [1,3, ...
- 图形化代码阅读工具——Scitools Understand
Scitools出品的Understand 2.0.用了很多年了,比Source Insight强大很多.以前的名字叫Understand for C/C++,Understand for Java, ...
- 3402: [Usaco2009 Open]Hide and Seek 捉迷藏
3402: [Usaco2009 Open]Hide and Seek 捉迷藏 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 78 Solved: 6 ...
- jmeter的http cookies管理器使用
关于Cookie不过多介绍,测试UI的小伙伴们应该对此有深深的爱和恨~ 本文介绍如何:1.获取Cookie.2.保存Cookie 3.引用Cookie 最终达到Cookie类似无法失效的目的~ Coo ...