1. String类
1. 构造方法
public String(); 初始化新创建的String对象,以使其表示空字符序列
public String(char[] value); 通过当前参数中的字符数组来构造新的String
public String(byte[] bytes); 通过使用平台的默认字符集解码当前参数中的字节数组来构造新的 String
2. 常用方法
判断功能的方法
public boolean equals(Object anObject); 将此字符串内容与指定对象进行比较
public boolean equalsIgnoreCase(String anotherString) :将此字符串与指定对象进行比较,忽略大小写
获取功能的方法
public int length () :返回此字符串的长度。
public String concat (String str) :将指定的字符串连接到该字符串的末尾。
public char charAt (int index) :返回指定索引处的 char值。
public int indexOf (String str) :返回指定子字符串第一次出现在该字符串内的索引。
public String substring (int beginIndex) :返回一个子字符串,从beginIndex开始截取字符串到字符 串结尾。
public String substring (int beginIndex, int endIndex) :返回一个子字符串,从beginIndex到 endIndex截取字符串。含beginIndex,不含endIndex。
转换功能的方法
public char[] toCharArray () :将此字符串转换为新的字符数组。
public byte[] getBytes () :使用平台的默认字符集将该String编码转换为新的字节数组。
public String replace (CharSequence target, CharSequence replacement) :将与target匹配的字符串使 用replacement字符串替换
分割功能的方法
public String[] split(String regex) :将此字符串按照给定的regex(规则)拆分为字符串数组
2. Object类
Object类是所有类的父类,定义了一些公共的方法其中最重要的就是toString方法和equals方法
1. toString方法
public String toString();返回该对象的字符串表示
默认情况:下toString方法返回的是对象的类型+@+内存地址值。
覆写情况:可以通过覆写,以字符串表示其显示内容。
2. equals方法
public boolean equals(Object obj); 比较2个对象是否相等
默认情况:比较地址是否相等,等同于‘==‘
覆写情况:对对象内容比较,即所有或指定的部分成员变量相同就判定两个对象相同,则可以覆盖重写equals方法
public class Person {
private String name;
private int age;
覆写toString方法
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
覆写equals方法
@Override
public boolean equals(Object o) {
// 如果对象地址一样,则认为相同
if (this == o)
return true;
// 如果参数为空,或者类型信息不一样,则认为不同
if (o == null || getClass() != o.getClass())
return false;
// 转换为当前类型
Person person = (Person) o;
// 要求基本类型相等,并且将引用类型交给java.util.Objects类的equals静态方法取用结果
return age == person.age && Objects.equals(name, person.name);
}
}
3. Objects类
Objects是工具类,它提供了一些方法来操作对象,它由一些静态的实用方法组成,在比较两个对象的时候,Object的equals方法容易抛出空指针异常,而Objects类中的equals方法就优化了这个问题
public static boolean equals(Object a, Object b);比较两个对象是否相等(等同于‘==’号)
如下,并不会抛出空指针异常
boolean st = Objects.equals(null, "String");
System.out.println(st); / 结果false
3. 常用Java类
1. Scanner类
Scanner类是一个可以解析基本类型和字符串的简单文本扫描器
创建一个可以从键盘输入的对象
Scanner read = new Scanner(System.in);
通过返回值为String,可以猜测为读取字符串类型的方法
String str = read.next();
打印方法
System.out.println(str);
2. Random类
Random类是用来生成伪随机数
public int nextInt(int n); 返回一个伪随机数,范围在0(包括)和指定值n(不包括)之间的int值
例如
int i = new Random().nextInt(100);
System.out.println(i);
3. ArrayList类
ArrayList集合,是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储的元素。 ArrayList 中可不断添加元素,其大小也自动增长,从0开始索引
构造方法
public ArrayList();
例如
ArrayList<Integer> ints = new ArrayList<>(); 使用基本数据类型要封装
ArrayList<String> strings = new ArrayList<>();
常用方法
public boolean add(E e); 将指定的元素添加到此集合的尾部
public E remove(int index); 移除此集合中指定位置上的元素,返回被删除的元素
public E get(int index); 返回此集合中指定位置上的元素,返回获取的元素
public int size(); 返回此集合中的元素数,遍历集合时,可以控制索引范围,防止越界
ArrayList<String> str = new ArrayList<>();
/ 添加元素
str.add("xx");
str.add("xy");
str.add("yy");
/移除元素
str.remove(1);
System.out.println(str); /结果为[xx, yy]
System.out.println(str.size()); /结果为2
4. Math类
.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具 类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单
public static double abs(double a) :返回 double 值的绝对值
public static double ceil(double a) :返回大于等于参数的最小的整数 例如3.4者返回4, 向上取整数
public static double floor(double a) :返回小于等于参数最大的整数 例如3.4者返回3,向下取整数
public static long round(double a) :返回最接近参数的 long(相当于四舍五入方法)
还有其他的许多,自行查询API
5. Date类
Date类是描述时间和日期的类
构造方法
public Date();按照当前时间创建一个date对象
public Date(long date);从初始时间位置偏移指定的秒数,创建一个date对象
例如
System.out.println(new Date());
System.out.println(new Date(10000));
常用方法
public long getTime();把日期对象转换成对应的时间毫秒值
6. DateFormat类
DateFormat类是日期/时间格式化子类的抽象类,我们通过这个类可以帮我们完成日期和文本之间的转换,也就是可以在Date对象与String对象之间进行来回转换
构造方法
DateFormat为抽象类,不能直接使用,所以需要常用的子类SimpleDateFormat来实现
public SimpleDateFormat(String pattern); 使用给定的模板模式,创建一个模板模式的SimpleDateFormat类
***************使用多态创建对象******************************
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
| 标识字母(区分大小写) | 含义 |
| ----------- | ---- |
| y | 年 |
| M | 月 |
| d | 日 |
| H | 时 |
| m | 分 |
| s | 秒 |
常用方法
public String format(Date date);将Date对象格式化为字符串。
public Date parse(String source);将字符串解析为Date对象。
利用多态创建一个DateFormat对象,并设置格式
DateFormat utils = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
创建当前时间对象,通过指定格式转换为字符串
String format = utils.format(new Date());
System.out.println(format);
System.out.println("*******************************");
按指定格式,创建一个字符串对象
String time="1996-10-16 17:23:20";
将字符串按照指定的格式转换为Date对象
Date parse = utils.parse(time);
System.out.println(parse);
案例
计算出一个人已经出生了多少天
/获取当前时间
Date d1 = new Date();
/获取输入时间
System.out.println("请输入出生时间(xxxx年-xx月-xx日)");
String next = new Scanner(System.in).next();
Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse(next);
/当前时间与输入时间的时间差的毫秒值
long time=d1.getTime()-d2.getTime();
/判断是否为负值
if ((d1.getTime()-d2.getTime())<0){
System.out.println("输入有误");
}else {
int day= (int) ((time/1000)/60/60/24);
System.out.println("出生到现在一共"+day+"天");
}
7. Calendar类
Calendar是日历类并且是一个抽象类,该类将所有可能用到的时间信息封装为静态成员变量,方便获取
构造方法
没有构造方法,只能通过静态方法获取Calendar对象
public static Calendar getInstance():使用默认时区和语言环境获得一个日历
常用方法
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对象。
Calendar类中提供很多成员常量,代表给定的日历字段:
| 字段值 | 含义 |
| ------------ | -------------------- |
| YEAR | 年 |
| MONTH | 月(从0开始,可以+1使用) |
| DAY_OF_MONTH | 月中的天(几号) |
| HOUR | 时(12小时制) |
| HOUR_OF_DAY | 时(24小时制) |
| MINUTE | 分 |
| SECOND | 秒 |
| DAY_OF_WEEK | 周中的天(周几,周日为1,可以-1使用) |
***************************(get方法)*******************************
/创建Calendar对象,我们把cal看成一个日历,可以使用一些方法去设置日历,例如调整年月日等,得到年月日等。。。。
Calendar cal = Calendar.getInstance();
/得到当前日历的年(通过Calendar.YEAR字段)
int year = cal.get(Calendar.YEAR);
/得到当前日历的月(通过Calendar.YEAR字段)
int month = cal.get(Calendar.MONTH) + 1;
/得到当前日历的日(通过Calendar.YEAR字段)
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.print(year + "年" + month + "月" + dayOfMonth + "日");
*****************************(set方法)****************************************************
Calendar cal = Calendar.getInstance();
/去设置当前日历(例如这里是cal对象)的年月日等,通过输入的“字段值”来确定年月日等(例如这里的Calendar.YEAR)
cal.set(Calendar.YEAR, 1998);
int i = cal.get(Calendar.YEAR);
System.out.println(i); //这里的显示日历的年为1998年
*****************************(add方法)****************************************************
Calendar cal = Calendar.getInstance();
System.out.println( cal.get(Calendar.YEAR)+ "年" + cal.get(Calendar.MONTH) + "月" + cal.get(Calendar.DAY_OF_MONTH) + "日");
/使用add方法,类似set方法,只不过是按照日历的规则加减而已
cal.add(Calendar.DAY_OF_MONTH, 2); // 加2天
cal.add(Calendar.YEAR, -3); // 减3年
System.out.println( cal.get(Calendar.YEAR)+ "年" + cal.get(Calendar.MONTH) + "月" + cal.get(Calendar.DAY_OF_MONTH) + "日");
*****************************(getTime方法)************************************************
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
System.out.println(date);
8. System类
System`类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作,常用的方法有
public static long currentTimeMillis():返回以毫秒为单位的当前时间,可以使用时间差获取程序运行的时间
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)`:将数组中指定的数据拷贝到另一个数组中。
数组的拷贝动作是系统级的,性能很高。System.arraycopy方法具有5个参数,含义分别为:
| 参数序号 | 参数名称 | 参数类型 | 参数含义 |
| ---- | ------- | ------ | ---------- |
| 1 | src | Object | 源数组 |
| 2 | srcPos | int | 源数组索引起始位置 |
| 3 | dest | Object | 目标数组 |
| 4 | destPos | int | 目标数组索引起始位置 |
| 5 | length | int | 复制元素个数 |
************************************************
获取当前时间毫秒值
long l = System.currentTimeMillis();
System.out.println(l);
************************************************
定义2个数组
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 i = 0; i < src.length; i++) {
System.out.print(src[i]+" ");
}
System.out.println();
for (int i = 0; i < dest.length; i++) {
System.out.print(dest[i]+" ");
}
9. StringBuilder类
StringBuilder类是对字符串进行拼接的类,由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象
String s = "Hello";
s += "World";
System.out.println(s);
上面代码总共产生了三个字符串,即"Hello"
、"World"
和`"HelloWorld"由此可知,如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。为了解决这一问题,可以使用StringBuilder类
StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作
构造方法
public StringBuilder()`:构造一个空的StringBuilder容器。
public StringBuilder(String str)`:构造一个StringBuilder容器,并将字符串添加进去。
*****************************************************************************
StringBuilder sb1 = new StringBuilder();
System.out.println(sb1); // (空白)
// 使用带参构造
StringBuilder sb2 = new StringBuilder("itcast");
System.out.println(sb2); // itcast
常用方法
public StringBuilder append(...)`:添加任意类型数据的字符串形式,并返回当前对象自身。
public String toString()`:将当前StringBuilder对象转换为String对象。
*****************************************************************************
//创建对象
StringBuilder builder = new StringBuilder();
//public StringBuilder append(任意类型)
StringBuilder builder2 = builder.append("hello");
//对比一下
System.out.println("builder:"+builder);
System.out.println("builder2:"+builder2);
System.out.println(builder == builder2); //true
// 可以添加 任何类型
builder.append("hello");
builder.append("world");
builder.append(true);
builder.append(100);
// 在我们开发中,会遇到调用一个方法后,返回一个对象的情况。然后使用返回的对象继续调用方法。
// 这种时候,我们就可以把代码现在一起,如append方法一样,代码如下
//链式编程
builder.append("hello").append("world").append(true).append(100);
System.out.println("builder:"+builder);
*****************************************************************************
注意:在StringBuilder已经覆盖重写了Object当中的toString方法
通过toString方法,StringBuilder对象将会转换为不可变的String对象
// 链式创建
StringBuilder sb = new StringBuilder("Hello").append("World").append("Java");
// 调用方法
String str = sb.toString();
System.out.println(str); // HelloWorldJava