在经过java高级阶段的学习后,给我的感觉就是相较于java面向对象来说,解决问题的方式和方法比面向对象的要更简单了,但语法也提高了相应的难度。所以学起来还是有一点吃力的感觉。所以我们在学习的时候,不仅要搞清楚一个问题解决的逻辑,还要正确的去使用解决问题的办法。总之,多多练习才能更好的掌握Java高级编程。
对于我们来说,首先要搞清楚Java高级知识点有哪些,搞清楚之后呢,循序渐进,慢慢去搞懂每一个知识点,这样我们在学习的时候才不会去拆东墙补西墙,随着代码的不断积累,我们才能更好的去解决我们在写代码过程中所遇到的问题。下面对每一个知识点都做一个简单的总结:
1.String字符串:String是一个类,属于引用类型。 Java程序中一切使用""引起来的内容,都是这个类的实例,称为字符串对象。 字符串定义后是一个常量,值不可更改。字符串实际是一个字符数组。在使用字符串时,如果要比较其值是否相同,不要使用==判断,因为==判断的是内存地址。 所以在比较字符串是否相同时,要使用String重写的equals方法进行判断。 String中equals方法判断的原理,大致为:将两个字符串保存到字符数组中,再对每个字符逐一比较, 如果全部一致则返回。 在使用equals方法时,通常要将已知的非空字符串作为调用者。
2.可变字符串:String字符串对象是一个常量,在定义后其值不可改变。 如果使用String类的对象,对其频繁更新时,就会不停地创建新的对象,重新引用。 所以如果要执行1000次重新赋值的过程,就要创建1000个字符串对象,花费很多时间和内存空间,所以 效率很低。这时就需要使用可变字符串类。
在使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,所以如果需要对字符串进行修改推荐使用 StringBuffer。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
3.Date类:java.util 包提供了 Date 类来封装当前的日期和时间。 Date 类提供两个构造函数来实例化 Date 对象。
Java使用以下三种方法来比较两个日期:
- 使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
- 使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
- 使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。
4.异常:
异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。
比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。
异常发生的原因有很多,通常包含以下几大类:
- 用户输入了非法数据。
- 要打开的文件不存在。
- 网络通信时连接中断,或者JVM内存溢出。
这些异常有的是因为用户错误引起,有的是程序错误引起的,还有其它一些是因为物理错误引起的。
5.数组与集合:数组的特点 数组中保存的元素都是有序的,可以通过下标快速访问 数组中保存的数据都是同一种类型 数组的长度在定义后,无法改变 数组无法获取其中保存的实际元素数量 集合的特点 能保存一组数据,可以有序也可以无序 集合的容量可变 集合中可以保存不同类型的数据 可以获取集合中实际的元素数量。数组集合涉及太多内容,这里就简单说一下特点。
6.File和IO:
Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
Java 的控制台输入由 System.in 完成。
为了获得一个绑定到控制台的字符流,你可以把 System.in 包装在一个 BufferedReader 对象中来创建一个字符流。
File类中有两个方法可以用来创建文件夹:
- mkdir( )方法创建一个文件夹,成功则返回true,失败则返回false。失败表明File对象指定的路径已经存在,或者由于整个路径还不存在,该文件夹不能被创建。
- mkdirs()方法创建一个文件夹和它的所有父文件夹。
-
一个目录其实就是一个 File 对象,它包含其他文件和文件夹。
如果创建一个 File 对象并且它是一个目录,那么调用 isDirectory() 方法会返回 true。
可以通过调用该对象上的 list() 方法,来提取它包含的文件和文件夹的列表。