您的位置:首页 > 编程语言 > Java开发

Java突击学习 Day2 Part2

2015-12-27 16:19 393 查看
原先的内容有些多了,刚好换到新的一章,另开一篇。133页了,进展比较快,因为很多和C#一样,而且前面的都是一些概念、基本用法,所以可以快一些。

一、数据结构

1、Iterator:迭代器,像C#的IEnumerable接口一样,用于foreach遍历的

2、Bitset:C#好像没有对应的,只存取bool值,比较快

3、ArrayList:差不多

4、Stack:差不多

5、HashMap:在C#中常用Dictionary<xx,xx>,hashmap很少用,概念上差不多,这部份就先粗略看下,有空连同C#的一同研究下。

6、泛型:一样

二、Swing(相当于C#的WinForm)

1、空窗体(不知Java能不能拖控件,感觉WinForm拖控件开发还是很方便的

import javax.swing.*;

public class SimpleFrame extends JFrame {
private static final long serialVersionUID = 1L;

public SimpleFrame() {
super("Frame Title");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] arguments) {
SimpleFrame sf = new SimpleFrame();
}
}


2、看上去还可以,能和WinForm一样做个桌面应用程序出来,有按钮有复选框,但就是每个控件都要写代码,要能拖控件就会方便些。

暂时先跳过后面的吧,因为面试时不一定会用到这种应用程序,先把时间留给其它的吧

这一跳就是1/3啊。。。这本书1/3的篇幅是说应用程序的

三、Java编程

1、输入输出

流:Stream,差不多,read()、write()、close()

2、文件FileReader,FileWrite,差不多

3、File对象、Path对象,感觉上差不多,要实际中用一用才知道,暂时先这么看一看

4、序列化:通过ObjectOutputStream / ObjectInputStream类,暂态变量transient表示不被序列化

5、反射:java.lang.reflect包,和C#差不多,但具体语法有些区别。C#也不是很了解,只知道个大概,所以这部份也先粗略看下

四、联网通信

其实今天主要就是看C#中我会的,在Java有什么不同。如果C#中不会,那Java就更抓瞎了。。。

1、读取URL内容:C#有一套HttpRequest和HttpResponse,然后又是Stream之类的,项目中都封装好了,有时要用也是去网上找一下复制来用,或干脆用WebClient。Java这一套下来看着好像差不多,但具体语法完全不一样,要实点践一下才知道,但一般都有封装或写好的,这里也暂时不细看了,毕竟是为面试准备。

2、socket:项目中同事有写了一个socket,但我没实际用过,所以java这块也没法看了。

3、缓冲区:C#没用过,也只能跳过

4、字符集:一般最多的是UTF-8

五、JDBC连接数据库

1、连接SQLServer 2012





通过这篇,终于连接上了,感谢一下

public static void main(String[] args){
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433", "sa", "sa");
System.out.println("连接数据库成功");
} catch (SQLException e) {
e.printStackTrace();
}

}


2、读取数据库 executeQuery:相当于C#的ExecuteReader

public static void main(String[] args) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433", "sa", "sa");
System.out.println("连接数据库成功");
Statement lookSee = conn.createStatement();
ResultSet result = lookSee.executeQuery("SELECT * FROM [GMSAccount].[dbo].[User]");
while (result.next()) {
System.out.println(result.getString("LoginName"));
}
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}


3、更新数据库

public static void main(String[] args) {
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
Connection conn = DriverManager.getConnection("jdbc:sqlserver://127.0.0.1:1433", "sa", "sa");
System.out.println("连接数据库成功");
PreparedStatement ps = conn.prepareStatement("UPDATE [GMSAccount].[dbo].[User] SET LoginName='22' WHERE LoginName=?");
ps.setString(1, "2");
ps.executeUpdate();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}


应该是比较原始的写法了,就像以前看到C#的Ado.Net一样,不可能每个都这样来一大套,要么是封装好,要么是用Linq之类的

六、XML

