- Math
1.1 Math类概述
Math包含执行基本数字运算的方法。
没有构造方法,使用类中的成员:
看类的成员是否都是静态的,如果是,通过类名就可以直接调用。
1.2 Math类的常用方法
package math1;
public class math01 {
public static void main(String[] args) {
//public static int abs(int a) 返回参数的绝对值
System.out.println(Math.abs(88));
System.out.println(Math.abs(-88));
System.out.println("…………………………………………");
//public static double ceil (double a) 返回值大于或等于参数的最小double值,等于下一个整数
System.out.println(Math.ceil(12.34));
System.out.println(Math.ceil(12.56));
System.out.println("…………………………………………");
//public static double floor(double a) 返回值小于或等于参数的最大double值,等于下一个整数
System.out.println(Math.floor(12.34));
System.out.println(Math.floor(12.56));
System.out.println("…………………………………………");
//public static int round (floot a),按照四舍五入返回最接近参数的int
System.out.println(Math.round(12.34F));
System.out.println(Math.round(12.56F));
System.out.println("…………………………………………");
//public static int max (int a,int b),返回两个int值中的较大值
System.out.println(Math.max(66,88));
System.out.println("…………………………………………");
//public static int min (int a,int b),返回两个int值中较小的值
System.out.println(Math.min(66,88));
System.out.println("…………………………………………");
//public static double pow(double a,double b),返回a的b次幂的值
System.out.println(Math.pow(6.0,8.0));
System.out.println("…………………………………………");
//public static double random();返回值为double的正值(0.0~1.0)
System.out.println(Math.random());
System.out.println("…………………………………………");
System.out.println((int)(Math.random()*100)+1);
}
}
88
88
…………………………………………
13.0
13.0
…………………………………………
12.0
12.0
…………………………………………
12
13
…………………………………………
88
…………………………………………
66
…………………………………………
1679616.0
…………………………………………
0.9317482248820025
…………………………………………
95
Process finished with exit code 0
- System
2.1 System概述
System类包含几个有用的类字段和方法,它不能被实例化。
2.2 System类的常用方法
package math1;
public class system {
public static void main(String[] args) {
System.out.println("开始");
//public static void exit(int status),终止当前运行的Java虚拟机,非零表示异常终止
System.exit(0);
System.out.println("结束");
//public static long currentTimeNillis(),返回当前时间(毫秒为单位)
}
}
开始
package math1;
public class system {
public static void main(String[] args) {
/*
System.out.println("开始");
//public static void exit(int status),终止当前运行的Java虚拟机,非零表示异常终止
System.exit(0);
System.out.println("结束");
*/
//public static long currentTimeNillis(),返回当前时间(毫秒为单位)
System.out.println(System.currentTimeMillis() * 1.0 / 1000 / 60 / 60 / 24 / 365);
long start = System.currentTimeMillis();
for (int i = 0; i<10000; i++){
System.out.println(i);
}
long end = System.currentTimeMillis();
System.out.println("共耗时"+(end-start)+"毫秒");
}
}
………………
9997
9998
9999
共耗时42毫秒
- Object
3.1 Object概述
Object是类层次结构的根,每个类都可以将Object作为超类,所有类都直接或间接的继承自该类。
构造方法:
public Object()
看方法的源码:选中方法,按下Ctrl+B
建议所有子类重写此方法,
重写:自动生成即可。(Alt+insert——toString)
3.2 Object类的常用方法
package object;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
package object;
public class Demo {
public static void main(String[] args) {
Student s1 = new Student();
s1.setName("Tom");
s1.setAge(5);
System.out.println(s1);
}
}
- Arrays
4.1 冒泡排序
排序:将一组数字按照一定的规则进行排列。
冒泡排序:一种排序的方式,对要进行排序的数据中相邻的数据进行两两比较,将较大的数据放在后面,依次对所有的数据进行操作,直至所有数据按要求完成排序。
总结:
(1)如果有n个数据进行排序,总共需要比较n-1次;
(2)每一次比较完毕,下一次的比较就会少一个数据参与。
代码演示:
package arrays;
public class array {
public static void main(String[] args) {
//定义一个数组
int[] arr = {24, 69, 80, 57, 13};
System.out.println("排序前," + arrayToString(arr));
//第x次比较
for (int x=0; x<arr.length-1; x++){
for (int i=0; i<arr.length-1-x; i++){
if (arr[i]>arr[i+1]){
int temp = arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
}
}
System.out.println("第"+(x+1)+"次排序," + arrayToString(arr));
}
System.out.println("排序后," + arrayToString(arr));
}
//把数组中的元素按照指定的规则组成一个字符串(元素1,元素2……)
public static String arrayToString(int[] arr) {
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(",");
}
}
sb.append("]");
String s = sb.toString();
return s;
}
}
排序前,[24,69,80,57,13]
第1次排序,[24,69,57,13,80]
第2次排序,[24,57,13,69,80]
第3次排序,[24,13,57,69,80]
第4次排序,[13,24,57,69,80]
排序后,[13,24,57,69,80]
4.2 Arrays类的概述和常用方法
Arrays类包含用于操作数组的各种方法。
工具类的设计思想:
(1)构造方法用private修饰;(防止外界创建对象)
(2)成员方法用public static修饰。(让使用类名来访问该成员方法)
package arrays;
import java.util.Arrays;
public class array1 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {24,69,80,57,13};
System.out.println("排序前:"+ Arrays.toString(arr));
Arrays.sort(arr);
System.out.println("排序前:"+ Arrays.toString(arr));
}
}
排序前:[24, 69, 80, 57, 13]
排序前:[13, 24, 57, 69, 80]
- 基本类型包装类
5.1 基本类型包装类概述
将基本数据类型封装成对象的好处在于可以在对象中定义更多的功能方法操作该数据。
常用的操作之一:用于基本数据类型与字符之间的转换。
5.2 Integer类的概述和使用
Integer:包装一个对象中的原始类int的值。
package integer;
public class Demo {
public static void main(String[] args) {
Integer i1 = Integer.valueOf(100);
System.out.println(i1);
Integer i2 = Integer.valueOf("100");
System.out.println(i2);
}
}
100
100
5.3 int和String的相互转换
基本类型包装类的最常见操作就是:用于基本类型和字符串之间的相互转换。
(1)int转换为String
public static String valueOf(int i):返回int参数的字符串表示形式。该方法是String类中的方法。
(2)String转换为int
public static int parseInt(String s):将字符串解析为int类型。该方法是Integer类中的方法。
package integer;
public class Demo1 {
public static void main(String[] args) {
//int==>String
int num = 100;
//方式一:
String s1 = "" + num;
System.out.println(s1);
//方式二:
String s2 = String.valueOf(num);
System.out.println(s2);
//String==>int
String s = "100";
//方式一:
Integer i = Integer.valueOf(s);
int x = i.intValue();
System.out.println(x);
//方式二:
int y = Integer.parseInt(s);
System.out.println(y);
}
}
100
100
100
100
5.4 自动装箱和拆箱
装箱:把基本数据类型转换为对应的包装类类型
拆箱:把包装类类型转换为对应的基本数据类型
Integer i = 100; //自动装箱
i += 200; //i = i+200; i+200自动拆箱;i = i+200:自动装箱
注意:在使用包装类类型的时候,如果做操作,最好先判断是否为null
只要是对象,在使用前就必须进行不为null的判断
public class Demo3 {
public static void main(String[] args) {
//装箱:
Integer i = Integer.valueOf(100);
Integer ii = 100;
//拆箱
ii = ii.intValue() +200;
System.out.println(ii);
ii += 200;
System.out.println(ii);
Integer iii = null;
if (iii!=null){
iii += 300;
}
}
}
300
500
- 日期类
6.1 Date类概述和构造方法
Date代表了一个特定的时间,精确到毫秒
package integer;
import java.util.Date;
public class Demo4 {
public static void main(String[] args) {
Date d1 = new Date();
System.out.println(d1);
long date = 1000*60*60;
Date d2 = new Date(date);
System.out.println(d2);
}
}
Fri Mar 26 17:33:37 CST 2021
Thu Jan 01 09:00:00 CST 1970
6.2 Date类的常用方法
package integer;
import java.util.Date;
public class Demo5 {
public static void main(String[] args) {
Date d = new Date();
System.out.println(d.getTime()*1.0/1000/60/60/24/365+"年");
long time = 1000*60*60;
d.setTime(time);
System.out.println(d);
long time1 = System.currentTimeMillis();
d.setTime(time1);
System.out.println(d);
}
}
51.266861119958136年
Thu Jan 01 09:00:00 CST 1970
Fri Mar 26 17:42:12 CST 2021
6.3 SimpleDateFormat类概述
SimpleDateFormat是一个具体的类,用于以区域设置敏感的方式格式化和解析日期,重点学习日期格式化和解析。
日期和时间格式由日期和时间模式字符串定义,在日期和时间模式字符串中,从‘A’到‘Z’以及从‘a’到‘z’
引导的字母被诠释为表示日期或时间字符串的组件的模式字母。
6.4 SimpleDateFormat的构造方法
6.5 SimpleDateFormat格式化和解析日期
(1)格式化(从Date到String)
public final String format(Date date):将日期格式化成日期/时间字符串
(2)解析(从String到Date)
public Date parse(String source):从给定字符串的开始解析文本以生成日期。
package integer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo6 {
public static void main(String[] args) throws ParseException {
//格式化,从Date到String
Date d = new Date();
//无参构造方法
//SimpleDateFormat sdf = new SimpleDateFormat();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String s = sdf.format(d);
System.out.println(s);
//从String到Date
String ss = "2021-03-30 11:11:11";
//
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = sdf2.parse(ss);
System.out.println(dd);
}
}
2021年03月26日 18:03:46
Tue Mar 30 11:11:11 CST 2021
6.6 Calendar类概述
Calendar为某一时刻和一组日历字段之间的转换提供了一些方法,并未操作日历字段提供了一些方法。
Calendar提供了一个类方法getlnstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化:
Calendar rightNow = Calendar.getlnstance();
package integer;
import java.util.Calendar;
import java.util.Locale;
public class Date2 {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();
//System.out.println(c);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
}
}
2021年3月26日
6.7 Calendar的常用方法
package integer;
import java.util.Calendar;
import java.util.Locale;
public class Date2 {
public static void main(String[] args) {
//获取对象
Calendar c = Calendar.getInstance();
//System.out.println(c);
//需求1:三年前的今天
c.add(Calendar.YEAR,-3);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int date = c.get(Calendar.DATE);
System.out.println(year + "年" + month + "月" + date + "日");
//需求2:十年后的5天前
c.add(Calendar.YEAR,10);
c.add(Calendar.DATE,-5);
int year1 = c.get(Calendar.YEAR);
int month1 = c.get(Calendar.MONTH) + 1;
int date1 = c.get(Calendar.DATE);
System.out.println(year1 + "年" + month1 + "月" + date1 + "日");
c.set(2021,11,11);
int year2 = c.get(Calendar.YEAR);
int month2 = c.get(Calendar.MONTH) + 1;
int date2 = c.get(Calendar.DATE);
System.out.println(year2 + "年" + month2 + "月" + date2 + "日");
}
}
2018年3月26日
2028年3月21日
2021年12月11日