JavaSE—常用类 (全)(一):https://developer.aliyun.com/article/1555339
String类
1. 获取功能的常用方法
int length( ) 获取字符串长度
• char charAt( ) 获取指定位置上的字符
• int indexOf( ) 获取字符首次出现的位置,也可以从指定位置开始查找
• lastIndexOf( ) 从后往前找
• String substring( ) 从指定位置开始截取一个字符串副本
public static void main(String[] args) { //获取功能 String s1 = "abcdabcd"; //int length() 获取字符串长度 System.out.println(s1.length()); // 8 //char charAt() 获取指定位置上的字符 System.out.println(s1.charAt(4)); //索引4对应的字符 a //int indexOf() 获取字符首次出现的位置 System.out.println(s1.indexOf("a")); //注意是首次出现的位置 //int indexOf(str: ,fromindex: ) 从指定位置开始查找 System.out.println(s1.indexOf("a",4)); //lastIndexOf() 从后往前找 System.out.println(s1.lastIndexOf("a")); //String substring() 从指定位置开始截取一个字符串副本 String s2=s1.substring(2,6); //截取索引2~6的字符串(不包含索引6对应的字符) System.out.println(s2); // 2 <= res < 6 }
2. 转换功能的常用方法
• String toUpperCase( ) 将字符串内容全部转换为大写
• String toLowerCase( ) 将字符串内容全部转换为小写
• String concat(String str) 拼接指定字符串内容到原字符串末尾
• String [ ] split(分割符) 通过分割符将字符串分割并以数组形式返回
public static void main(String[] args) { String s1="WoShiChinese"; System.out.println(s1.toUpperCase()); //转大写 System.out.println(s1.toLowerCase()); //转小写 String s2 ="我爱中国"; System.out.println(s2.concat(s1)); //拼接s1字符串内容到s2字符串末尾 //String[] split(分割符) String s3 = "张三:中国人;"+"Tom:英国人;"+"梅西:阿根廷人;"; String[] strings = s3.split(";"); //通过" ; "来截取s3字符串 System.out.println(Arrays.toString(strings)); }
3. 替换功能的常用方法
• String replace(char old,char new) 单个字符替换
• String replace(String old,String new) 整个字符串替换
• replaceAll(String regex, String replacement) 替换字符串中所有数字
• replaceFirst(String regex, String replacement) 替换字符串中第一个数字
public static void main(String[] args) { String s1 = " ab5cd7bda"; //用"A"替换字符串中所有的"a" System.out.println(s1.replace("a","A")); //用"G"替换字符串中所有数字 \\d表示所有字符串中所有的数字 System.out.println(s1.replaceAll("\\d","G")); //用"R"替换字符串中第一个数字 System.out.println(s1.replaceFirst("\\d","R")); }
4. 去除字符串两端空格
• String trim( ) 去除字符串两端空格(字符串中间的空格不能去除)
public static void main(String[] args) { //String trim() 去除字符串两端空格 String s2 =" abcEF 13aD1 "; System.out.println(s2); System.out.println(s2.length()); //原字符串长度 System.out.println(s2.trim());//去除两端空格,字符串中间的空格不能去除 System.out.println(s2.trim().length()); //去除空格后字符串的长度 }
StringBuffer类
注意:
- String可以直接创建字符串对象,而StringBuffer不能,需要新创建一个字符串对象。
String s1 = "abc"; StringBuffer s2 = new StringBuffer("abc");
添加功能
○ public StringBuffer append(String str) 在原字符串末尾添加字符串
public static void main(String[] args) { StringBuffer s1 = new StringBuffer("abc"); s1.append("def"); // 不能使用+= System.out.println(s1); }
输出:abcdef
○ public StringBuffer insert(int offset,String str) 向指定位置插入字符串
public static void main(String[] args) { StringBuffer s1 = new StringBuffer("abc"); //向字符串s1末尾添加"def" s1.append("def"); // 不能使用+= System.out.println(s1); //向指定位置插入字符串 s1.insert(1,"ABC"); //向索引为1的位置插入字符串"ABC" System.out.println(s1); }
输出:aABCbcdef
删除功能
○ public StringBuffer deleteCharAt(int index) 删除单个字符
○ public StringBuffer delete(int start,int end) 删除指定区间的元素,不包含结尾
public static void main(String[] args) { StringBuffer s1 = new StringBuffer("abcdef"); s1.deleteCharAt(2); //删除索引为2的字符 System.out.println(s1); //删除指定区间的元素,不包含结尾 StringBuffer s2 = new StringBuffer("ABCDEF"); s2.delete(1,3); System.out.println(s2); }
替换功能
○ public StringBuffer replace(int start,int end,String str)
StringBuffer s1 = new StringBuffer("abcdef"); s1.replace(0,3,"ABC"); System.out.println(s1);
输出:ABCdef
反转功能
○ public StringBuffer reverse( )
StringBuffer s1 = new StringBuffer("abcdef"); s1.reverse(); //反转 System.out.println(s1);
输出:fedcba
截取功能
○ 从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变
public static void main(String[] args) { StringBuffer s1 = new StringBuffer("abcdef"); //从StringBuffer中截取一个副本,返回给一个新的String对象,StringBuffer对象不变 String s2=s1.substring(1,4); System.out.println(s1); System.out.println(s2); }
StringBuffer和String的区别
- String修饰的字符串是一个值不能改变的字符串,用String声明的字符串对象值一旦给定就不能改变了,每次拼接都会创建新的字符串对象,耗时且占用空间。
- StringBuffer是内容可以改变的字符串,值可以改变且不需要创建新对象,在多任务执行时是安全的,适合单线程。
Math类
○ 可以直接调用
介绍:
java.lang.Math 提供了一系列静态方法用于科学计算;其方法的参数和返回值类型一般为double型.
常用方法有:
○ abs 绝对值
○ sqrt 平方根
○ pow(double a, double b) a的b次幂
○ max(double a, double b) min(double a, double b) 比较两数的大小
○ random( ) 返回 0.0 到 1.0 的随机数
○ long round(double a) double型的数据a转换为long型(四舍五入)
public static void main(String[] args) { //Math类 System.out.println(Math.abs(-3)); //绝对值 System.out.println(Math.sqrt(25)); //平方根 System.out.println(Math.pow(2,5)); //次方 System.out.println(Math.round(9.35));//四舍五入 System.out.println(Math.floor(4.9)); //向下舍去 System.out.println(Math.ceil(1.1)); //向上补加 System.out.println(Math.random()); //0~1随机生成 (不等于1) }
Random类
○ 不能直接调用,使用Random类之前需要创建新的对象。
○ 介绍:此类用于产生随机数
○ 常用方法有:
import java.util.Random; public static void main(String[] args) { Random random = new Random(); System.out.println(random.nextBoolean()); //true 或 false System.out.println(random.nextInt());//在int的取值范围内随机返回一个整数 System.out.println(random.nextLong()); System.out.println(random.nextInt(35)+1); //在给定范围内随机获取一个数 0=<res<给定数 byte[] bytes = new byte[5]; random.nextBytes(bytes); //随机取出数组长度个byte类型的随机数 System.out.println(Arrays.toString(bytes)); }
Date类
○ 不能直接调用,使用Date类之前需要创建新的对象。
1. 获取程序运行时刻的时间
Date date = new Date();//获取程序运行时刻的时间 System.out.println(date);
2. 获取自1970 1.1 0:0:0 到程序运行时刻的毫秒值
Date date = new Date(); //获取的是自1970 1.1 0:0:0 到程序运行时刻的毫秒值 System.out.println(date.getTime());
3. 测试效率
//测试效率 Date date1 = new Date(); System.out.println(date1.getTime()-date.getTime());
测试效率
○ 测试String字符串和StringBuffer字符串循环拼接10万次,程序运行耗时。
○ 测试String字符串拼接速度.
public static void main(String[] args) { //获取程序运行时刻的时间 Date date = new Date(); // System.out.println(date.getTime()); String s1 = "w"; // StringBuffer s2 = new StringBuffer("w"); String s3 = ""; // StringBuffer s4 =new StringBuffer(""); for (int i = 0; i < 100000; i++) { s3 = s3.concat(s1); } //获取下一个程序运行时刻的时间,即上一个程序运行结束时刻的时间 Date date1 = new Date(); // System.out.println(date1.getTime()); System.out.println("用时"+(date1.getTime()-date.getTime())+"毫秒");//最终运行时间 }
○ 测试StringBuffer字符串拼接速度。
public static void main(String[] args) { //获取程序运行时刻的时间 Date date = new Date(); // System.out.println(date.getTime()); //String s1 = "w"; StringBuffer s2 = new StringBuffer("w"); //String s3 = ""; StringBuffer s4 =new StringBuffer(""); for (int i = 0; i < 100000; i++) { s4 = s4.append(s2); } //获取下一个程序运行时刻的时间,即上一个程序运行结束时刻的时间 Date date1 = new Date(); // System.out.println(date1.getTime()); System.out.println("用时"+(date1.getTime()-date.getTime())+"毫秒");//最终运行时间 }
- 在前文中我们了解了二者的区别,通过这次测试我们也验证了之前的结论:用String声明的字符串对象值一旦给定就不能改变了,每次拼接都会创建新的字符串对象,耗时且占用空间;而StringBuffer是内容可以改变的字符串,值改变的同时不需要创建新对象,所有拼接起来速度更快。