1、关于length
string的长度为方法,需要使用“.length()”;数组的长度为属性,使用“length”。
另外,容器 “Collection” 与 “Map” 查看元素数量的方法为 size()。
2、关系运算符
Java中没有诸如a<b<c,这样的连续进行关系判断的表达式写法,需要拆分来写:a<b && b<c 。
3、String与StringBuffer、StringBuilder
- String类的内容一旦声明,则不可改变(使用+进行连接实际上是创建了新的变量);而StringBuffer及StringBuilder类声明的内容可以改变。
- StringBuffer 类中提供的方法都是同步方法(使用“synchronize”进行同步定义),属于线程安全的操作;而StringBuilder列中的方法都属于异步方法,属于非线程安全的操作;StringBuffer与StingBuilder类的方法功能相同。
- String 使用“+”作为数据的连接操作,另外两个类则使用append()方法进行数据的连接操作。
4、final与finally、finalize
- final 表示终结器,用于定义不能被继承的父类,不能被覆写的方法、常量;
- finally 是异常处理的出口;
- finalize() 是Object类定义的一个方法,用于执行对象回收前的首位工作。此方法中即使产生任何异常或错误,都不影响程序的正常执行。
public class SystemTest {
// 测试System类,该类主要是提供一些系统的支持操作
public static void main(String[] args) throws Exception{
// 对象回收操作
Human mem = new Human(); // 实例化新的对象
mem = null; // 产生垃圾
System.gc(); // 手动处理垃圾回收
}
}
class Human{
public Human() {
System.out.println("一个孩子出生了!");
}
@Override
protected void finalize() throws Throwable{
System.out.println("活了100岁,是时候了。");
throw new Exception("此处即使抛出异常也不会对程序产生影响。");
}
}
5、数据类型转换
Java开发中,最常见的数据类型有6种,包括:java.lang.String、java.util.Date、int(Integer)、double(Double)、byte(Byte)、boolean(Boolean)。
转换规则:
- Date 与 String 类之间的转换依靠 SimpleDateFormat;
- String 与 基本类型之间的转换依靠包装类与 String.valueOf() 方法;
- long 与 Date 之间转换依靠 Date 类提供的构造及getTime() 方法。
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateClass {
public static void main(String[] args) {
// (1)取得当前日期时间
Date date = new Date();
System.out.println(date); // 格式:Tue Jul 16 21:29:31 CST 2019
System.out.println("");
// (2) long与Date之间进行转换
long cur = System.currentTimeMillis(); // 获取当前日期时间,以long型返回
System.out.println(cur); // 时间戳,单位毫秒,格式long
Date date1 = new Date(cur); // long型转换为Date
System.out.println(date1);
System.out.println(date1.getTime()); // Date转换为long后输出
// (3)格式化日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS");
String str = sdf.format(date1);
System.out.println(str);
}
}
6、Arrays类
数组操作类,对数组支持的操作包括:equals()、fill()、sort()、binarySearch()、toString()。
- 其中,这里的toString方法为Arrays类下的方法,使用方法“Arrays.toString(int[] a)”,不同于“a.toString()”。
- 使用sort()方法的前提:对象所在的类必须实现 Comparable 接口,否则代码执行会出现 ClassCastException 异常,Comparable 属于比较器的一种。String类、Integer等类都实现了Comparable接口,因此可以直接利用Arrays.sort()方法(这里涉及到普通数组与对象数组的概念,日后慢慢捋一捋。普通数组存放的为直接数据,对象数组存放的为地址数据)。
import java.util.Arrays;
public class ArraysClassTest {
public static void main(String[] args) throws Exception{
int data[] = new int[] {1,5,6,2,3,4,9,8,7,10};
// (1)排序
java.util.Arrays.sort(data);
System.out.println(Arrays.toString(data)); // 排序
System.out.println(Arrays.binarySearch(data, 5)); // 查找元素所在位置
// (2)数组比较(内容及顺序)
int dataA[] = new int[]{1,2,3};
int dataB[] = new int[]{1,2,3};
System.out.println(Arrays.equals(dataA, dataB)); // 相同则输出True,否则为False
// (3)数组填充
int dataC[] = new int[10];
Arrays.fill(dataC, 2, 4, 3); // 指定被填充的数组对象,起始位置,终止位置,填充内容
System.out.println(Arrays.toString(dataC));
String dataD[] = new String[10];
Arrays.fill(dataD, "x"); // 不指定起止位置,则统一填充指定内容
System.out.println(Arrays.toString(dataD));
}
}
7、比较器:Comparable 与 Comparator
定义BookComparable类,实现Comparable接口,以便于进行“比较”。
import java.util.Arrays;
class BookCompare implements Comparable<BookCompare>{ // 实现Comparable接口(比较器)
private String title;
private double price;
public BookCompare(String title, double price) {
this.title = title;
this.price = price;
}
@Override
public String toString() {
return "书名:"+this.title+", 价格:"+this.price+"\n";
}
@Override
public int compareTo(BookCompare o) { // 这里只对比了对象的价格属性
if(this.price>o.price) {
return 1;
}else if(this.price<o.price) {
return -1;
}else {
return 0;
}
}
}
public class ComparableClass {
public static void main(String[] args) throws Exception{
BookCompare books[] = new BookCompare[] { // 实例化一个BookComparable的列表类
new BookCompare("Java开发", 10.0),
new BookCompare("Python开发", 20.0),
new BookCompare("C++开发", 30.0),
new BookCompare("Java开发", 10.0)
};
Arrays.sort(books); // 对象数组排序,实现排序的前提是实现compareTo方法
System.out.println(Arrays.toString(books));
}
}
- 如果对象数组要进行排序就必须设置排序规则,可以使用Comparable 或 Comparator 接口实现;
- java.lang.Comparable 是在一个类定义时实现好的接口,本类的对象数组就可以进行排序,在 Comparable 接口下定义了一个public int compareTo() 方法;
- java.util.Comparator 是专门定义一个指定类的比较规则,属于挽救的比较操作,里面有两个方法:public int compare() 与 public boolean equals()。