1.工具
API文档:应用程序编程接口,指一些预先定义好的类
1)左上角—包
2)左下角—包中的类和接口
3)右侧-----类的详细信息
|-----构造方法 Constructor
|-----属性 Field
|-----方法 Method
|-------------返回值类型
|-------------方法名
|-------------参数列表
|-------------概要信息
2.Object-----所有类的父类
1)如果一个类没有指定父类,那么这个类的父类的Object类;
如果一个类指定了父类,那么这个类的间接父类是Object类;
2)a==b
|—a,b为基本数据类型:判断两个变量是否相等
|—a,b为引用数据类型:判断两个引用是否指向同一个对象—地址
//== 用法
int a = 10;
int b = 10;
System.out.println(a == b);
Person p1 = new Person();
Person p2 = new Person();
//p2 = p1;
System.out.println(p1 == p2);
Person p1 = new Person();
Person p2 = new Person();
p2 = p1;
System.out.println(p1 == p2);
结果:
true
false
true
3)equals()
|----Object类中的equals()和引用数据类型中==的作用是相同的
Object o1 = new Object();
Object o2 = new Object();
o1 = o2;
System.out.println(o1.equals(o2));
Object o1 = new Object();
Object o2 = new Object();
//o1 = o2;
System.out.println(o1.equals(o2));
结果:
true
false
|----String类中的equals()用来判断两个字符串的内容是否相同,和父类Object中的equals方法作用不一样,
原因是:String类中重写了父类Object中的equals方法。
|----自定义的类型(开发人员自己设计的类)如果需要判断对象的内容(属性的值)是否相同,
那么就要重写equals()方法(可以通过开发工具生成)
Person p3 = new Person();
p3.setName("Tom");
p3.setGender("男");
p3.setAge(10);
Person p4 = new Person();
p4.setName("Tom");
p4.setGender("男");
p4.setAge(10);
System.out.println(p3 == p4);
System.out.println(p3.equals(p4));
结果:
false
true
4)toString()方法
|----返回对象的字符串表示形式-----全类名@哈希值
|----通过System.out.println(对象名)的操作,会默认调用toString方法
等效于System.out.println(对象名.toString())
|----如果希望打印自定义类型当中的属性,需要重写toString()方法
System.out.println(o1.toString());//返回对象的字符串表示形式
System.out.println(o1);
System.out.println(p3.toString());
System.out.println(p3);
结果:
java.lang.Object@15db9742
java.lang.Object@15db9742
Person [name=Tom, age=10, gender=男]
Person [name=Tom, age=10, gender=男]
3.包装类----基本数据类型的包装类
1)解决的问题—解决了基本数据类型不能被当成类使用的问题;
2)----
|—byte Byte
|—short Short
|—int Integer
|—long Long
|—float Float
|—double Double
|—char Character
|—boolean Boolean
3)基本数据类型和包装类之间的转换
|----基本数据类型—>包装类----装箱
|—手动装箱 Integet i = new Integet(10);
|—自动装箱 Integer i = 10;
//装箱
int x = 1000;
Integer i = x; //自动装箱
System.out.println(i);
int y = i;//自动拆箱
System.out.println(y);
//字符串类型--->基本数据类型
String str = "100";
int a = Integer.parseInt(str);
System.out.println(a);
String str1 = "100.9";
double d = Double.parseDouble(str1);
System.out.println(d);
结果:
1000
1000
100
100.9
|----包装类—>基本数据类型----拆箱
|—手动拆箱 Integet i = new Integet(10); int a = i.intValue();
|—自动拆箱 int a = i;
4)基本数据类型和字符串转换
|—基本数据类型—>String int a = 100; String str = a + “”; | int a = 100; String str = String.valueOf(a);
|—String—>基本数据类型 String str = “100”; int a = Integer.parseInt(str);
4.字符串相关的类 ------String StringBuffer StringBuilder
String----char[]
char—2Byte—int 0101001
byte—1Byte
1)如何创建字符串
//创建字符串的方式
String str = "hello world"; //常用
String str1 = new String("hello world");
char[] arr = {'h', 'e', 'l', 'l', 'o'};
String str2 = new String(arr);
System.out.println(str);
System.out.println(str1);
System.out.println(str2);
结果:
hello world
hello world
heLLo
2)判断功能
|----equals() 判断两个字符串的内容是否相同
//判断字符串的内容是否相同----"值是否相同"
System.out.println(str.equals(str1));
System.out.println(str.equals(str2));
结果:
true
false
|----equalsIgnoreCase() 判断是否相等忽略大小写
System.out.println(str2.equalsIgnoreCase("HELLO"));
|----contains() 判断是否包含
System.out.println(str.contains("hello"));
System.out.println(str.contains("12313"));
|----startsWith()判断字符串是否以特定字符串开始
System.out.println(str.startsWith("hello"));
System.out.println(str.startsWith("ello", 1));
System.out.println(str.startsWith("ello", 2));
|----endsWith()判断字符串是否以特定字符串结束
System.out.println(str.endsWith("world"));
|----isEmpty()判断字符串是否为空
System.out.println(str.isEmpty());
System.out.println("".isEmpty());
3)获取功能
|----length()获取字符串的长度
System.out.println(str.length());
|----charAt()获取特定位置的字符
System.out.println(str.charAt(0));
System.out.println(str.charAt(1));
4)正则表达式-----不是Java特有的 被判断的字符串 正则表达式的字符串
|----包含特定规则的字符串
|----^ 匹配字符串的开始
|----$ 匹配字符串的结尾
|----[] 表示一个字符
|----{n} 长度为n
|----{n,} 长度至少为n
|----{n, m} 长度最少为n,最大为m
|----+ 前面内容重复1次或多次
|----* 重复0次或多次
|----? 重复1次或没有
String str1 = "a";
//正则表达式----判断字符串中是否只有一个字符,并且这个字符是英文字母a-zA-Z
String reg1 = "^[a-zA-Z]$";
System.out.println(str1.matches(reg1));
String str2 = "a";
//正则表达式----判断字符串中是否两个字符,并且这个字符是英文字母a-zA-Z
String reg2 = "^[a-zA-Z][a-zA-Z]$";
System.out.println(str2.matches(reg2));
String str3 = "abcdefghi0";
//正则表达式----判断字符串中是否十个字符,并且这个字符是英文字母a-zA-Z
String reg3 = "^[a-zA-Z]{10}$";
System.out.println(str3.matches(reg3));
String str4 = "abcde11fghi0";
//正则表达式----判断字符串中是否10~20个字符,并且这个字符串只能包含英文字母a-zA-Z和数字
String reg4 = "^[a-zA-Z0-9]{10,20}$";
System.out.println(str4.matches(reg4));
String str5 = "0abcde11fghi0";
//正则表达式----判断字符串中是否10~20个字符,并且这个字符串只能包含英文字母a-zA-Z和数字,只能以字母开头
String reg5 = "^[a-zA-Z][a-zA-Z0-9]{9,19}$";
System.out.println(str5.matches(reg5));
//+ 1次或多次
String reg6 = "^[0-9]+$";
System.out.println("111".matches(reg6));
//* 0次或多次
String reg7 = "^[0-9]*$";
System.out.println("1231a".matches(reg7));
System.out.println("1231".matches(reg7));
//? 1次或没有
String reg8 = "^[0-9]?$";
System.out.println("912312".matches(reg8));
5)字符串在内存当中的存储
编译过程中会对字符串进行优化:编译过程中能够计算出字符串的结果
static 字符串长度不可改变
6)StringBuffer StringBuilder
String类型进行字符串拼接消耗内存的问题
append()
toString()
StringBuffer—在多线程环境下使用
StringBuilder----在单线程环境下使用
//StringBuffer
StringBuffer sbf = new StringBuffer("aaa");
//使用StringBuffer进行拼接
sbf.append("aaa");
sbf.append("aaa");
sbf.append("aaa");
sbf.append("aaa");
sbf.append("aaa");
//StringBuffer--->String
str5 = sbf.toString();
System.out.println(str5);
5.时间日期相关类
1970年1月1日00:00:00
1)Date
//Date
Date date = new Date();//当前时间
System.out.println(date);
Date date1 = new Date(1000);//毫秒数
System.out.println(date1);
//返回毫秒数
System.out.println(date.getTime());
结果:
Tue Feb 18 10:43:12 CST 2020
Thu Jan 01 08:00:01 CST 1970
1581993792875
2)SimpleDateFormat—格式化日期
|----format():格式化
|----parse():解析
//2020-01-13 09:56:10
//如何以特定的格式打印时间 SimpleDateFormat
SimpleDateFormat smt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化日期 date-->特定格式的字符串
String dataStr = smt.format(date);
System.out.println(dataStr);
结果:
2020-02-18 10:43:12
Fri Aug 08 08:08:08 CST 2008
3)Calendar—日历
|----get
|----set
//创建Calendar
Calendar cal = Calendar.getInstance();
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH));//是从0开始的
System.out.println(cal.get(Calendar.DAY_OF_MONTH));
System.out.println(cal.get(Calendar.DAY_OF_WEEK));//从周天开始
/*
* 如何确定某个月的第一天是周几--->通过Calendar能够知道今天是周几--->创建一个表示x年x月1号的Canlendar
* */
Calendar cal1 = Calendar.getInstance();
cal1.set(Calendar.YEAR, 2020);
cal1.set(Calendar.MONTH, 0);
cal1.set(Calendar.DAY_OF_MONTH, 1);
System.out.println(cal1.get(Calendar.DAY_OF_WEEK));
结果:
2020
1
18
3
4
6.数学相关类
Math
Math.PI(Math.PI = π)
Math.E(Math.E = e ≈ 2.718)
随机数
random()
// 随机数
double num = Math.random(); // >=0.0 < 1.0
System.out.println(num);