论坛里比较有趣的题目收集
来源:互联网 发布:4钻淘宝店铺转让价格 编辑:程序博客网 时间:2024/04/30 21:51
public static void main(String[] args) ...{
int m = 5, n = 5;
if((m != 5) && (n++ == 5))...{}
System.out.println("a." + n);
m = n = 5;
if((m != 5) & (n++ == 6))...{}
System.out.println("b." + n);
m = n = 5;
if((m == 5) || (n++ == 5))...{}
System.out.println("c." + n);
m = n = 5;
if((m == 5) | (n++ == 6))...{}
System.out.println("d." + n);
}
}
1,&、 ¦逻辑运算与&&、 ¦ ¦这几个逻辑运算还是有点区别的:
前者是非短路运算,后者是短路运算;
编译器对于&&和 ¦ ¦已经优化过的,凡&&前面的是false,那&&后面的表达式就不用了。
¦ ¦前面的是true, ¦ ¦后面的也就不做了,这就是所谓的“短路”。
而布尔逻辑运算符就没有这个特点,无论运算符前面的是true或false,运算符后面的
表达式都得继续进行运算。
=====★==我==是==题==目==间==的==小==分==隔==符==★=====
public static void main(String[] args) ...{
int k = 100;
Integer int1 = k;
Integer int2 = k;
System.out.println("a." + (int1 == int2));
k = 200;
Integer int3 = k;
Integer int4 = k;
System.out.println("b." + (int3 == int4));
char c = 'A';
Character char1 = c;
Character char2 = c;
System.out.println("c." + (char1 == char2));
c = '国';
Character char3 = c;
Character char4 = c;
System.out.println("d." + (char3 == char4));
}
}
2..看了下jdk的源码终于明白了
Integer.valueOf()这个方法对于大小为byte的数字做了优化.
valueOf()方法原源码:
public static Integer valueOf(int i) {
final int offset = 128;
if (i > = -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
*******这里是内置的数据**********
private static class IntegerCache {
private IntegerCache(){}
static final Integer cache[] = new Integer[-(-128) + 127 + 1];
static {
for(int i = 0; i < cache.length; i++)
cache[i] = new Integer(i - 128);
}
}
看到了吧!!!!!
Java 为了性能,系统中已经默认创建出了 -128~127 的 Integer 数据,你在创建这个范围的数据时,系统就直接给你一个 “引用”
所以 在 Integer 在 -128~127 之间时,相同的数值得到的都是同一个对象。 所以才会“相同”
而 大于了 127 就是当时新创建的对象了, 当然“引用”是不相等的了,因为指向了不同的对象了嘛!!!!!
如果是byte大小的它是从缓存中取一个,就从IntegerCache初始化的256个Integer缓存中取.
这样就只有一个对像,用==当然就是true了.第二个k=200超过了这个范围,就是new Integer(i)了
100在-127到128之间,它是从IntegerCache初始化的256个Integer缓存中取的.这样
int1和int2是指向同一个对象
当k=200时不在这个范围,它就是执行的new Integer()当然就是两个对象,就不等了
public static void main(String[] args) ...{
// 提示 表示换行(LF),而 0x000A 表示什么呢?
char c = 0x000A;
System.out.println("Hello" + c + "World!");
}
}
3.
char c = 0x000A;//10 回车
char c = 0x000D;//13 换行
4.
来个简单点的填空题哈,在空格处填上适当的数,让下面的程序能输出“Hello World!”。
public static void main(String[] args) ...{
int num = _____________;
if(num < 0 && num == Math.abs(num)) ...{
System.out.println("Hello World!");
}
}
}
Integer.MIN_VALUE二进制位中最高位(符号位)为“1”,其余的位均为“0”,Math.abs的运算是
先看看参数的值是否是小于零的,若是小于零的,在前面加个负号(-),加负号的运算也就相当于,把
整个二进制位取反再加1,Integer.MIN_VALUE,取反后最高位为“0”了,其余都为“1”了,再加“1”
之后,嘿嘿...
public static void main(String[] args) ...{
invoke(null);
}
private static void invoke(Object obj) ...{
System.out.println("Object");
}
private static void invoke(int[] nums) ...{
System.out.println("Arrays");
}
}
5.
Java的重载解析过程是以两阶段运行的。第一阶段选取所有可获得并且可应用的方法或构造器。第二阶段在第一阶段选取的方法或构造器中选取最精确的一个。如果一个方法或构造器可以接受传递给另一个方法或构造器的任何参数,那么我们就说第一个方法比第二个方法缺乏精确性[JLS 15.12.2.5]。
参数为Object的构造器可以接收所有int[] nums的参数,所以它不够精确.所以调用的是int[] nums为参数的构造器
6.
public static void main(String[] args) ...{
Number num = 12345 + 5432l;
System.out.println(num.intValue());
}
}
5432l ==>>是L不是1所以编译错误
- 论坛里比较有趣的题目收集
- 有趣的C笔试题目(收集)
- BZOJ-几道比较有趣的题目
- 收集的比较好的论坛分享一下
- 国内比较优秀的.net论坛源代码收集
- 国内比较优秀的.net论坛源代码收集
- 国内比较优秀的.net论坛源代码收集
- 编程世界里关于两个数值大小的有趣比较
- 有趣的句子收集
- 一道有趣的题目
- 一些有趣的题目
- 一道有趣的题目
- 有趣的题目
- 有趣的智力题(题目)
- bzoj有趣的题目
- 一道有趣的题目
- 一些有趣的题目
- 一个有趣的题目
- 使用ASP.NET 2.0中的ReportViewer控件
- Java1.6.0实现系统托盘技术
- va_list是一个宏,由va_start和va_end界定,一时难说清,详细见《Windows32程序设计》Unicode部分
- 在面对级联关联(one-to-many......)查询的时候,你是怎么解决hibernate session关闭的?我是这样做的。
- SQL Server 2005 Integration Services (SSIS)数据源之Sybase
- 论坛里比较有趣的题目收集
- sql分页
- 对张孝祥JAVA就业指导关于RandomAccessFile用法例子的小小改写
- 除Google 以外的十七个搜索引擎创新
- 针对构架师的.NET 3.0介绍
- Ilist转换成dataset
- 全球IT业最具影响力100人
- linux 32位向64位的移植常见问题
- linux 32位向64位的移植常见问题