标签:des blog http java 使用 strong
刚好在预习龙书,就把官网上提供的那份java写的前端代码拖了下来看看。
导入eclipse,发现有一堆warning,其中一个是Reference to generic type Hashtable<K, V> should be parameterized。
google之,发现了一篇不错的讲解:What is a raw type and why shouldn‘t we use it?
简而言之,就是泛型和C++的模版一样,要写上类型,不然要是玩坏了,编译的时候不给你报错,等着runtime来挂就不好了。嗯这代码很老了吧……再仔细一看,貌似没什么注释也,还是默默看书好了……
按照core java上的指示,去导入一个project看看……咦,新版的界面没有create project from existing source了……
google一下找到了解决方案: Eclipse Community Forums: Newcomers » helios & "create project from existing source"
在创建新project的时候去掉Use default location的勾,选择对应文件夹就行了。
导入另一个project看看,这回有一个warning:The serializable class ImageViewerFrame does not declare a static final serialVersionUID field
再google之,解答:What does it mean: The serializable class does not declare a static final serialVersionUID field?
OK,那什么是serializable class?学其他语言的时候貌似看到过,但是没仔细看什么意思。
解答在这里:
原来就是和python的pickle、JS的JSON类似作用的东西~ 用来把对象转化成可存储的格式叫serialization,把类从存储的byte里读出来叫deserialization。eclipse给出这个警告,是因为加一个UID能够确保serialization和deserialization用的是同一版本的类,以免中途这个类修改过,就会牛头不对马嘴了。
要解决这个warning,可以在类中随便加一个UID,比如eclipse给出的第一个解决方案就是加上:
private static final long serialVersionUID = 1L;
不过这个东西没有也不碍事,就是没那么安全而已,所以才只是个warning。
仔细看了一下这个demo的代码
Java里貌似可以匿名地implement一个interface,然后直接传给一个函数,像这样:
obj.method(new Interface(){
// override some methods...
});
传说中的Java applet!好怀旧的感觉……
编译出的.class里面是bytecode,可以反编译回去,跑的时候用
java className
就行了,记得不要加.class
Java里的整数和布尔类型是没有隐式转换的,也就是说你不能if(0)这样玩,所以就可以防止
if (x = 0)
这种手误,编译的时候就给你报错抓出来(果然是提防猪队友指定语言……)
Java里的常量用final,比如类的静态常量就可以用
static final int x = 10;
这样声明。诡异的是const也是Java的保留字,虽然现在的Java语法里根!本!没用它!
因为浮点数运算的一致性实在太难保证了(有些处理器用80bit来保存浮点数,简直不能做朋友),所以Java默认是不保证这个的,除非你在函数名上加个strictfp,里面的运算就会保证这个,比如
public static strictfp void func() {...}
和JS一样,常见的数学运算都是Math这个类的静态方法。如果不想每次都写Math.xxx这样好麻烦,可以用
import static java.lang.Math.*
(可以看出java的import是有static之分的,和python不同的是想不加类名直接import,没有from xxx import xxx这种东西)
cast的方法和C一样,注意布尔型是不给cast的,手动都不行!如果你要cast,就只能类似这样
i == 0 ? true : false
b ? 1 : 0
标签:des blog http java 使用 strong
原文地址:http://www.cnblogs.com/joyeecheung/p/3847820.html