java表达式陷阱
以下是一些常见的面试java问题的表达,我将造成直接的形式附加目光。
int a = 10;
int b = a + (a = 5) + a + (a = 10);
System.out.println(b);//b = 30
问题2:
int i = 1;
i = (i=i+(i+(i=2)+i)+i)+3;
System.out.println(i);//i = 11
问题3:
int a = 1;
int b = 2;
System.out.println((a = 3) + (b = 4) + a*b);//19
问题4:
System.out.println(-11 % -7);//-4 注:模运算中,第一个操作数提供结果值的符号。第一个和第二个操作数的绝对值取模后作为结果值的绝对值
问题5:
int i = 1;
System.out.println(i+++i+++i+++i++);//10 注:1+2+3+4 = 10
问题6:
int i = 1;
System.out.println(i++ + ++i+i++ + ++i);//12 注:1+3+3+5 = 12
问题7:
int i = 1;
int j = i+++(i=1)+i+++(i=1)+i++;
System.out.println(j);//j = 5 注:j = 1+1+1+1+1
问题8:
int a = 10;
int b = 10;
double c = 10.0;
System.out.println(a == b);//true
System.out.println(a == c);//true
问题9:
System.out.println(3.0*10 == 30.0);//true
System.out.println(3.141*10 == 31.41);//true
System.out.println(3.14*10 == 31.4);//false 注:3.14*10 = 31.400000000000002
System.out.println(3.1415*10 == 31.415);//false 注:3.1415*10 = 31.415000000000003
问题10:
java会将范围在-128~+127(byte的范围)的数放在一个静态数组中缓存,所以仅仅要在此范围内的装箱指向的都是这个数组中的对象,而在此范围外的则需new
Integer a = 128;
Integer b = 128;
Integer c = 127;
Integer d = 127;
System.out.println(a == b);//false
System.out.println(c == d);//true
问题11:
byte a = 1;
// byte a = 128//报错。注意byte的范围为-128~127
byte b = 1;
a = (byte) (a+1);
b++;
System.out.println(a==b);//true
问题12:
System.out.println(true | false & false);//true 注:与运算比或运算优先级高
问题13:
int a = 10;//0000 0000 0000 0000 0000 0000 0000 1010
System.out.println(a<<1);//10*2=20
System.out.println(a<<2);//10*2^2=10*4=40
System.out.println(a<<32);//10 左移32位(int的大小)之后。回归原来的值
System.out.println(a<<32L);//10 不会转型。右側操作数只提供左移位数
long b = 10L;
System.out.println(b<<1);//20
System.out.println(b<<2);//40
System.out.println(b<<64);//10 long为8字节,64位。所以须要左移64位才干循环一圈回到原点
System.out.println(b<<64L);//10
byte c = 1;
System.out.println(c<<1);//2
System.out.println(c<<2);//4
System.out.println(c<<8);//256 这里须要注意。c为byte类型,移位操作的操作数最小要求是int类型。byte会转为int
System.out.println(c<<32);//1 能够把c当成int型
问题14:
int a = 10;
a = a<<10;
a = a<<22;
int b = 10;
b = b<<32;
System.out.println(a);//0 注:第一步左移10位,第二步移动的a并不是原始的a,而是a左移10位之后的a,这次左移22位之后把非零位移到边界之外了,补零之后值变为0
System.out.println(b);//10 回归原始的10
问题15:
int a = 10;
double b = 9.5;
System.out.println(a>b ? a : b);//10.0 结果会转成double型
System.out.println(a>b ? 1 : false); //2 尽管boolean不能转成int,可是自己主动装箱之后能够转成object
问题16:
int a = 1;
a+=a+=a++;
System.out.println(a);//3
问题17:
int a = 1;
a += 3L;//不报错
// a = a+3L;//报错,高类型转低类型
System.out.println(a); int b = 1;
b += 3.5; //复杂的算术表达式,自己主动型高意愿变低型
System.out.println(b);//结果4代替4.5
java表达式陷阱的更多相关文章
- Atitti.java exp ast java表达式语法ast构造器
Atitti.java exp ast java表达式语法ast构造器 /atiplat_cms/src/com/attilax/lang/AstParser.java 原理 分割tokens_sli ...
- Java表达式转型规则
Java表达式转型规则由低到高转换: 1.所有的byte,short,char型的值将被提升为int型: 2.如果有一个操作数是long型,计算结果是long型: 3.如果有一个操作数是float型, ...
- MyEclipse格式化JSP代码导致Java表达式<%= %>自动换行的解决办法
MyEclipse格式化JSP代码导致Java表达式<%= %>自动换行的解决办法: 可以将Java表达式<%= %>换成EL表达式.
- java表达式
JAVA表达式优先级: (如果表达式复杂可直接括号处理) 资源来自尚学堂java视频
- Java表达式计算转型规则
本题答案应为:B.C.D ------------知识点------------ Java表达式转型规则由低到高转换(例如int 到 double): 1.所有的byte,short,char型的值将 ...
- java之表达式陷阱
String str1 = "Hello Java的长度:10"; String str2 = "Hello Java的长度:10"; String str3 ...
- Java小陷阱
基本数据类型与字符串的连接 在Java中,+不仅可作为加法运算符使用,还可作为字符串连接运算符使用. 当把任何基本数据类型的值与字符串值进行连接运算时,基本类型的值将自动类型转换为字符串类型. pub ...
- Java表达式中的那些坑
[1]您确定真正了解后缀表达式与前缀表达式的区别吗? public class IncrementDemo{ public static void main(String[] args) { int ...
- java表达式类型的自动提升
当一个java算术表达式中包含多个基本类型的值时,整个算术表达式的数据类型将发生自动提升.Java定义如下的自动提升规则:1. 所有byte型.short型和char型将被提升到int型. 2. 整个 ...
随机推荐
- fake it till you become it
fake it till you become it_你泛起山川烟波里的不是我._百度空间 fake it till you become it
- 11 款最好 CSS 框架 让你的网站独领风骚
网页设计和发展领域已经成为竞争激烈的虚拟世界.想要在网络的虚拟世界中生存,仅有一堆静止的在线网络应用是远远不够的,网页必须要有很多功能,配以让人无法抗拒的设计.网页编码一定要合适.精确,才能保证不发生 ...
- 关于Thread类中三个interrupt方法的研究与学习(转)
先看三个方法原型: public void interrupt(): public boolean isInterrupted(): public static boolean interrupted ...
- Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET
Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET Python -- 堆数据结构 heapq 分类: Python 2012-09 ...
- HDU 2112 HDU Today(Dijkstra)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2112 HDU Today Time Limit: 15000/5000 MS (Java/Others ...
- Hadoop大数据面试--Hadoop篇
本篇大部分内容參考网上,当中性能部分參考:http://blog.cloudera.com/blog/2009/12/7-tips-for-improving-mapreduce-performanc ...
- HDU1754_I Hate It(线段树/单点更新)
解题报告 题意: 略 思路: 单点替换,区间最值 #include <iostream> #include <cstring> #include <cstdio> ...
- AW笔记本升级SSD,外接双屏中的一些注意事项
自己留一个mark,以后提醒用. 1)机械硬盘状态下利用alien sprawn创建的系统恢复U盘,无法在SSD下使用,由于SSD中没有recovery分区,仅仅能使用随机携带的系统恢复光盘: 2)最 ...
- python—webshell_醉清风xf_新浪博客
python—webshell_醉清风xf_新浪博客 python—webshell (2012-05-23 09:55:46) 转载▼
- 手机装linux系统
第一步: 首先 , 你的手机需要获取root权限. 如果不知道如何获取, 可以到电脑上搜索一下安卓手机root教程. 不同品牌的手机root的方法不同. 也可以到机锋论坛上寻找root的具体方法. 第 ...