常用工具类
API
什么是API
java中一些类的方法
Objeck
(1)getClass:返回对象字节码文件对象;获取类名
(2)hashCode:返回对象的哈希码值(对象的内存地址值);十进制的内存地址值
(3)equals:比较两个对象是否相等
(4)toString:父类方法不适用子类时就需要重写toString方法
String
什么是String
(1)被final修饰的类,不能被继承
(2)字符串存在于常量池中。new创建值时在堆与常量池都创建,常量池有则直接调取不用继续创建新的;直接赋值时,会在常量池创建,常量池有则直接调取不用继续创建新的
String常用的方法:
方法名 | 作用 |
---|---|
isEmpty() | 判断是否为空值,空格也算值 |
length() | 取得该字符串的长度 |
equals(Object obj) | 判断是否相同 |
equalsIgnoreCase(String as) | 不区分大小写判断是否相同 |
charAt(int index) | 取得指定位置的字符 |
substring(int start) | 从指定位置开始输出 |
substring(int start,int end) | 从开始到结束-1的位置;包头不包尾 |
replace(char old,char new) | 字符替换(所有的) |
trim() | 去掉首尾空格,不去字符中间的 |
indexOf() | 第一次出现该字符或字符串的位置;没有返回-1 |
getBytes | 转换为bytes型数组 |
案例: |
String i = new String("abc"); //在堆与常量池都创建,常量池有则直接调取不用继续创建新的
String a = "Abc"; //直接在常量池中创建或者调取,不进堆中
String b = "";
System.out.println(b.isEmpty());//判断是否为空值,空格也算值
System.out.println(i.length());//取得该String的长度
System.out.println(i.equals(a));//判断是否相同
System.out.println(i.equalsIgnoreCase(a));//不区分大小写比较
System.out.println(a.charAt(0));//取得指定位置的字符
String c = "abcdefghijklmnopqistuvwxyz";
System.out.println(c.substring(10));//从指定位置开始
System.out.println(c.substring(3,11));//从开始到结束-1的地方,包头不包尾
System.out.println(c.replace("ab","c"));//字符串替换
String d = " a b c ";
System.out.println(d.trim());//去掉首尾空格,不去字符中间的
System.out.println(c.indexOf("fg"));//第一次出现该字符串的位置
String name = "张三";
byte[] bytes = name.getBytes(); //转换成bytes型数组
System.out.println(Arrays.toString(bytes)); //编码成数字表示的;汉字编码;三个数字表示一个汉字
StringBuffer常用的方法:
方法名 | 作用 |
---|---|
append(String str) | 追加字符串 |
insert(int offset,String str) | 在指定位置追加字符串 |
deleteCharAt(int offset,String str) | 删除指定位置的字符 |
delete(int start,int end) | 删除指定区间的字符 |
replace(int start,int end,String str) | 替换指定区间的内容 |
reverse() | 反转字符串 |
substring(int start,int end) | 截取指定区间的字符串 |
substring(int start) | 截取字符串 |
split() | 拆分字符串 |
StringBuffer i = new StringBuffer("张三");
System.out.println("追加字符串:"+i.append("是个好人"));//追加字符串
System.out.println("在指定位置追加字符串:"+i.insert(6,"吗"));//在指定位置追加字符串
System.out.println("删除指定位置的字符:"+i.deleteCharAt(6));//删除指定位置的字符
System.out.println("删除指定区间的字符:"+i.delete(2,5));// 删除指定区间的字符
System.out.println("替换指定区间的内容:"+i.replace(0,2,"李四"));//替换指定区间的内容
System.out.println("反转字符串:"+i.reverse());//反转字符串
System.out.println("截取指定区间的字符串:"+i.substring(0,1));//截取指定区间的字符串
System.out.println("截取字符串:"+i.substring(1));//截取字符串
String ss = "123-4567-7896";
String[] split = ss.split("-");//用-拆分作为分隔符拆分
System.out.println("拆分字符串:"+ Arrays.toString(split));
案例
客户要把手机号只展示前三位和后四位其他数字用*号代替
StringBuffer pNum = new StringBuffer("12345678987");//创建一个手机号类型是StringBuffer类型的
pNum.replace(3, 7, "****");//将指定区间的内容替换
System.out.println(pNum);
包装
基本数据类型:是没有方法的,但是可以通过包装类来实现方法调用
写法:只有int是Integer与char是Character;剩下的都是首字母大写
装箱:基本数据类型---->包装类
拆箱:包装类---->基本数据类型
Integer的常用方法
方法名 | 作用 |
---|---|
intValue() | 转换成int |
parseInt(String s) | Sting转换int |
valueOf(String s) | Sting转换Integer |
isUpperCase(char ch) | 是否为大写字母 |
isLowerCase(char ch) | 是否为小写字母 |
isDigit(char ch) | 字符串只有数字时返回true |
toUpperCase(char ch) | 小写字符转大写 |
toLowerCase(char ch) | 大写字符转小写 |
Integer的案例
char i = 'A';
boolean a1 = Character.isUpperCase(i);
System.out.println("A是否为大写字母"+a1);
boolean a2 = Character.isLowerCase(i);
System.out.println("A是否为小写字母"+a2);
boolean a3 = Character.isDigit(i);
System.out.println("i中是否只有数字"+a3);
System.out.println("小写字符转换为大写"+Character.toUpperCase('a'));
System.out.println("大写字符转换为小写"+Character.toLowerCase('A'));
int a = 1;
Integer b = a;
int c = b;
int d = b.intValue();
Integer r = Integer.valueOf("123");// 字符串必须是数字,否则报错
System.out.println(r);
String s = "1234";
int i1 = Integer.parseInt(s);//字符串转换为int
System.out.println(i1);
案例
客户从页面(Scanner)拿到的是String的数据类型,要在后台转换成Int类型
Scanner scanner = new Scanner(System.in);
try {
System.out.println("请输入一个数字");
String i = scanner.next();
int i1 = Integer.parseInt(i);
System.out.println(i1);
} catch (Exception e) {
System.out.println("输入格式错误");
}
Math
方法名 | 作用 |
---|---|
abs(int a) | 绝对值 |
ceil(double a) | 向上取整 |
floor(double a) | 向下取整 |
max(int a,int b) | 最大值 |
pow(double a,double b) | 求幂 |
random() | 0-1之间的随机数 |
round(float a) | 四舍五入取整 |
sqrt(double a) | 求正平方根 |
案例:
System.out.println(Math.abs(-1));//绝对值
double a = 3.5;
System.out.println(Math.ceil(a));//向上取整
System.out.println(Math.floor(a));//向下取整
System.out.println(Math.round(a));//四舍五入取整
System.out.println(Math.max(100,200));//最大值
System.out.println(Math.pow(2,3));//求幂,前者为基数,后者为幂次方
System.out.println(Math.random());//0-1之间的随机数
System.out.println(Math.sqrt(9));//求正平方根
Date
Date date = new Date();
System.out.println(date);
// 当前时间的毫秒值
System.out.println(date.getTime());
System.out.println(System.currentTimeMillis());
//通过毫秒值计算
Date date1 = new Date(1690256657699L);
System.out.println(date1);
//日期格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss:SSS");
String date2 = sdf.format(date);
System.out.println(date2);
Calendar(日历类)
日历类擅长的是堆日期进行加减操作
方法名 | 作用 |
---|---|
getInstance() | 获取时间 |
get(int field) | 获取年月日时分秒 |
add(int field,int amount) | 计算时间 |
set(int year,int month,int date) | 设置时间 |
案例: |
Calendar instance = Calendar.getInstance();
System.out.println(instance);
instance.add(Calendar.MONTH,2);//时间加两个月
instance.add(Calendar.DAY_OF_MONTH,-2);//时间减两天
Random(随机数)
Random的常用方法
方法名 | 作用 |
---|---|
nextInt() | 一个随机数 |
nextInt(int n) | 一个0~n之间的随机数 |
案例: |
Random random = new Random();
int i = random.nextInt(100);//随机一百内的数
System.out.println(i);
//随机30-70的数字
int i1 = 30 + random.nextInt(40);
System.out.println(i1);
案例:
客户要计算公司随机一位人员来到这个世界多少秒
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的生日:");
String birthday = sc.nextLine();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(birthday);
long myDate = date.getTime();
long nowDate = System.currentTimeMillis();
int millisecond=(int) ((nowDate-myDate)/1000);
System.out.println("你来到这个世界有"+millisecond+"秒了");
重点
equals 和 ==区别
equals:底层的代码就是==,只能比较引用数据类型
==:可以比较基本数据类型和引用数据类型;比较基本数据类型就是比较值;比较引用数据类型就是比较地址值
String、StringBuffer、StringBuilder的区别
(1)String:速度最慢,线程安全,在少量字符串时使用
(2)StringBuffer:速度比StringBuilder慢,比String快,线程安全,在多线程环境下的大量使用
(3)StringBuilder:速度最快,线程不安全,在单线程环境下的大量使用