本文针对。net程序员,没有java开发经验,所碰到的问题。
1。下载Eclipse,绿色软件免安装。不过你还是要下载JDK,并设置好相关路径
2。Eclipse快捷键:按 Ctrl+E 将显示允许在编辑器窗口之间轻松切换的弹出式菜单;Ctrl+M 最大化/恢复 代码编辑窗口,F3 转到方法的定义,F4 显示类的层次(对多个子类的很有用)
3。项目(Project)与工作空间(workspace).Eclipse 将通过项目和工作空间的概念组织源代码。工作空间 是项目的集合。项目 是源代码文件的集合。Eclipse 中项目的定义不同于其他 IDE 中的项目。将项目视为独立模块而将工作空间视为项目, 您拥有包含多个模块(Eclipse 术语中的项目)的一个项目(Eclipse 术语中的工作空间)(workspace=solution in vs.net???) Eclipse 术语中的项目可以是独立的应用程序或模块,这取决于选择如何组织工作空间
4.Java™ Development Tools(JDT)是Eclipse自带的插件,但eclipse也能开发除java的其他语言。
5。语言类型不同:
在编译Java源文件时,文件的名称与类名是必须相同的,如果类的名称与文件名称的字母大小写不同,会导致编译错误. 类名的首字母要大写,方法名第一个字母小写,这是Java编码规范中的建议。另外,Java区分大小写,所以无论是类名、方法名,还是变量名称都要注意统一大小写格式。
C#和Java byte类型的区别上:在C#里 byte类型是无符号的(0~255),而Java里是有符号的(-128~127)
/**
*/
private static int toInt(int b) {
return b >= 0 ? (int)b : (int)(b + 256);
}
C#有unit,即无符号整数 ,java没有
Java中,switch语句只能处理整数。但C#中的switch语句不同,它还能够处理字符变量
C#中的is操作符与Java中的instanceof操作符一样,两者都可以用来测试某个对象的实例是否属于特定的类型
java 5.0之后也有可变参数了。一个方法中,只能有一个var-arg参数 var-arg参数只能出现在参数的最后
合法: void doTest(int... x){}
void doTest(String name,int... x){}
非法: void doTest(String... a,int... b){}
void doTest(int... x,String name){}
java 的类/接口的方法 可以用throws定义其可能发生的异常, 例如 public class A throws IOException
表明该方法不处理该异常,而是抛给上级调用方。调用方有2种调用方法: 1是在代码里用try catch处理这个异常,2是调用方的方法也声明throws IOException
[这种异常的处理方法已经证明是很恶心的,C#不用,C++试用了一下也放弃了]
java的import类似于C的include,而不是像C#的命名空间,这点也恶心。
java的package(其实就是文件夹)和classpath很乱,一不小心很容易classNotFoundException
java 可以从启动时传一些参数进来,比如 java -DServerIP=172.16.1.1, 在java代码里就可以用System.getProperty("ServerIP","{默认值}");
如果不指定user.dir,则默认是程序的启动目录
java的序列化必须实现Serializable接口,并重写Serialize()方法。 而C#用[Serializable]attribute就可以了
replaceAll的问题(linux中正常 windows中报错).
filepath.replaceAll( "\\. ",File.separator), 因为unix的文件分割符是/,windows则是\. 而jdk的replaceAll方法是用正则分析,\ 有特别含义。 所以要写成filepath.replaceAll( "\\. ",“\\”+ File.separator)
Eclipse 多使用svn作版本控制,svn和微软的vss有些不同,vss的基本操作有(get latest/check out/check in),而svn的基本操作是(check out/update/commit) svn的checkout相当于vss的get latest
log4j的配置文件log4j.properties要放在src目录下,log文件默认路径是workspace根目录。
java 的字符串比较得用 strA.equals(strB),而不能用strA==strB
java程序的启动入口是main(String[] args), C#的入口是Main(String[] args). 区分大小写。
java 定义数组 String[] abc = new String[3], System.out.println(abc[1]) ----- 输出null
C# 定义数组 String[] abc = new String[3], Console.WriteLine(abc[1]) ----- 输出""
tomcat 服务器端口定义在conf/server.xml, minetype和默认文档 定义在conf/web.xml
网站webapps/ROOT/WEB-INF/web.xml 则定义了MVC的Listener, Filter和它的parmeter. (Filter通常用来权限判断,类似于.net 的httpHandler)
webapps/ROOT/WEB-INF/appliationContext.xml 可以定义数据库连接和其他一些自定义的参数,类似appSetting
webapps/ROOT/WEB-INF/dispatcher-servlet.xml 可以定义ViewResolver,view对应的jsp文件