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. 整个 ...
随机推荐
- Spring Security Source Code -- 验证标准流程
除了初始阶段: 主干验证流程链: MyInvocationSecurityMetadataSource.getAttributes(Object) line: 43 MyFilterSecur ...
- 分析javascript关闭
1.什么是闭包 1)官方解释 一个拥有多个变量和绑定了这些变量的环境的表达式(一般是一个函数).因而这些变量也是该表达式的一部分. 我的理解:所谓的闭包就是连接函数内部和函数外部的一座桥梁.使得在外部 ...
- poj3461 Oulipo (KMP模板题~) 前面哪些也是模板题 O.O
# include <stdio.h> # include <algorithm> # include <string.h> using namespace std ...
- 不显示系统错误对话框SetErrorMode(要学会搜索)
关闭程序时报dde server window错误有人碰到过吗,用的别人的一个OCX控件,把这个控件去掉就不会报这个错误 //不显示系统错误对话框 SetErrorMode(SEM_NOGPFAULT ...
- Vim -> 边确认边查找替换
进行简单的全局查找替换的时候,能够使用ex的例如以下命令 :%s/which/what/g 它的使用方法比較简单 % 表示每一行(everyline) s 替换(substitue) which 查找 ...
- [Network]Wireless and Mobile
Wireless 1 Introduction 1.1 Elements 1. Wireless Hosts Wireless does not mean mobility. 2. Base Stat ...
- object-c编程tips-timer
object-c定时器 object-c定时器会自己主动retain当前的使用者,假设不注意调用invalidate,则非常easy引起循环引用导致内存泄露.以下的思路提供了一套还算可行的解决方式. ...
- Oracle12C 怎样导入scott用户
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaG9uZ2thbmd3bA==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...
- hdu 1224 Free DIY Tour(最长的公路/dp)
http://acm.hdu.edu.cn/showproblem.php? pid=1224 基础的求最长路以及记录路径. 感觉dijstra不及spfa好用,wa了两次. #include < ...
- .idata数据的解析
每类Section代表不同的数据,不同的数据存储组织方式一定是有非常大区别的.代码段与资源段一定区别巨大,这意味着我需要一个一个的学习每个段的解析. idata段解析 这个段主要存储的是导入符号信息. ...