- 浏览: 118021 次
- 性别:
- 来自: 北京
最新评论
-
supertangcugu:
senninha 写道然鹅。。jdk1.8已经把这货移到了he ...
小例子:如何说明String常量池的位置 -
senninha:
然鹅。。jdk1.8已经把这货移到了heap区?只有把-Xmx ...
小例子:如何说明String常量池的位置 -
onada1108:
还有你是基于jdk那个版本
小例子:如何说明String常量池的位置 -
onada1108:
我想问下,你这个方法跑啦多长时间
小例子:如何说明String常量池的位置 -
hu_xuefeng:
hsbljyy 写道看来真的有很多谬误啊!当变量在-128~1 ...
从“关于Java堆与栈的思考”一帖看错误信息的传播
文章列表
switch是控制选择的一种方式,编译器生成代码时可以对这种结构进行特定的优化,从而产生效率比较高的代码。在java中,编译器根据分支的情况,分别产生tableswitch,lookupswitch两中情况,其中tableswitch适用于分支比较集中的情况,而lookupswitch适用与分支比较稀疏的情况。不过怎么算稀疏,怎么算集中就是编译器的决策问题了,这里不做深入的分析。
简单的找几个例子。
例一:
public class Test {
public static void main(String[] args) {
int i = ...
- 2009-01-14 19:41
- 浏览 4937
- 评论(1)
无聊的问题总结.1.&和&&的区别. java中的逻辑运算符: & 逻辑与(AND) | 逻辑或(OR) ^ 逻辑抑或(XOR) ! 逻辑非 && 条件与(AND) || 条件或(OR) 注意&&和||会进行短路计算,第一个条件可以判断表达式的结果时,不对后面的条件进行判断了. 位操作运算符: & 按位与(AND) | 按位或(OR) ^ 按位抑或(XOR) ~ 按位取反 所以,问&和&&的区别时,千万别仅仅说一个是位操作符,一个是逻辑运算符.2. ...
- 2008-12-19 12:25
- 浏览 1408
- 评论(0)
开始使用openjdk自带的netbeans项目来分析遇到了很多问题,运行时经常有ant脚本出错的情况,为了避免这些问题,自己又从源代码直接创建了javac项目。在Netbeans的工程属性中,改变运行的设定,主类选择com.sun.tools.javac.Main,参数这里先设定为HelloWorld.java。工作目录选择D:\Test,并把HelloWorld.java文件放在该目录下,作为测试使用。
自己设定之后可以很方便的设置断点,跟踪代码。这样可以根据调用栈来确定各个类之间的调用顺序,从而理清各个部分之间的层次关系。
设置好之后首先编译运行,生成Javac.jar文件。然 ...
- 2008-12-14 20:56
- 浏览 1046
- 评论(0)
Java进行方法调用时,可能会对参数的类型进行转换,以匹配到要调用的准确方法,在重载时要尤其注意这个问题。java语言规范中有相关的规定。
Method invocation conversion is applied to each argument value in a method or constructor invocation (§8.8.7.1, §15.9, §15.12): the type of the argument expression must be converted to the type of the corresponding parameter ...
- 2008-12-13 22:55
- 浏览 1690
- 评论(0)
在常量的处理上,String和基本类型的处理有些类似的地方,那就是Constant Folding(暂且翻译成常量折叠)和常量传播。
废话不说,直接看代码:
public class Test { public static void main(String[] args) { System.out.println(TestFinal.str); System.out.println(TestFinal.i); } }
使用的TestFinal类的代码:
public class TestFinal { public static final int i=5; publi ...
- 2008-12-13 22:12
- 浏览 1169
- 评论(0)
Main中的main方法是javac的入口。
main中内容很少,只有两段分支代码
if (args.length > 0 && args[0].equals("-Xjdb")) {
//....
} else{
System.exit(compile(args));
}
使用javac -Xjdb时会进入if部分,和调试有关,暂且不去管它,直接考虑else部分即可。
compile(args)是真正执行编译功能的地方。
public static int compile(String[] ar ...
- 2008-12-04 23:04
- 浏览 1761
- 评论(0)
首先下载openjdk的源文件包,地址http://www.java.net/download/openjdk/jdk7/promoted/b40/openjdk-7-ea-src-b40-20_nov_2008.zip.使用NetBeans进行构建,构建指南:http://nb-openjdk.netbeans.org/get-and-build-compiler.html 按照这里给的方式构建会出现问题,解决方案,在..\openjdk\langtools目录下创建文件build.properties,文件内容为:boot.java.home=C:\\Program File ...
- 2008-12-03 12:48
- 浏览 1126
- 评论(0)
JVM对boolean类型的支持比较有意思,java虚拟机规范里这样说: Although the Java virtual machine defines a boolean type, it only provides very limited support for it. There are no Java virtual machine instructions solely dedicated to operations on boolean values. Instead, expressions in the Java programming language that ...
- 2008-11-25 19:16
- 浏览 2051
- 评论(0)
测试HashMap代码:
importjava.util.HashMap;
importjava.util.Map;
/**
*
*@authorZangXT
*/
publicclassTest{
publicstaticvoidmain(String[]args){
Map<String,String>map=newHashMap<String,String>();
map.put(String.valueOf(System.nanoTime())+"a",&qu ...
- 2008-11-25 18:48
- 浏览 1142
- 评论(1)
学Java也算有一段时间了,记录一下看过或者还需要再深入的看到书。比较基础的:Core Java(8th),内容很全,概念清晰,一直没有认真看过,但是可以作为参考资料。The Java Programming Language(4th),算是最喜欢的Java书了,语言点介绍详略得当,概念权威,很多地方也会介绍一些语法的设计选择,很棒。对类库也进行了整体的介绍,看完能对java有个基本的方向性认识了。很奇怪的是,这本书在Java书籍中的地位好像远远没有The C++ Programming Language一书在C++社群中的地位高。Thinking In Java(4th),好书,但 ...
- 2008-11-14 21:59
- 浏览 2273
- 评论(2)
instanceof的使用
- 博客分类:
- Java基础
总结:Java Puzzlers一书中的谜题50 看几行代码:
publicclassMain{
publicstaticvoidmain(String[]args){
Strings=null;
System.out.println(sinstanceofString);
System.out.println(newMain()instanceofString);
Mainm=(Main)newObject();
}
}
当然,3个instanceof所在的语句不应该写到一个例子中,明白即可。第一个,System.out.println ...
- 2008-11-06 20:47
- 浏览 1404
- 评论(0)
很经典的无聊问题之一。
int i=0;i=i++;结果i是多少?这是一个经常被提及的问题,答案一直五花八门。具体测试一下以说明问题: 代码1:
publicclassTest{
publicstaticvoidmain(String[]args){
inti=0;
i=i++;
System.out.println(i);
}
}
结果i依然是0.分析其反编译后的代码:
publicstaticvoidmain(java.lang.String[]);
Code:
0:iconst_0 //0放到栈顶
1:istore_1 / ...
- 2008-11-05 20:16
- 浏览 1229
- 评论(0)
一.奇数性判断一个数是否为奇数,方法:
publicstaticbooleanisOdd(inti){
return(i%2)!=0;
}
或者:
publicstaticbooleanisOdd(inti){
return(i&1)!=0;
}
不要使用i%2==1来判断,因为它无法判断负奇数的情况.二.浮点数浮点数计算一直是计算机中一个比较困难的问题,William (Velvel) Morton Kahan就因为他在数值分析领域基础性的贡献而获得了图灵奖,他也是IEEE754标准的主要设计者。关于这个标准,计算机组成原理或者系统 ...
- 2008-11-02 11:27
- 浏览 1162
- 评论(1)
问题代码:
public class Test1{
public static int k=0;
public static Test1 t1=new Test1("t1");
public static Test1 t2=new Test1("t2");
public static int i=print("i");
public static int n=99;
public int j=print("j");
{
print("构造块" ...
- 2008-10-31 21:59
- 浏览 1176
- 评论(0)
java5增加了enum,其实对enum的处理很简单,编译器增加了一些功能而以。看代码:
public enum Season{
Spring,Summer,Autumn,Winter
}
javap -c Season就可以看出来具体的处理了,不过直接反编译更容易理解,使用jad处理的结果。
//Decompiled by Jad v1.5.8g.Copyright2001 Pavel Kouznetsov.
//Jadhomepage:http://www.kpdus.com/jad.html
//Decompiler options:pack ...
- 2008-10-29 13:22
- 浏览 2504
- 评论(0)