目录
一、Math
1. Math类概述
Math包含执行基本数字运算的方法
没有构造方法,如何使用类中的成员?
看类的成员是否都是静态的,如果是,通过类名就可以直接调用。
2. Math类的常用方法
测试输出:
如果要取[1,100]则需要
二、System
1. System类概述
System包含几个有用的类字段和方法,它不能被实例化。
2. System类的常用方法
举例:
调用exit()前:
调用后:
因为我们在调用输出结束之前就将Java虚拟机终止了,当然就不会再输出结束了
调用currentTimeMillis()时:
输出结果为:当前时间(计算机中设定的时间,并非北京时间)与1970年1月1日相差的毫秒值。
三、Object
1. Object类概述
Object是类层次结构的根,每个类都可以将Object作为父类。所有类都直接后者间接的继承自该类。
构造方法:public Object()
回想面向对象中,为什么说子类的构造方法默认访问的是父类的无参构造方法?
因为它们的顶级父类只有无参构造方法。
2. Object类的常用方法
3. Object中的toString方法
我们创建一个学生类,里面有姓名年龄两个私有变量和对应带参和无参构造方法及其get、set方
测试类中我们直接输出创建的s实例我们发现输出com,itheima_01.Student@3f3afe78的字符串
利用Ctrl+B选中方法进行跟进找到toString方法,说明是toString方法输出的这段字符串。
通过查看帮助文档我们知道
所以我们在Student类中重写toString方法
测试类中调用结果为:
所以我们建议在子类中重写toString方法。
4. Object中的equal()方法
引文:
我们发现输出的是false,因为==对比的是二者的地址值,因为两边都是new出来的值,所以地址值肯定不相等。
那我们该怎么比较二者的内容呢?
调用equal时我们发现还是false,所以我们Ctrl+B寻找原因
我们发现我们equal调用的是this的值,相当于还是s1和s2的地址值做比较。
所以我们需要在Student类中重写equal方法
重写后我们发现输出为true
四、Arrays
1.冒泡排序
排序:将一组数据按照固定的规则进行排列。
冒泡排序:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序。
举例: 总结:
如果有n个数据进行排序,总共需要比较n-1次。
每一次比较完毕,下一次的比较就会少一个数据参与
冒泡排序代码实现:
public class demo_sort {
public static void main(String[] args) {
//冒泡排序算法
int[] numbers=new int[]{1,5,8,2,3,9,4};
//需进行length-1次冒泡
for(int i=0;i<numbers.length-1;i++)
{
for(int j=0;j<numbers.length-1-i;j++)
{
if(numbers[j]>numbers[j+1])
{
int temp=numbers[j];
numbers[j]=numbers[j+1];
numbers[j+1]=temp;
}
}
}
System.out.println("从小到大排序后的结果是:");
for(int i=0;i<numbers.length;i++)
System.out.print(numbers[i]+" ");
}
}
2. Arrays类的概述和常用方法
2.1 概述
Arrays类包含用于操作数组的各种方法
2.2 常用方法
2.3 举例
sort()调用
2.4 工具类的设计思想
构造方法用private修饰。
成员用public static修饰
五、基本类型包装类
1. 基本类型包装类概述
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据
常用的操作之一:用于基本数据类型与字符串之间的转换
2. Integer类的概述和使用
Integer:包装一个对象中的原始类型int的值。
实例:
运行时idea会提示这两个方法过时了。
字符串类型不能输入"abc"这种字母格式,会报错,只能输入数字格式的字符串
输出为100 和 100(前面为整型,后面为字符串)。
建议使用下面这两种静态类型的方法(其中的字符串同样不能输入字母格式,只能输入数字格式)
3. int 和 String 的相互转换
基本类型包装类的最常见操作就是:用于基本类型和字符串之间的相互转换。
3.1 实例
int->String
方式一 属于字符串的拼接
方式二 是调用了String的valueOf方法
String->int
方式一:String->Integer->int
方式二:是调用了Integer的parseInt方法
3.2 int 转换为 String
public static String valueOf(int i); 返回int参数的字符串表示形式。该方法是String类中的方法。
3.3 String 转换为 int
public static int parseInt(String s); 将字符串解析为int类型。该方法是Integer类中的方法。
3.4 字符串中数字排序
import java.lang.reflect.Array;
import java.util.Arrays;
public class test {
public static void main(String[] args) {
//定义一个字符串
String s = "91 27 46 38 50";
//把字符串中的数字数据存储到一个int类型的数组中
String []strArray = s.split(" ");
//定义一个int数组,把String()数组的每一个元素存储到int数组中
int []arr = new int[strArray.length];
for (int i = 0; i < arr.length; i++)
{
arr[i] = Integer.parseInt(strArray[i]);
}
//对int数组进行排序
Arrays.sort(arr);
//把排序后的int数组中的元素进行拼接得到一个字符串,这里拼接采用StringBuilder来实现
StringBuilder sb = new StringBuilder();
for (int i = 0; i < arr.length; i++){
if(arr.length == i){
sb.append(arr[i]);
}else {
sb.append(arr[i]).append(" ");
}
}
String result = sb.toString();
System.out.println("result: " + result);
}
}
4. 自动装箱和拆箱
装箱:把基本数据类型转换为对应的包装类类型。
拆箱:把包装类类型转换为对应的基本数据类型。
实例:
注意:在使用包装类类型的时候,如果做操作,最好先判断是否为null。
我们推荐的是,只要是对象,在使用前就必须进行不为null的判断。
六、日期类
1. Date类概述和构造方法
Date代表了一个特定的时间,精确到毫秒
实例:
本应该是全路径名@地址的输出,但实际为下图输出,说明toString被重写了(CST为中国标准时间)。
方法二中我们给的变量为一小时(Date的单位是毫秒),本应是1点,但输出为什么是9点呢?
是因为这里我们输出的是中国标准时间,有时区上的差距,我们是东八区。
2. Date类的常用方法
实例:
3. SimpleDateFormat 类概述
引言:在Date类中的时间都是以毫秒为单位很不好阅读,所以我们Java出现了SimpleDateFormat类
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期,我们重点学习日期格式化和解析。
日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从‘A’到‘Z’以及从‘a’到‘z’引号的字母被解释为表示日期或时间字符串的组件的模式字母。
4. SimpleDateFormat 的构造方法
5. SimpleDateFormat 格式化和解析日期
5.1 格式化(从 Date 到 String )
public final String format(Date date):将日期格式化成日期/时间字符串。
5.2 解析(从 String 到 Date )
public Date parse(String source):从给定字符串的开始解析文本以生成日期。
实例:
无参构造+格式化
有参构造+格式化
有参格式+解析
注意:我们的有参构造方法里的格式要和解析里的格式相同,不然会报错。
6. Calendar类概述
Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法。
Calendar 提供了一个类方法 getInstance 用于获取 Calendar 对象,其日历字段已使用当前日期和时间初始化:Calendar rightNow = Calendar.getInstance();
实例:
其中month+1的原因是Calendar里面的month是从0开始数的。
7.Calendar的常用方法
add方法:
set方法: