1.基本数据类型比较用:==java
2.引用数据类型比较用:equals方法数组
若是引用数据类型使用==比较的话,比较的是地址值app
toString类dom
对象调用toString()须要重写本方法: 在封装类中,不然输出的是地址ide
equals方法函数
'对象' 调用equals()须要重写本方法: 在封装类中重写,不然进行比较时比较的是地址工具
String类优化
String有一个切割split,按一个字符串进行切割,返回切割以后的字符串数组ui
String[] split(String regex)this
public int length () :返回此字符串的长度。
public String concat (String str) :将指定的字符串链接到该字符串的末尾。
public char charAt (int index) :返回指定索引处的 char值。
public int indexOf (String str) :返回指定子字符串第一次出如今该字符串内的索引。
public int indexOf(String str, int fromIndex) :返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。
public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符串结尾。
public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex。
public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使用replacement字符串替换。
StringBuilder类
String Builder在内存中至关于一个缓冲容器,会随着内存的关闭而消失,在地址内存中进行字符拼接时 不建立所添加字符的内存地址 节省了内存空间
StringBuilder() 构造一个没有字符的字符串构建器,初始容量为16个字符。
StringBuilder(String str) 构造一个初始化为指定字符串内容的字符串构建器
StringBuilder sb = new StringBuilder();
public StringBuilder append(任意类型):添加数据,并返回对象自己(支持链式调用)。
public StringBuilder reverse():字符序列进行反转
public String toString():返回此序列中数据的字符串表示形式。 转为String
append方法弊端:它能够拼接任意类型,可是拼接完毕,都变成字符串
Arrays类
public static String toString(int[] a):把数组转成字符串
public static void sort(int[] a):对数组进行升序排序
包装类与String类互相转换
int 类型直接拼接字符串可转为String类型
int->String
1+""
String.valueOf()方法能够将基本类型数据转为String类型
String.valueOf(数据);
包装类.ParseXXX方法能够将基本类型转为String类型 注意基本类型必须转为相对应的包装类,如下是int转String例子
int->String(重点)
Integer.parseInt("100")
Date类
在java,有一个java.util.Date,表示日期时间的,精确到毫秒值
Date类的构造方法:
Date() 无参构造方法:以当前的系统时间来建立出一个Date对象
Date(long date):根据指定的毫秒值,建立出一个Date对象。 指定的毫秒值,从1970年1月1日(计算机的基准时间)起通过的毫秒值
经常使用方法:
public long getTime() 把日期对象转换成对应的时间毫秒值。
void setTime(long time) 将此 Date对象设置为1970年1月1日00:00:00 起通过的毫秒值
1 //请打印出1970年1月2号的时间的对象 2 3 Date date2 = new Date(24 * 60 * 60 * 1000); 4 5 System.out.println(date2); 6 7 //获取当前时间的毫秒值 8 Date date = new Date(); 9 System.out.println(date.getTime()); 10 11 //将date,改为1970年1,月1号 12 13 date.setTime(0); 14 15 System.out.println(date);
SimpleDateFormat类
可使用DateFormat类,可是它是一个抽象类,因此咱们要用它的子类 SimpleDateFormat构造方法
SimpleDateFormat(String pattern) 使用给定模式构建一个 SimpleDateFormat ,默认日期格式符号为默认的 FORMAT区域设置。
参数pattern就是模式
字母模式:y表示面 M表示月 d表示日 H表示时 m表示分 s表示秒 S表示毫秒
中国式时间: 2019年3月11日 11点 09分 33秒 333毫秒
代码的字母模式: yyyy年MM月dd日 HH点mm分ss秒 SSS毫秒
成员方法 :
格式化(日期 -> 文本): Date -- String
public final String format(Date date)
解析(文本 -> 日期): String -- Date
public Date parse(String source)
1 //根据系统时间建立Date对象 2 Date date = new Date(); 3 System.out.println(date); 4 5 //date很差看,格式化为中国式时间 6 //SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH点mm分ss秒 SSS毫秒"); 7 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM-dd HH:mm:ss"); 8 //将date格式化为String 9 String time = sdf.format(date); 10 System.out.println(time); 11 12 //注意,咱们通常人不会记忆毫秒值,能不能根据具体的时间(2019-03-11 11:16:02)解析成毫秒值 13 //ParseException: Unparseable date: "2018年03-11 11:18:57",注意,模式必须与以前一致 14 Date date1 = sdf.parse("2018年03-11 11:18:57"); 15 System.out.println(date1); 16 System.out.println(date1.getTime());
Calendar类
Calendar为抽象类,因为语言敏感性,Calendar类在建立对象时并不是直接建立,而是经过静态方法建立,返回子类对象
根据Calendar类的API文档,经常使用方法有:
Calendar类中提供不少成员常量,表明给定的日历字段:
字段值 |
含义 |
YEAR |
年 |
MONTH |
月(从0开始,能够+1使用) |
DAY_OF_MONTH |
月中的天(几号) |
HOUR |
时(12小时制) |
HOUR_OF_DAY |
时(24小时制) |
MINUTE |
分 |
SECOND |
秒 |
DAY_OF_WEEK |
周中的天(周几,周日为1,能够-1使用) |
1 import java.util.Calendar; 2 3 public class CalendarUtil { 4 public static void main(String[] args) { 5 //get方法 6 // 建立Calendar对象 7 Calendar cal = Calendar.getInstance(); 8 // 设置年 9 int year = cal.get(Calendar.YEAR); 10 // 设置月 11 int month = cal.get(Calendar.MONTH) + 1; 12 // 设置日 13 int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); 14 //set方法 15 Calendar cal = Calendar.getInstance(); 16 cal.set(Calendar.YEAR, 2020); 17 //add方法 18 cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天 19 cal.add(Calendar.YEAR, -3); // 减3年 20 //getTime方法 21 Date date = cal.getTime(); 22 } 23 }
System类
currentTimeMillis方法
1 import java.util.Date; 2 3 public class SystemDemo { 4 public static void main(String[] args) { 5 //获取当前时间毫秒值 6 System.out.println(System.currentTimeMillis()); // 1516090531144 7 } 8 }
arraycopy方法
参数序号 |
参数名称 |
参数类型 |
参数含义 |
1 |
src |
Object |
源数组 |
2 |
srcPos |
int |
源数组索引发始位置 |
3 |
dest |
Object |
目标数组 |
4 |
destPos |
int |
目标数组索引发始位置 |
5 |
length |
int |
复制元素个数 |
1 import java.util.Arrays; 2 3 public class Demo11SystemArrayCopy { 4 public static void main(String[] args) { 5 int[] src = new int[]{1,2,3,4,5}; 6 int[] dest = new int[]{6,7,8,9,10}; 7 System.arraycopy( src, 0, dest, 0, 3); 8 /*代码运行后:两个数组中的元素发生了变化 9 src数组元素[1,2,3,4,5] 10 dest数组元素[1,2,3,9,10] 11 */ 12 } 13 }
Random类
构造方法:
Random() 建立一个新的随机数生成器。
成员方法 :
int nextInt() 从这个随机数生成器的序列返回下一个伪随机数,均匀分布的 int值。
int nextInt(int bound) ,均匀分布 返回值介于0(含)和指定值bound(不包括),从该随机数生成器的序列绘制
1 Random random = new Random(); 2 /*for (int i = 0; i < 10; i++) { 3 System.out.println(random.nextInt()); 4 }*/ 5 6 /*for (int i = 0; i < 10; i++) { 7 int j = random.nextInt(10); 8 System.out.println(j); 9 }*/ 10 11 //来一个随机值,这个数据的范围必须是1~100,33~66 54~78 12 //random.nextInt(100);//0~99 +1 -> 1~100 13 /*33~66 - 33 -> 0~33 14 for (int i = 0; i < 10; i++) { 15 System.out.println(random.nextInt(34) + 33); 16 }*/ 17 18 //54~78 - 54 -> 0~24 19 for (int i = 0; i < 10; i++) { 20 System.out.println(random.nextInt(25) + 54); 21 }
比较器Comparable<T> 和 Comparator<T>
java.lang Comparable<T> : 该接口对实现它的每一个类的对象强加一个总体排序。 这个排序被称为类的天然排序 ,类的compareTo方法被称为其天然比较方法 。
java中规定 某个类只要实现了Comparable 接口以后,才能经过重写compareTo()具有比较的功能。
抽象方法:
int compareTo(T o) 将此对象(this)与 指定( o )的对象进行比较以进行排序。
this > o : 返回正数
this = o : 返回0
this < o : 返回负数
' this - o : 表示按照升序排序。 o - this : 表示按照降序排序。
' 小结 : 若是Java中的对象须要比较大小,那么对象所属的类要实现Comparable接口,而后重写compareTo(T o)实现比较的方式。
1 public class Student implements Comparable<Student>{ 2 .... 3 @Override 4 public int compareTo(Student o) { 5 return this.age-o.age;//升序 6 } 7 }
java.util Comparator<T> : 比较器接口。
抽象方法:
int compare( T o1, T o2 ) 比较其两个参数的大小顺序。
比较器接口的使用场景:
1. Arrays.sort() : static <T> void sort( T[] a, Comparator c)
2. Collections 集合工具类 : void sort(List<T> list, Comparator<> c) 根据指定的比较器给集合中的元素进行排序。
3. TreeSet 集合 : 构造方法 TreeSet( Comparator c )
补充 : 在后面我还会介绍JDK1.8 的新特性(Lambda 函数式代码优化) 进行优化此类接口
1 ArrayList<String> list = new ArrayList<String>(); 2 list.add("cba"); 3 list.add("aba"); 4 list.add("sba"); 5 list.add("nba"); 6 //排序方法 按照第一个单词的降序 7 Collections.sort(list, new Comparator<String>() { 8 @Override 9 public int compare(String o1, String o2) { 10 int rs = o2.getCj() - o1.getCj(); 11 return rs==0 ? o1.getAge()-o2.getAge():rs; 12 // return o2.charAt(0) - o1.charAt(0); 13 } 14 }); 15 System.out.println(list);
Comparable 和 Comparator 区别:
Comparable : 对实现了它的类进行总体排序。
Comparator : 对传递了此比较器接口的集合或数组中的元素进行指定方式的排序。