API
Object:所有类的父亲;1、object类中的方法都可以被子类使用
Object类中的方法
- getClass:返回对象的字节码文件对象(获取类名)
- hashCode:返回对象的哈希码值(对象的十进制内存地址值)
- Equals:比较两个对象是否相同
- toString:如果我们想要按自己的想法输出,我们就需要重写toString方法;未重写前的输出方式: getClass.GetName()+“@”+Integer.toHexString(hashCode());类的全路径名+@+对象的哈希码值的十六进制
全限定符命:包类,类名
例:
Person person = new Person();
System.out.println(person);
System.out.println(person.hashCode());
Equals和==的区别:
- equals底层的代码就是==
- Equals只能比较引用数据类型
- ==:可以比较基本数据类型和引用数据类型,比较基本数据类型的时候比较的是值,比较引用数据类型的时候比较的是地址值
String类
- 被final修饰的类(太监类),不能被继承
- 字符串存在与常量池中。如果new String()会在堆内存中开辟空间,如果是直接赋值的话,会在常量池中开辟空间
- String可以通过+完成字符串拼接,但是效率低下
String的常用方法:
方法名 | 作用 | 返回值 |
---|---|---|
isEmpty() | 判断是否为空 | boolean |
length() | 取到该String的长度 | int |
equals(Object obj) | 判断两个字符串是否相等 | boolean |
equalsIgnoreCase(String as) | 不区分大小写比较 | Object |
charAt(int index) | 返回该下标的char | char |
substring(int start) | 截取字符串下标从start开始 | String |
substring(int start,int end) | 截取区间字符串从start开始到end结束(包头不包尾) | String |
replace(char old,char new) | 替换字符串/替换全部 | String |
trim() | 去掉字母首尾空格 | String |
indexOf() | 寻找某个字符串在目标字符串的位置 | int |
String类的型转换功能:
方法名 | 作用 | 返回值 |
---|---|---|
getBytes() | 转换成bytes型数组 | byte[] |
toCharArray() | 转换成char型数组 | char[] |
String valueOf(char[] chs) | 将入参类型转换为String | String |
toLowerCase() | 将所有英文字母转换为小写字母 | String |
toUpperCase() | 将所有英文字母转换为大写字母 | String |
concat(String str) | 将指定字符串连接到此字符串的结尾 | String |
例:
System.out.println(name.isEmpty());
System.out.println(name.length());
String s2 = "0123145617891";
String s3 = "Abc";
System.out.println(s2.equalsIgnoreCase(s3));
char c = s2.charAt(1);
System.out.println(c);
String substring = s2.substring(3,7);
System.out.println(substring);
String replace = s2.replace("1", "9");
System.out.println(replace);
String s4 = " bcbab ";
System.out.println(s4.trim());
int i = s4.indexOf("ab");
System.out.println(i);
byte[] bytes1 = "66".getBytes();
System.out.println(Arrays.toString(bytes1));
StringBuffer类的常用方法:
StringBuffer是用来解决String更改字符串造成的时间浪费和空间浪费的
声明:
StringBuffer sb =New StringBuffer();
方法:
方法名 | 作用 | 返回值 |
---|---|---|
append(String str) | 追加字符串 | StringBuffer |
insert(int offset,String str) | 指定位置追加字符串 | StringBuffer |
deleteCharAt(int index) | 删除下标处的字符 | StringBuffer |
delete(int start,int end) | 删除下标区间的字符 | StringBuffer |
replace(int start,int end,String str) | 替换区间符 | StringBuffer |
reverse() | 反转字符串 | StringBuffer |
substring(int start,int end) | 截取区间字符串从start开始到end结束(包头不包尾) | String |
substring(int start) | 截取字符串 | String |
split() | 拆分字符串 | String[] |
split():加上正则化用来分割字符串
1、正则表达式 \s 表示匹配任何空白字符,+ 表示匹配一次或多次。
str = " hello world! ";
String[] words = str.split("\\s+"); //按照一个或多个空格分割字符串
2、某些特殊字符,如果字符(串)正好是正则的一部分,则需要转义才能用:
这些字符有 | , + , * , ^ , $ , / , | , [ , ] , ( , ) , - , . , \等, 必须得加 \ 。
(想用 | 竖线去分割某字符,因 | 本身是正则表达式中的一部分,所以需要 \ 去转义,因转义使用 , 而这个 \ 正好也是正则表达式的字符,所以还得用一个 \ , 所以需要两个 \。)
String[] words = "aaa|bbb|ccc".split("\\|");
例:
StringBuffer sb = new StringBuffer("小王");
sb.append("是个大帅哥");
sb.insert(2,"哥");
System.out.println(sb);
sb.deleteCharAt(2);
System.out.println(sb);
sb.delete(5, 6); // [5,6)
System.out.println(sb);
sb.replace(5, 8, "大渣男");//[5,8)
System.out.println(sb);
String substring = sb.substring(5, 8);
System.out.println(substring);
sb.reverse();
System.out.println(sb);
String ss = "186-3623-7200";
String[] split = ss.split("-");
System.out.println(Arrays.toString(split));
StringBuffer sb1 = new StringBuffer("15735256010");
sb1.replace(3, 7, "****");
System.out.println(sb1);
包装类:
基本数据类型:是没有方法的,但是可以通过包装类来实现方法的调用
写法上只有
int Integ
char Character
剩下的都是首字母大写
装箱和拆箱:
装箱:穿装备(变强)基本数据类型—>包装类
拆箱:脱装备(变弱) 包装类---->基本数据类型
- byte的包装类 public final class Byte extends Number implements
Comparable - short的包装类 public final class Short extends Number implements
Comparable - int的包装类 public final class Integer extends Number implements
Comparable - long的包装类 public final class Long extends Number implements
Comparable - float的包装类 public final class Float extends Number implements
Comparable - double的包装类 public final class Double extends Number implements
Comparable - Boolean和Character两个类就是正常的属性方法封装,但是数值型的包装类继承了一个Number类。 public
abstract class Number implements java.io.Serializable
其实Number中定义的方法就是用于拆箱装箱的。
Integer的常用方法:
方法名 | 作用 | 返回值 |
---|---|---|
intValue() | 转换成int | int |
parseInt(String s) | String转换成int | int |
valueOf(String s) | String转换成Integer | Integer |
String toBinaryString(int i) | 转换成2进制 | String |
toOctalString | 转换成8进制 | String |
toHexString(int i) | 转换成16进制 | String |
toHexString(int i) | 十进制到其他进制 | String |
parseInt(String s,int radix) | 其他进制到十进制 | int |
Character常用的方法:
方法名 | 作用 | 返回值 |
---|---|---|
isUpperCase(char ch) | 判断指定字符是否为大写字母 | boolean |
isLowerCase(char ch) | 判断指定字符是否为小写字母 | boolean |
isDigit(char ch) | 如果字符串中只含有数字则返回True | boolean |
toUpperCase(char ch) | 将小写字符转换为大写 | char |
toLowerCase(char ch) | 将大写字符转换为小写 | char |
例:
public static void main(String[] args) {
int a = 1;
Integer b = a;
int c = b;
int i = b.intValue();
Integer r = Integer.valueOf("123");// 字符串必须是数字,否则报错
System.out.println(r);
int i1 = Integer.parseInt("12");
boolean a1 = Character.isUpperCase('A');
System.out.println(a1);
boolean a2 = Character.isLowerCase('a');
System.out.println(a2);
boolean a3 = Character.isDigit('A');
System.out.println(a3);
char a4 = Character.toLowerCase('A');
System.out.println(a4);
Demo01 demo01 = new Demo01();
int aa = demo01.toCase("123");
System.out.println(aa);
}
public int toCase(String s){
char[] charArray = s.toCharArray();
for (char c : charArray) {
if(!Character.isDigit(c)){
throw new RuntimeException("字符串中含有非数字字符");
}
}
return Integer.parseInt(s);
}
math常用方法:
方法名 | 作用 | 返回值 |
---|---|---|
abs(int a) | 取绝对值 | int |
ceil(double a) | 返回最小值向上取值 | double |
floor(double a) | 返回最大值向下取值 | double |
max(int a,int b) | 取最大值 | int |
pow(double a,double b) | 求幂 | double |
random() | 随机数 | double |
round(float a) | 四舍五入成整数 | int |
sqrt(double a) | 求double值的正平方根 | double |
例:
int a = -100;
System.out.println(Math.abs(a));
double b = 3.56;
double ceil = Math.ceil(b);
System.out.println(ceil);
double floor = Math.floor(b);
System.out.println(floor);
int max = Math.max(100, 200);
System.out.println(max);
double pow = Math.pow(2, 10);
System.out.println(pow);
long round = Math.round(b);
System.out.println(round);
double random = Math.random(); //0-1之间的小数
int aa = (int)(random * 100);
System.out.println(aa);
System.out.println(Math.sqrt(9));
Random类常用方法:
方法名 | 作用 | 返回值 |
---|---|---|
nextInt() | 生产一个随机数 | int |
nextInt(int n) | 生成一个0~n之间的随机数 | int |
例:
Random random = new Random();
int i = random.nextInt(100);
System.out.println(i);
int x = 20+ random.nextInt(70-20);
System.out.println(x);
Date常用方法:
Date表示日期
获取当前时间
Date date = new Date();
System.out.println(date)
获取当前时间毫秒值
1秒等于=1000毫秒
日期格式化: yyyy-MM-dd HH:mm:ss;SSS
New SimpleDateFormat(格式化字符串);
Foemat(date)会获取一个被格式化的当前时间字符串
Parse(被格式化的当前时间字符串)将被而格式化的时间字符串转换为date类型
例:
Date date1 = new Date();
SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
String format = date.format(date1);
String[] s = format.split("-");
int[] ss =new int[s.length];
for (int i = 0; i < s.length; i++) {
int sss = Integer.parseInt(s[i]);
ss[i]=sss;
}
Random random = new Random();
int year= random.nextInt(30)+1973;
int month= random.nextInt(12)+1;
int day= random.nextInt(30)+1;
int hour = random.nextInt(24);
int minute = random.nextInt(60);
int second = random.nextInt(60);
long alltime =(ss[0]*12*30*24*60*60+ss[1]*30*24*60*60+ss[2]*24*60*60+ss[3]*60*60+ss[4]*60+ss[5])-(year*12*30*24*60*60+month*30*24*60*60+day*24*60*60+hour*60*60+minute*60+second);
System.out.println("随机一位人员来到这个世界多少秒"+alltime);
Calendar日历类
1、日历类擅长是对日期进行加减
Calendar.getInstance();获取日历类
Calendar对象.getTime()转换为日期
Calendar对象.setTime()日期转换为日历类
Add(Calendar.要修改的元素,改成多少)对日期进行修改
例:
Calendar instance = Calendar.getInstance();
System.out.println(instance);
instance.add(Calendar.MONTH,2);
instance.add(Calendar.DAY_OF_MONTH,-2);
// calendar转换成date
Date time = instance.getTime();
System.out.println(time);
// date转换成calendar
instance.setTime(new Date());