1、Arrays工具类
public static String toString(数据类型[] 变量名) | 把数组变成字符串 |
public static void sort(数据类型[] 变量名) | 对数组进行排序 |
public static int binarySearch(int[] arr,int value) | 二分查找 |
2、System类
public static void exit(int value) | 退出jvm,非0表示异常退出 |
public static long currentTimeMillis() | 返回当前系统时间的毫秒值 |
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) | 从指定源数的指定位置开始复制,赋值到目标数组的指定位置 |
3、基本类型的包装类
byte
short
int
Integer
long
float
double
char
Character
boolean
Integer(int num) |
|
Integer(String s) | S必须是一个由数字字符组成的字符串 |
如果字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4的结果是false。
4、Date类(掌握)
构造方法 | |
Date() | 获取系统当前时间(常用) |
Date(long time) | 根据给定的毫秒生成一个时间(常用) |
成员方法 | |
Public long getTime() | 获取毫秒值(常用) |
Public void setTime(long time) | 通过毫秒值设置日期 |
5、SimpleDateFormat类
构造方法
SimpleDateFormat()
无参的构造方法,采用默认日期格式(几乎不用)
SimpleDateFormat(String pattern)
有参构造,指定日期格式(常用)
成员方法
public final String format(Date date)
日期 -- >文本(常用)
public Date parse(String date)
文本 -- >日期
yyyy(四个小y)
年
MM(两个大M)
月
dd(两个小D)
月份中的天
HH(两个大H)
时
mm(两个小mm)
分
ss(两个小s)
秒
SSS(三个大S)
毫秒
常用的一个:yyyy-MM-dd HH:mm:ss:SSS
public class DateFormatTest {
public static void main(String[] args) throws ParseException {
Date d = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
// String format(Date date)
String str = sdf.format(d);
System.out.println(str);
String s="2015年08月01日 17:15:24";
// Date parse(String source)
Date d1 = sdf.parse(s);
System.out.println(d1);
}
}
6、Calendar类
int get(日历字段) | 根据给定的日历字段获取值 日历字段:Calendar.YEAR,Calendar.DATE….等等,自己去看API |
void set(年,月,日) | 给日历设定指定的年,月,日 |
add(日历字段,值) | 给指定的日历字段添加或者减去给定的值。取决于值的正负 |
1、get(Calendar.MONTH)的值的范围是0-11,不是1-12//外国人的第一天是星期日
public class February {
//计算任意二月份有几天
public static void main(String[] args) {
//创建对象
Calendar c = Calendar.getInstance();
System.out.println("请输入年份:");
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
//2其实是三月
c.set(year, 2, 1);
c.add(Calendar.DATE, -1);
System.out.println(c.get(Calendar.DATE));
}
}
4、案例
3、案例分析
5、面试题
System.out.println(i1 == i2); // false
System.out.println(i1.equals(i2)); // true
System.out.println("--------");
Integer i3 = new Integer(128);
Integer i4 = new Integer(128);
System.out.println(i3 == i4); // false
System.out.println(i3.equals(i4)); // true
Integer i5 = 128;
Integer i6 = 128;
System.out.println(i5 == i6); // false
System.out.println(i5.equals(i6)); // true
System.out.println("--------");
Integer i7 = 127;
Integer i8 = 127;
System.out.println(i7 == i8); // true
System.out.println(i7.equals(i8)); // true
结论:java 为 byte范围内的值(-128 ~ 127) 提供了一个常量池,只要 是这个范围内的值都可以从常量池里面获取, 直接赋值给Integer,
public static void main(String[] args) {
String s = "abc";
change(s);
System.out.println(s);
}
public static void change(String s) {
s += "hello";
}
注:基本类型 -- 形式参数改变不影响实际参数。
引用类型 -- 形式参数改变直接影响实际参数。
但是,字符串是特殊的引用类型,实参传递到形参时,实际上是把值传递给了形参,而不是地址值。
-- 如果是StringBuffer.则打印的是abchello。StringBuffer容量可变。
2. 字符串拼接问题
public static void main(String[] args) {
String s1 = "a";
String s2 = "b";
String s3 = "ab";
System.out.println(s3 == s1 + s2); // false
System.out.println(s3 == "a" + "b"); // true,常量的运算会在编译期间就计算,所以"a"+"b"在编译后就是"ab"
}