以前很多时候会开玩笑,说什么,三天学会PHP,七天精通Nodejs,xx天学会xx 。。。
一般来说,这样子说的多半都带有一点讽刺的意味,我也基本上从不相信什么快速入门。我以前在学校的时候自觉过很多门语言,但基本都只是了解了一个大概,入门肯定也算不上了。顶多也就能吹吹牛,说几个大的概念而已。
公司最近转型,决定抛弃PHP了,我们的出路是:要么H5,要么JAVA,要么走人。纠结了一段时间后,决定还是转JAVA了。
当一个人在自己熟悉的领域的时候,好像说什么都很有自信,都觉得自己是对的。那时候我们的口号是:所有语言都差不多,不过是专长不一样罢了,语言不重要!但是真正到了自己干起来的时候,说实话,还是心虚的。毕竟曾经在自己专攻的领域干很多年,也算是工作经验丰富了。但是现在涉及到转型,自己立马就要变成菜鸟了,你还敢像以前一样自信满满的说事了。
心虚归心虚,事情总是要做的,牛总是要吹的。那么,解决方案是什么呢? 那就是快速学习,快速成长,快速成为老鸟。
所以我讽刺地捡起了这本书!《JAVA 从入门到精通》。说实话,在决定轩型之后,我就已经快速翻阅了好多本JAVA方面的书籍,但是当看到这本从入门到精通之后,我还是再次看了。觉得也有必要总结一下了,毕竟经验在于总结嘛!
基本语法我其实是略过的,但是很多时候还是踩坑了,将其中一些列举出来即可。讲述一个大概吧!
1. JAVA的基本特性(WEB)
1.1 JAVA是一门编译型语言,必须要先将源码编译一次(JAVAC),生成.class文件,然后再运行(JAVA)。这样有两个重大好处,一是不重复进行前期的编译工作从而本质上提升运行效率,二是在编译期间可以做很多源码重组及优化方面的工作。
1.2 JAVA是运行在JVM中的,只要一启动后,就会加载所有相关代码到内存,虽然很占内存,但是可以做到一次启动,永久使用的高效利用!
1.3 JAVA入门的IDE呢,基本上还是选择古老的Eclipse作为工具,一是历史悠久资料多可以请教的人也多,二是Eclipse也确实有他独到之处。
1.4 Tomcat作为web容器运行,方便也简单入门,配置方面主要注意与计算机位数相同即可,单独打开tomcat,观察是否报错,有错就解决掉吧。
1.5 JAVA变量的使用范围可能和其他语言不同,JAVA会查找,当前作用域 > 当前类 > 父类,不一定需要 this 关键字,这和某些语言有一定差别。
1.6 类型转换
1.6.1 自动转换只会从小转换到大,顺序为:byte > short > int > long > float > double > char
1.6.2 强制类型转换,这个注意点比较多点,举例:Integer.valueOf("123").intValue(), Float.valueOf("123").floatValue(),Long.valueOf("123").longValue(),Character.valueOf("123").charValue(),String b;b=a+"";
使用Object保存中间类型,再以特定类型转换还原,如:
Map<String, String> c = new HashMap<String, String>();
c.put("t1", "test1");
Object cc = c;
System.out.println("c is: " + c + " & cc is: " + cc);
Map<String, String> map = (Map<String, String>) c;
System.out.println("covert map is: " + map);
1.6.3 大小比较,只能使用相同类型比较, 1 == 1, 字符比较只能用"cc".equals(var); switch(var){}自jdk1.7后支持字符串判断。
1.6.4 对象都是以引用方式操作,如果要使用一个独立对象,需要复制内容到新的内存,这和某些语言有较大差别。
1.6.5 抽象类、接口,要求子类必须实现相应方法
1.6.6 类的向上转型、向下转型
1.6.7 equals, toString方法
2. JAVA深入一点的东西
2.1 内部类:对于基本只在内部调用的情况编写,静态类:一些通用的功能,写入到此类中,匿名类:用于一次性使用类如线程处理
2.2 java反射(有点没搞明白,多看一下)
2.3 java集合类:Map, HashMap, TreeMap, List, ArrayList, LinkedList, Set, HashSet, SortedSet, Interator
2.4 try{ ... } catch(..) { ... } 异常的捕获,在需要的地方抛出自定义异常
2.5 I/O, FileInputStream, FileOutputStream, FileReader, FileWriter, BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter,zip...
3. Swing 窗口布局客户端开发,对于web开发没有用,暂时没有细读,总体来说就是利用各种组件布局,添加事件。。。
4. 多线程
4.1 Thread类,Runnable接口,new Thread("xxx").start(), wait(), lock.notify(), notifyAll(), yield, join, synchronized
5. 网络通信(Socket)
5.1 TCP/IP: InetAddress, new ServerSocket(10003); new Socket("192.168.1.88",10003);
5.2 UDP/IP: new DatagramSocket(); new DatagramPacket(buf,buf.length); new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.88"),10000);
6. JDBC操作数据库
之前使用PDO,和这个基本一致,现在使用的都是连接池,mybatis这些玩意了
7. 案例
随便看看就好了。
由于是在项目中学习,案例自然是比较多的,快速学习基本知识,项目进度不落下,就好了。
目前对于看JAVA的源码还有很多困惑的地方,找方法中!!!