常见对象
1.Scanner
A:两个常用的方法:
- public int nextInt():获取一个int类型的值
- public String nextLine():获取一个String类型的值
2.String
1:String类的判断功能
- boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
- boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
- boolean contains(String str):判断大字符串中是否包含小字符串
- boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
- boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
- boolean isEmpty():判断字符串是否为空。
2:String类的获取功能
- int length():获取字符串的长度。
- char charAt(int index):获取指定索引位置的字符
- int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
- int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
- int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
- int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
- lastIndexOf
- String substring(int start):从指定位置开始截取字符串,默认到末尾。
- String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。
3:String的转换功能:
- byte[] getBytes():把字符串转换为字节数组。
- char[] toCharArray():把字符串转换为字符数组。
- static String valueOf(char[] chs):把字符数组转成字符串。
- static String valueOf(int i):把int类型的数据转成字符串。
- 注意:String类的valueOf方法可以把任意类型的数据转成字符串。
- String toLowerCase():把字符串转成小写。
- String toUpperCase():把字符串转成大写。
- String concat(String str):把字符串拼接。
3.StringBuffer,Builder
1:StringBuffer的添加功能
- public StringBuffer append(String str):
- 可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
- public StringBuffer insert(int offset,String str):
- 在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
2:StringBuffer的删除功能
- public StringBuffer deleteCharAt(int index):
- 删除指定位置的字符,并返回本身
- public StringBuffer delete(int start,int end):
- 删除从指定位置开始指定位置结束的内容,并返回本身
3:StringBuffer的替换功能
-
public StringBuffer replace(int start,int end,String str):
- 从start开始到end用str替换
-
B:StringBuffer的反转功能
- public StringBuffer reverse():
- 字符串反转
- public StringBuffer reverse():
-
A:StringBuffer的截取功能
- public String substring(int start):
- 从指定位置截取到末尾
- public String substring(int start,int end):
- 截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
- public String substring(int start):
-
B:注意事项
- 注意:返回值类型不再是StringBuffer本身
-
A:String – StringBuffer
- a:通过构造方法
- b:通过append()方法
-
B:StringBuffer – String
- a:通过构造方法
- b:通过toString()方法
- c:通过subString(0,length);
1.为什么要有 StringBuilder (它和String有什么区别)
主要用于解决"字符串拼接的问题"
如果是 String 进行拼接,会产生多余的字符串(垃圾)
如果是 StringBuilder 底层是数组,全部都在一个数组当中完成.
2.构造方法
StringBuilder sb = new StringBuilder(); //创建对象
3.成员方法
sb.append(任意数据类型); //添加数据(String -> StringBuilder)
sb.toString(); //得到字符串(StringBuilder -> String)
sb.reverse();//反转
4.append方法
//创建对象
StringBuilder sb = new StringBuilder();
//添加
sb.append("aaa").append(12).append("adadasas");
System.out.println(sb);//aaa12adadasas
5.toString方法
// 链式创建
StringBuilder sb = new StringBuilder("Hello").append("World").append("Java");
// 调用方法
String str = sb.toString();
System.out.println(str); // HelloWorldJava
6.reverse方法
/*
(1)定义数字字符串数组{"010","3223","666","7890987","123123"};
(2)判断该数字字符串数组中的数字字符串是否是对称的,并逐个输出;
(3)如:010 是对称的,3223 是对称的,123123 不是对称的;
*/
String[] str = {"010","3223","666","7890987","123123"};
for (int i = 0; i <str.length; i++) {
StringBuilder sb=new StringBuilder(str[i]);
sb.reverse();
if(str[i].equals(sb.toString())){
System.out.println(str[i]);
}
}
7.StringBuffer和StringBuilder的区别
- A:StringBuilder的概述
- 通过查看API了解一下StringBuilder类
- B:面试题
- StringBuffer是jdk1.0版本的,是线程安全的,效率低
- StringBuilder是jdk1.5版本的,是线程不安全的,效率高
- String是一个不可变的字符序列
- StringBuffer,StringBuilder是可变的字符序列
Integer i13 = 127;
Integer i14 = 127;
System.out.println(i13 == i14);
System.out.println(i13.equals(i14));
System.out.println("-----------");
Integer i7 = 128;
Integer i8 = 128;
System.out.println(i7 == i8);
System.out.println(i7.equals(i8));
true
true
-----------
false
true
4.正则表达式
1:字符类
- [abc] a、b 或 c(简单类)
- [^abc] 任何字符,除了 a、b 或 c(否定)
- [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
- [0-9] 0到9的字符都包括
2:预定义字符类
- . 任何字符。
- \d 数字:[0-9]
- \w 单词字符:[a-zA-Z_0-9]
3:Greedy 数量词
- X? X,一次或一次也没有
- X* X,零次或多次
- X+ X,一次或多次
- X{n} X,恰好 n 次
- X{n,} X,至少 n 次
- X{n,m} X,至少 n 次,但是不超过 m 次
5.Math
B:成员方法
- public static int abs(int a):绝对值
- public static double ceil(double a):返回大于或等于参数的最小(最接近负无穷大) double值
- public static double floor(double a):返回小于或等于参数的最大(最接近正无穷大) double值
- public static int max(int a,int b) min :最大值 和 最小值
- public static double pow(double a,double b):将第一个参数的值返回到第二个参数的幂
- public static double random():返回值为 double值为正号,大于等于 0.0 ,小于 1.0 。
- public static int round(float a):int四舍五入
- public static double sqrt(double a):正平方根 double值
6.System
1.currentTimeMillis方法
//获取当前时间毫秒值
System.out.println(System.currentTimeMillis()); // 1543730864843
//验证for循环打印数字1-9999所需要使用的时间(毫秒)
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗时毫秒:" + (end - start));//共耗时毫秒:569
2.arraycopy方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)`:将数组中指定的数据拷贝到另一个数组中。
| 参数序号 | 参数名称 | 参数类型 | 参数含义 |
| ---- | ------- | ------ | ---------- |
| 1 | src | Object | 源数组 |
| 2 | srcPos | int | 源数组索引起始位置 |
| 3 | dest | Object | 目标数组 |
| 4 | destPos | int | 目标数组索引起始位置 |
| 5 | length | int | 复制元素个数 |
/* 将src数组中前3个元素,复制到dest数组的前3个位置上复制元素前:
src数组元素[1,2,3,4,5],
dest数组元素[6,7,8,9,10]*/
int[] src = new int[]{1,2,3,4,5};
int[] dest = new int[]{6,7,8,9,10};
System.arraycopy( src, 0, dest, 0, 3);
for (int a:dest)
System.out.print(a+" ");//1 2 3 9 10
7.Date
A.构造方法
a.无参构造 Date()
b.全参构造 Date(long)
B.成员方法
a.存值 void setTime(long)
b.取值 long getTime()
// 创建日期对象,把当前的时间
System.out.println(new Date()); // Sat Dec 01 10:51:04 CST 2018
// 创建日期对象,把当前的毫秒值转成日期对象
System.out.println(new Date(0L)); // Thu Jan 01 08:00:00 CST 1970
Date da = new Date(0L);
da.setTime(System.currentTimeMillis());
System.out.println("da = " + da);//da = Sat Dec 01 10:51:04 CST 2018
System.out.println(da.getTime());//1543720044643
8.SimpleDateFormat
SimpleDateFormat 简单日期格式化
标识字母:y M d H m s
含义: 年 月 日 时 分 秒
A.成员方法
a.将日期转换为字符串
Date -> String String format(Date)
b.将字符串转换为日期
String -> Date Date parse(String)
//Date -->String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date da = new Date();
System.out.println(sdf.format(da));//2018-12-02 11-18-34
//String ->Date
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");
System.out.println(sdf2.parse("2018年2月5日12时45分12秒"));//Mon Feb 05 12:45:12 CST 2018
8.Calendar
| 字段值 | 含义 |
| ------------ | -------------------- |
| YEAR | 年 |
| MONTH | 月(从0开始,可以+1使用) |
| DAY_OF_MONTH | 月中的天(几号) |
| HOUR | 时(12小时制) |
| HOUR_OF_DAY | 时(24小时制) |
| MINUTE | 分 |
| SECOND | 秒 |
| DAY_OF_WEEK | 周中的天(周几,周日为1,可以-1使用) |
西方星期的开始为周日,中国为周一
在Calendar类中,月份的表示是以0-11代表1-12月
常用方法:
public int get(int field)
返回给定日历字段的值。
public void set(int field, int value)
将给定的日历字段设置为给定值。
public abstract void add(int field, int amount)
根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public Date getTime()
返回一个表示此Calendar时间值(从历元到现在的毫秒偏移量)的Date对象。
1.get/set方法
// 创建Calendar对象
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,2018);//设置年
cal.set(Calendar.MONTH,12-1);//设置月 12月
cal.set(Calendar.DAY_OF_MONTH,1);//设置日
System.out.println(cal.getTime());
int a =cal.get(Calendar.DAY_OF_WEEK)-1;//赋值星期
System.out.println(a);//打印6
2.add方法
Calendar cal = Calendar.getInstance();
// 使用add方法
cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
cal.add(Calendar.YEAR, -3); // 减3年
//设置年
int year = cal.get(Calendar.YEAR);
// 设置月
int month = cal.get(Calendar.MONTH) + 1;
// 设置日
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日"); //2015年12月4日
3.getTime方法
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date); // Tue Jan 16 16:03:09 CST 2018