
JavaSE
文章平均质量分 52
Asw3
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java当中的内存分配以及值传递问题…
首先必须说明作为Java程序员对于内存只要有大致的了解就可以了,如果你对Java当中的某一个知识点在不需要分析内存分配过程的情况下可以掌握,那就大可不必去研究内存。如果你对知识点已经掌握,那么你应该把更多的精力放在对业务逻辑的分析与设计上,这样的话你才可能这一行业走的更远。 好了废话不多说了,下面我带着大家先来简单的看一下Java当中所涉及的内存分配,接着我会以讲解Java当中的值传递问题,分原创 2014-04-18 13:32:33 · 585 阅读 · 0 评论 -
可以让i!=i吗?
要求你声明一个i值,使得以下程序输出"No i!=i"://在此声明i,并赋值。if(i==i){ System.out.println("Yes i==i"); }else{ System.out.println("No i!=i"); } 这看起来是绝对不可能的,一个数怎么可能不等于它自己呢?不信请将i做出如下声明,再运行上面的代码。 do原创 2014-04-18 13:32:45 · 553 阅读 · 0 评论 -
2.0-1.1==0.9吗?
请看下面的代码:double a = 2.0, b = 1.1, c = 0.9;if (a - b == c) { System.out.println("YES!");}else { System.out.println("NO!");}以上代码输出的结果是多少呢?你认为是“YES!”吗?那么,很遗憾的告诉你,不对,以上代码会输出“NO!”。为什么会这原创 2014-04-18 13:32:49 · 600 阅读 · 0 评论 -
i=i+1和i+=1完全等价吗?
可能有很多程序员认为i+=1只是i=i+1的简写方式,其实不然,它们一个使用简单赋值运算,一个使用复合赋值运算,而简单赋值运算和复合赋值运算的最大差别就在于:复合赋值运算符会自动地将运算结果转型为其左操作数的类型。看看以下的两种写法,你就知道它们的差别在哪儿了:(1) byte i=5; i+=1;(2) byte i=5; i=i+1;原创 2014-04-18 13:32:38 · 834 阅读 · 0 评论 -
怎样重写equals方法才安全?
我们都知道在Java规范里定义了equals方法覆盖的5大原则:reflexive(自反性),symmetric(对称性),transitive(传递性),consistent(一致性),non-null(非空性)。我们看一下下面的代码:public classStudent{ private String name; private int age; public S原创 2014-04-18 13:32:35 · 417 阅读 · 0 评论 -
判断奇数
以下的方法判断某个整数是否是奇数,大家看一下是否正确: public booleanisOdd(int n){ return (n%2==1); } 很多人认为上面的代码没问题,但实际上这段代码隐藏着一个非常大的BUG,当n的值是正整数时,以上的代码能够得到正确结果,但当n的值是负整数时,以上方法不能做出正确判断。例如,当n=-3时,以上方法返回false。因为原创 2014-04-18 13:32:53 · 584 阅读 · 0 评论 -
位移运算越界怎么处理
请看下面的代码输出结果是多少? inta=5; System.out.println(a 按照常理推测,把a左移33位应该将a的所有有效位都移出去了,那剩下的都是零啊,所以输出结果应该是0才对啊,可是执行后发现输出结果是10,为什么呢?因为Java语言对位移运算作了优化处理,Java语言对a转化为a来处理,所以当要移位的位数b超过32时,实际上移位的位数是b2的值,那么原创 2014-04-18 13:32:51 · 820 阅读 · 0 评论 -
拓宽数值类型会造成精度丢失吗?
Java语言的8种基本数据类型中7种都可以看作是数值类型,我们知道对于数值类型的转换有一个规律:从窄范围转化成宽范围能够自动类型转换,反之则必须强制转换。请看下图:byte-->short-->int-->long-->float-->doublechar-->int我们把顺箭头方向的转化叫做拓宽类型,逆箭头方向的转化叫做窄化类型。一般我们认为因为顺箭头方向的转化不会有数据和精度的丢失,所原创 2014-04-18 13:32:47 · 653 阅读 · 0 评论 -
String类和对象池
我们知道得到String对象有两种办法: String str1="hello"; String str2=new String("hello"); 这两种创建String对象的方法有什么差异吗?当然有差异,差异就在于第一种方法在对象池中拿对象,第二种方法直接生成新的对象。在JDK5.0里面,Java虚拟机在启动的时候会实例化9个对象池,这9个对象池分别用来存储8种基本类型原创 2014-04-18 13:32:42 · 501 阅读 · 0 评论 -
深克隆与浅克隆
1)深克隆与浅克隆概念首先在此做一点声明,本文所说的克隆和有的地方所说的拷贝及复制是一个概念,我比较喜欢叫克隆,下文当中全部叫“克隆”。⑴浅克隆被克隆对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅克隆仅仅克隆所考虑的对象,而不克隆它所引用的对象。 ⑵深克隆被克隆对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。原创 2014-04-18 13:32:40 · 387 阅读 · 0 评论 -
字符、字节的概念及其区别
首先我们先看一下这个问题:“Java语言中字符串“学Java”所占的内存空间是几个字节?”,要回答这个问题我们就必须先要清楚什么是“字节”什么是“字符”。 字节(Byte):字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。字节是计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制,它是一个8位的二进制数,是一个很具体的存储空间。原创 2014-04-18 13:32:58 · 709 阅读 · 0 评论