常用方法
length() 返回字符串长度 返回类型 int
charAt(int index) 根据下标获取字符串 返回类型char
contains(String str)判断当前字符串是否包含str 返回类型:布尔
tocharArray() 将字符串转成数组 返回类型 char[]
indexOf(String str) 查找str首次出现的下标,存在返回该下标,不存在返回-1
lastIndexOf(String str) 查找字符串在当前字符串中最后一次出现的下标索引
trim() 去掉字符串前后的空格
toUpperCase() 将小写转成大写
toLowerCase() 将大写转成小写
endWith(String str) 判断字符串是否以str结尾
replace(char oldChar,char newChar) 将旧字符串替换成新字符串
split(String str) 根据str拆分 返回结果为数组
equals() 字符串比较是否相等
补充:忽略大小写比较字符串equalsIgnoreCase(String str);
比如 str1 = “java” 和 str2 = “JAVA” 进行对比
compareTo()字符串比较大【比较编码表中的位置】
按顺序比较
package method;
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Locale;
public class Met_hod {
public static void main(String[] args) {
String str ="世界那么大,java ";
String str1 = "java";
System.out.println(str.length()); //结果10
System.out.println(str.charAt(4)); // 结果 大
System.out.println(str.contains(str1)); //结果 true
System.out.println("====================================");
System.out.println(Arrays.toString(str.toCharArray())); //结果 所有字符串
System.out.println(str.indexOf("java"));//结果 6
System.out.println(str.lastIndexOf("大"));//结果 4
System.out.println("====================================");
System.out.println(str.trim());//去掉首位空格
System.out.println(str1.toUpperCase());//将小写转成大写
System.out.println(str1.toLowerCase());//将大写转小写
System.out.println(str.trim().endsWith(str1)); //去掉首尾空格,判断是否以java结尾
System.out.println("=================================");
System.out.println(str.replace("java","python"));//将java替换成python
System.out.println(Arrays.toString(str.split("a")));//按a来拆分字符串 返回结果为数组
System.out.println("=================================");
System.out.println(str1.equals("JAVA"));//结果flase
System.out.println(str1.compareTo("java"));//返回结果 相同返回0
System.out.println("==============================");
}
}
public class Met_hod1 {
public static void main(String[] args) {
/*
* 1.将str中的单词提取出来
* 2.将str中的text替换成practice
* 3.将text前面插入一个easy
* 4.将每个单词的首字母替换为大写*/
String str = "this is a text";
String[] str_arr = str.split(" ");
for (String s:str_arr) {
System.out.println(s);
}
System.out.println("======================");
System.out.println(str.replace("text","practice"));
System.out.println("======================");
System.out.println(str.replace("text","easy text"));
System.out.println("======================");
for(int i=0;i<str_arr.length;i++){
char fistr = str_arr[i].charAt(0);
//取出第一个字符
char upper = Character.toUpperCase(fistr);
//把第一个字符转成大写
String new_char = upper+str_arr[i].substring(1);// 拼接成新数组
System.out.print(new_char);
}
}
}
可变字符串
StringBuffer 可变长字符串,运行效率慢,线程安全
方法:
- append(内容) 添加
- insert(int ,str) 插入
- replace(start int ,end int ,str) 指定位置替换
- delete(start int ,end int)删除
- toString() 输出
package method;
public class Met_hod2 {
public static void main(String[] args) {
//StringBuffer 和 StringBuilder 使用
StringBuffer sb = new StringBuffer();
//方法 1.append()追加数据 2.插入 3.替换 4.删除 5.tostring 输出
sb.append("java");
System.out.println(sb.toString());
sb.append("python");
System.out.println(sb.toString());
sb.insert(1,",");
System.out.println(sb.toString());
sb.replace(0,5,"hello");
System.out.println(sb.toString());
sb.delete(0,5);
System.out.println(sb.toString());
}
}
StringBuilder 可变长字符串,运行效率高,线程不安全
比拼接字符效率高很多很多
BigDecimal类
public class Met_BigDecimal {
public static void main(String[] args) {
double a = 1.0;
double b = 0.9;
System.out.println(a-b);
//结果不是0.1 而是0.099999999998
}
}
精确计算需要使用字符串
package method;
import java.math.BigDecimal;
public class Met_BigDecimal {
public static void main(String[] args) {
double a = 1.0;
double b = 0.9;
System.out.println(a-b);
System.out.println("=======================");
BigDecimal a1 = new BigDecimal("1.0"); //精确运算要使用字符串
BigDecimal b1 = new BigDecimal("0.9");
System.out.println(a1.subtract(b1));// 减法
System.out.println("=======================");
BigDecimal r5 = new BigDecimal("10").divide(new BigDecimal("3"),2,BigDecimal.ROUND_HALF_UP);
//进行除法运算,后面参数 2为保留2位小数,BigDecimal.ROUND_HALF_UP 四舍五入 如果不进行参数保留会报出异常
System.out.println(r5);
}
}
Date类
时间类,精确到毫秒,一个被Calendar类 取代了的类
时间单位
- 1秒 = 1000毫秒
- 1毫秒 = 1000微秒
- 1微秒 = 1000纳秒
Calendar类
获取或设置各种日历字段的方法
构造方法
proleted Calendar() 由于使用修饰符proleted 所以无法直接创建该对象
创建Calendar 类
使用该方法进行创建
Calendar calendar = Calendar.getInstance();
set、add、方法
set可以指定时间参数,进行修改
add可以在当前时间上增加减少
获取年月日等参数,直接调用指定常量即可
package method;
import java.util.Calendar;
public class Met_Calendar {
public static void main(String[] args) {
//创建对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getTime().toLocaleString()); //打印当前时间
System.out.println(calendar.getTimeInMillis()); //打印出 1970年1月1日起的毫秒值
//====================================================================
//获取时间
int year = calendar.get(calendar.YEAR); //通过Calendar对象的常量获取对应数据
System.out.println(year);
int hour = calendar.get(calendar.HOUR_OF_DAY);//24小时制 HOUR 为12小时制
System.out.println(hour);
//set修改时间
Calendar calendar1 = Calendar.getInstance();
calendar1.set(Calendar.DAY_OF_MONTH,5); //指定日期参数
System.out.println(calendar1.getTime().toLocaleString()); //输出指定日期时间
//add修改时间
calendar1.add(Calendar.HOUR,1); //对时间进行增加1小时
System.out.println(calendar1.getTime().toLocaleString()); //输出指定日期,当前时间+1小时
}
}
SimpleDateFormat 类
是一个以语言环境有关的方式来格式化和解析日期的具体类
进行格式化(日期 -> 文本) 、解析(文本 -> 日期)
常用的时间模式字母
package method;
import java.text.SimpleDateFormat;
import java.util.Date;
/*
* 字母 日期或时间 示例
* y 年 2019
* M 月份 08
* d 日 10
* H 时0-23 23
* m 分 16
* s 秒 55
* S 毫秒 367
*
* */
public class Met_SimpleDateFormat {
public static void main(String[] args) throws Exception {
//把日期转换成字符串
//创建对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //按照指定格式进行日期格式化
//创建一个Date
Date date = new Date();
String str = sdf.format(date); //返回值是个字符串
System.out.println(str);
//=================================
//把字符串转换日期
Date date1 = sdf.parse("1991-03-22 21:29:30"); //会抛出异常,如果没有按照指定格式给参数,就会抛出异常
// 这里指定参数是按照创建对象时给定的参数来定义的。
System.out.println(date1);
}
}
System类
系统类,主要用于获取系统的属性数据和其他操作,构造方法私有
方法:
- sttic void arraycopy(…) 复制数组
- static long currentTimeMillis(); 获取当前系统时间,返回的是毫秒
- static void gc() 建议jvm赶快启动垃圾回收器回收垃圾
- static void exit(int status) 退出jvm 如果参数0表示正常,否则异常退出
package method;
public class Met_System {
public static void main(String[] args) {
//arraycopy 数组复制
//参数 src 源数组
//srcPos 从数组哪个位置开始复制
//dest 目标数组
//dest 目标数组的覆盖
//length 复制的长度
int[] arr = {10,20,30,40,50}; // 第一个数组
int[] des = {1,2,3,4,5};//第二个数组
System.arraycopy(arr,0,des,0,arr.length); //复制arr数组,从第0位 到 des数组,从0开始覆盖,复制长度为arr长度
for (int i=0;i< arr.length;i++){
System.out.println(des[i]); //循环出来的结果则为 10,20,30,40,50 原本的1,2,3,4,5都已经被覆盖
}
//==============================================================
long start = System.currentTimeMillis(); //开始计时
for(int i=0;i<999999999;i++){
i+=i;
}
long end = System.currentTimeMillis(); //结束计时
System.out.println("使用时间:"+(end - start)); //计算使用时间
}
}