
Java解惑
文章平均质量分 61
wjy320
这个作者很懒,什么都没留下…
展开
-
(转)Java中字符编码问题
String.length()返回字符串的字符个数,一个中文算一个字符;String.getBytes().length返回字符串的字节长度,一个中文两个字节;String的getBytes()方法是得到一个字串的字节数组,这是众所周知的。但特别要注意的是,本方法将返回该操作系统默认的编码格式的字节数组。如果你在使用这个方法时不考虑到这一点,你会发现在一个平台上运行良好的系统,放...原创 2014-05-13 16:26:32 · 152 阅读 · 0 评论 -
Java是值传递还是引用传递的分析
先看一下代码,猜猜下面的程序会输出什么?package com.wjy.test;public class Batman extends Father{ private int index; public Batman(int index){ this.index=index; } private static void chan...原创 2014-03-21 14:31:51 · 107 阅读 · 0 评论 -
静态变量的初始化顺序与问题
先看一个代码,猜猜看会输出什么:public class Elvis{ public static final Elvis INSTANCE=new Elvis(); private static final int CURRENT_YEAR=Calendar.getInstance().get(Calendar.YEAR); private final int...原创 2014-03-25 18:57:49 · 175 阅读 · 0 评论 -
不要在构造器中调用可覆写的方法
首先看一下下面的程序,猜猜会输出什么:class Point{ Point(){ show(); } void show(){ System.out.println("Father."); }}class ColorPoint extends Point{ void show(){ Syst...原创 2014-03-27 11:30:46 · 337 阅读 · 0 评论 -
Java的一条语言规范
JLS14.4:不允许一个本地变量声明语句做为一条语句在for,while,或do循环中重复执行。像下面的是不合法的: for(int i=0;i<10;i++) int j=i; 除非加上大括号,才会变合法: for(int i=0;i<10;i++) ...原创 2014-03-27 17:13:50 · 147 阅读 · 0 评论 -
Java中的BigInteger
首先从终端读入时可以读入BigInteger如: 读入: Scanner cin = new Scanner (System.in); while(cin.hasNext())//等价于!=EOF n=cin.nextInt();//读入一个int型的数 n=cin.nextBigInteger();//读入...原创 2014-03-28 10:23:42 · 142 阅读 · 0 评论 -
Java的BigDecimal
BigDecimal类 双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。表5.7中列出了BigDecimal类的主要构造器和方法。 BigDecimal类的主要构造器和方法 构 造 ...原创 2014-03-28 10:26:05 · 187 阅读 · 0 评论 -
Arrays.deepToString的使用
上代码先:String array[][]={{"hello","haha"},{"nishi","nihao"},{"woshi","wohao"}}; System.out.println(Arrays.toString(array)); System.out.println(Arrays.deepToString(array)); 看看结果:原创 2014-03-31 14:48:35 · 331 阅读 · 0 评论 -
Arrays的工具函数和Integer的内置方法简述
Java代码 public static void sort(long[] a) 这个方法会将一个long类型数组进行排序,java原码中有说明,这个排序是用快速排序算法实现的。 示例代码 Java代码 long[] a={1,3,2,4,6,8,...原创 2014-03-31 15:03:38 · 172 阅读 · 0 评论 -
浅谈Date和Calendar类
在Java平台首次发布时,唯一支持日历计算类的就是Date类;在Java1.1版中,Calendar类被添加到Java平台中,以矫正Date的缺点,由此大部分的Date方法就被弃用了。可惜的是,这样做很糟糕。 比如: 1:Date将一月份表示为0,而Calendar延续了这个错误。因此下面的代码会输出2000: ...原创 2014-03-31 16:07:11 · 127 阅读 · 0 评论 -
看一个构造函数执行顺序的例子
首先看看下面代码,猜猜会输出什么?class Member{ public Member(){ System.out.println("Member"); }}class Father{ public Father(){ System.out.println("Father."); }}public class BigP...原创 2014-04-01 16:03:32 · 128 阅读 · 0 评论 -
(转)volatile的定义
最近看到volatile关键字的一个解释,感觉写的很好。粘出来巩固一下:原创 2014-04-01 17:26:52 · 153 阅读 · 0 评论 -
通过一个例子看Java中覆盖和隐藏的区别
Java中有一条规则,子类复写父类的方法时,子类的这个方法的访问权限应该宽于或等于父类的那个方法的权限。举个例子,就是说如果父类中有一个方法是protected void getName(){}。则子类在复写该方法的时候,权限只能是public或者protected。不能是private。 所以看看下面这个程序,预测一下输出结果: clas...原创 2014-04-02 17:37:25 · 159 阅读 · 0 评论 -
类方法和实例方法
今天看到一道题说实例方法可以直接调用什么? 题目如下: 为了解答这道题:写个程序看一下:package com.wjy.test;public class Father { public static void publicStaticMethod(){ System.out.println("yes"); } pr...原创 2014-03-20 10:29:03 · 196 阅读 · 0 评论 -
说个以前不知道的事情
1.看下面代码是合法的吗?public class Complex{ private Complex instance=new Complex(2); public Complex(int i){ System.out.println(i); } public static void main(String args[]){ Complex...原创 2014-03-17 15:02:49 · 162 阅读 · 0 评论 -
JVM对final变量赋值的限制
对于final变量的赋值,JVM对其是有限制的。为了保证安全性只允许其被赋值一次。例如下面的程序就是不合法的:虽然程序本身可能没有什么错误,但是Java的编译器认为这样是不安全的。解决办法有很多,下面给个不错的解决办法:如上所示,不仅解决了问题(final只被赋值了一次),还增加了程序的可读性。 ************************************...原创 2014-03-14 10:37:04 · 358 阅读 · 0 评论 -
看《Java解惑》拾遗 上部分
最近准备重新把《Java解惑》看一遍,为了以后可以快速的回忆起书中说到的一些陷阱,我把认为值得记下来的简要记录一下,以备以后看。 毕竟一天是看不完的,所以本博客是持续更新的....... 1. 想通过num%2==1判断num是不是奇数是有问题的,因为对于负奇数会等于-1而不是1。所以可以通过num%2!=0来判断是否为奇数。为了提高性能可...原创 2014-05-21 22:12:26 · 116 阅读 · 0 评论 -
探寻Java移位操作符
最近在看《JAVA解惑》,看到移位操作符这一块感觉比较陌生,特意写一篇博客记录一下。 由于int型数值占4个字节,所以它是2的32次方。由于32是2的5次方。而对于long型数值占8个字节,所以是2的64次方。由于64是2的6次方。 结论:对于int型数值,移位操作符只使用其右操作数的低5位做为以为长度(移位长度介于0到31)。对于long型数值,...原创 2014-05-23 09:36:04 · 145 阅读 · 0 评论 -
看《Java解惑》拾遗 下部分
最近在写《Java解惑》的读后感,本来想写在一篇博客里,发现内容太多写不下了,所以分了一个上下部分。上部分:http://wjy320.iteye.com/blog/2069408 此内容也是持续更新,我看一点写一点:...原创 2014-06-05 17:31:03 · 104 阅读 · 0 评论 -
零扩展和符号位扩展
符号扩展:当用更多的内存存储某一个有符号数时,由于符号位位于该数的第一位,扩展之后,符号位仍然需要位于第一位,所以,当扩展一个负数的时候需要将扩展的高位全赋为1.对于正数而言,符号扩展和零扩展是一样的,因为符号位就是0. 比如一个用一个8位二进制表示-1,则是10000001 如果把这个书用16位二进制表示时,则为11111111 10000001 高...原创 2014-02-24 14:10:08 · 1942 阅读 · 0 评论 -
看个条件表达式的例子
问题: c语言中条件表达式的运算顺序不应该是自左向右吗?为什么a<b?a:c<d?c:d 的结果为1. 解答: C语言的条件表达式就是右结合性,不是左结合,左结合的是数学!这个规则是创造C的人规定的,无法改变! 用数学规则来理解就是a<b?a:(c<d?c:d)关系运算<的优先级比? :运算的优先级高 !!! 在Java...原创 2014-02-24 15:43:32 · 367 阅读 · 0 评论 -
看一个连续重复修改变量的例子(Java和C比较)
先分析一下这个表达式: x+=expr //expr代表一个表达式 1. 对于Java: x的值是在计算expr之前被提取的。 2. 对于C: x的值是在计算完expr之后才被提取的。...原创 2014-02-24 16:19:29 · 182 阅读 · 0 评论 -
条件表达式的阴影
char x='X'; int i=89; System.err.println(false?x:89); 看看这个输出多少? 答案: Y char x='X'; int i=89; System.err.prin...原创 2014-02-25 09:09:40 · 97 阅读 · 0 评论 -
看看+操作符
System.err.println("2+2"+(2+2));//运行结果2+24System.err.println("2+2"+2+2);//运行结果2+222 由于在Java中,只有String重载了+操作符。所以以下代码的结果是?System.out.println('a'+'a'); 结果应该为:194原因:‘a’ 是字符型字面常量,因为这两...原创 2014-02-25 18:58:20 · 91 阅读 · 0 评论 -
看个简单的赋值操作的问题
看看以下程序会输出什么: int k=0; for(int i=0;i<100;i++){ k=k++; } System.err.println("K is: "+k); 输出结果竟然为:0原因:Java的中间变量机制,上述代码的实际执行过程:int tmp=k; k=k+1; k=tmp;所以无论执行...原创 2014-03-03 09:23:28 · 168 阅读 · 0 评论 -
HashCode解惑
hashCode是jdk根据对象的地址或者字符串或者数字算出来的int类型的数值 详细了解请 参考 [1]public int hashCode()返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。 但是,程序员应该意识到,为不相等的对象生成不同整数结果可以提高哈希表的性能。 ...原创 2014-03-03 15:19:46 · 85 阅读 · 0 评论 -
经典算法问题的Java实现(转)
1.数值转换(System Conversion) 1.1 r进制数 数N的r进制可以表示为: 1.2 十进制转换为r进制 十进制数N和其他r进制数的转换是计算机实现计算的基本问题,基解决方案很多,其中一个简单算法基于下列原理: N = (N div d) * r + N mod r (其中: div为整除运算,mod为求余运算) 问题:如何将非负十进制(Decimal)整...原创 2014-03-03 15:21:51 · 199 阅读 · 0 评论 -
Java移位操作
移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。 在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次...原创 2014-03-10 09:25:35 · 151 阅读 · 0 评论 -
Fork/Join框架
Doug Lea教授写了一个并行处理的框架,最近偶然看见他的论文。拜读了一下感觉很好。这个框架佳作Fork/Join框架,顾名思义就是先进行fork再join组合结果的意思。下面是这篇论文的地址,英文好的同志可以好好看一下:http://gee.cs.oswego.edu/dl/papers/fj.pdf 如果觉得英文论文有点难懂,我按照我自己的理解...原创 2014-04-08 14:34:27 · 90 阅读 · 0 评论