书中主要使用XOM这个包来处理XML,也不知是否业界通用的,大概先知道这么回事,就没上机实践一下了。应该不是考查重点,就算问到,说下XOM的几个命令应该就差不多了。

用Element来新建,用appendChild()、removeChild()来增删

查找有:getRootElement()、getFirstChildElement()、getChildElements,配合foreach遍历

七、XML-RPC Web

整章跳过,平时用到WebService时,只要拼装好XML进行发送,接收XML格式解析就行,XML就当文本用就可以。其它的通讯没用过。

八、Android

虽然也很想现学现卖Android,但时间有限,还不如把其它基础弄好吧。毕竟这两年是Web的B/S方向,可能还偏服务端一些。移动端没接触过,想混也混不过去,Android干脆就明说没接触过拉倒吧。

九、附录:

NetBeans、开发环境、开发包等

NetBeans没用过,MyEclipse好不容易弄得稍微熟悉一些了,还是就认这个IDE吧,开发环境开发包什么的都弄的可以用了,就不再看书上怎么说了。

=========================================

总结:

没想到一天时间就把这本书囫囵吞枣的翻了一遍。

1、C#有,会用 / Java有:主要成就来自这部份,C#已经有所理解了,对比起来再理解Java就很快,感觉没什么障碍,面试时即使说不上来Java的,拿C#的套也没问题。

2、C#有,不会 / Java有:有一部份这种,明明两者都有,但C#掌握不深,最多在项目中用过皮毛,所以Java也没法看懂,还应该花些时间把C#的先弄透,再来看Java的异同。(如多线程、异步、socket、输入输出/序列化等)

3、C#没有 / Java有:这部份不多,一般Java有的,C#都会有,最多几个类/方法是Java独有的,但C#也有替代方案。Android是没辙了,虽然.NET有Mono,但不是现在钻研的时候。

4、C#有 / Java有,但区别大:比如桌面应用程序,两者都能实现C/S功能,但代码、界面完全是两码事,这个也不去研究了。

那这本书就先过吧,收获挺大的,好歹基本语法掌握了,IDE比较熟了,也会控制台输出这输出那了,弄个递归求什么数之类的笔试程序也可以了吧。。。

现在只是一个控制台,在项目中完全没用的。。。接下来要看下Java关于Web方向的(JSP?),目前公司这项目中前后端是分离的,前端是纯Html,通过ajax把数据提交到后端(C#的ashx),如果后端搭的是Java也是一样用,所以可以在这方面下些功夫,也比较实用。

还有Java各种框架,完全不了解,这也是一个大坑,不知面试前能不能基本了解一圈。

到公司,前台给了份相关岗位的题目,两页纸,知识点分布在多线程、JVM、设计模式、Spring、ORM、MySQL优化等。答题在前台左边的走廊,那算是一个小休息区,同时有另一个比我早到的哥们也在答题。答题的同时,有几个开发出来抽烟闲聊,清洁阿姨拖着吸尘器走来走去,吵的一点想法都没了。我大约用了30分钟答完,除去ORM、Spring、SQL优化略写,其余一一详答。答卷交回前台,被告知到右边的沙发等候。

约3分钟,面试官到达战场。因同一楼层所有会议室被占用。面试官只好带我到17层的上海芒果互娱科技有限公司去借用场地。谁知,到17层后,会议室满。无奈,只好在前台旁边的沙发进行。

先问了离职原因,因之前是.NET开发,此次应聘Java岗位,所以他询问作出选择的原因。之后开始问多线程和Java 1.5的并发库。接着,GC和JVM优化。然后,聊我提及的GitHub上几个项目和Maven。因我无实际上线服务器编写经验,且公司已有自主开发的服务器框架,没用Netty,他一再建议我转cocos2d-x或unity 3d,目前公司这两个岗位缺人,可考虑接收我。最后我坚持选择服务器端开发,他让我回去等二面通知,通知时间为一到两天。


找面试题时看到这个,这些我都答不上来啊。。。这位哥们也是.NET转Java的,不过水平比较高了

打算今晚先找一找Java面试题,巩固一下基础,明后天再看下服务端的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: