Day19-常用类(二)
String类
常用方法
/**
* 字符串中的常用方法
*
*/
public class TestString1 {
public static void main(String[] args) {
String str = "java哈哈嘻嘻哈哈java";
System.out.println(str);
System.out.println(str.toString());//返回的是this==>内容文本
//1、charAt()根据下标获取字符
System.out.println(str.charAt(0));
//2、length()返回字符串长度
System.out.println(str.length());
//返回最后一个字符
System.out.println(str.charAt(str.length() - 1));
//3、contains(String str)判断当前字符串是否包含str
System.out.println(str.contains("java"));
//4、char[] toCharArray()将字符串转换成数组
char[] chars = str.toCharArray();
System.out.println(chars.length);
System.out.println(chars[0]);
//5、intdexOf(String str)找str首次出现的下标,存在,则返回下标,不存在,返回-1
System.out.println(str.indexOf("哈哈",6));
//6、lastIndexOf(String str)返回指定字符串在此字符串中最右边出现处的索引
System.out.println(str.lastIndexOf("哈哈",6));
//打印Java出现的次数及位置
System.out.println("打印哈哈出现的次数及位置");
System.out.println(str.indexOf("java",0));//0
System.out.println(str.indexOf("java",0 + 4));//10
System.out.println(str.indexOf("java",16 + 4));//-1
int count = 0;//次数
int pos = 0;//下标位置
//不清楚循环多少次 while
while ((pos = str.indexOf("哈哈", pos)) >= 0) {
System.out.println("下标位置:"+pos);//0 10
count++;
pos += 4;
}
//7、trim()去掉字符串前后的空格
String str2 = " Helloworld! ";
System.out.println(str2);
System.out.println(str2.trim());
//8、toUpperCase()小写转大写
//toLowerCase()大写转小写
System.out.println(str.toLowerCase());//全变小写
System.out.println(str.toUpperCase());//全变大写
//9、endsWith(String str)判断字符串是否以str结尾
String filname = "Helloworld.java";
if (filname.endsWith(".java")) {
System.out.println("是java文件");
}else {
System.out.println("文件格式不正确");
}
//startsWith()测试此字符串是否以指定前缀开始
System.out.println(filname.startsWith("H"));
//11、replace(char oldChar,char newChar)替换,将旧字符串替换成新字符串
String str3 = "black";
System.out.println(str3.replace("ack", "ue"));
//12、String[] split()根据str做拆分【注意】不能以.拆分处理
String str4 = "I love u";
System.out.println(str4);
String [] strs = str4.split(" ");
for (String s : strs) {
System.out.println(s);
}
//13、subString(int beginIndex,int endIndex)截取,在字符串中截取出一个子字符串
System.out.println(str.substring(4));//[4,~
System.out.println(str.substring(4,13));//[4,13) 13 - 4 = 9包前不包后
//14、compareTo(String anotherString)按字典顺序比较两个字符串
String str5 = "a";//字符个数相同,返回ASCII码的差值
String str6 = "b";
System.out.println(str5.compareTo(str6));
String str7 = "aaaa";//字符个数不同,返回两个字符串的长度差值
String str8 = "aaaa123";
System.out.println(str7.compareTo(str8));
//14、equals
String str9 = "aaaa";
String str10 = "AAAA";
System.out.println(str9.equals(str10));
//忽略大小写
System.out.println(str9.equalsIgnoreCase(str10));
}
}
public class TestString2 {
public static void main(String[] args) {
// 练习
String str = "this is a text";
// 将str中的单词单独获取出来
String[] arrs = str.split(" ");
for (String s : arrs) {
System.out.println(s);
}
// 将str中的text替换为practice
String str2 = str.replace("texe", "practice");
System.out.println(str2);
// 在text前面插入一个easy
str2 = str.replace("texe", "easy text");
System.out.println(str2);
// 将每个单词的首字母改为大写
for (String string : arrs) {
char first = string.charAt(0);//this t
char upperChar = Character.toUpperCase(first);//T
String word = upperChar + string.substring(1);
System.out.println(word);
}
}
}
可变字符串
/**
* 可变的字符序列:执行拼接、插入和删除
*/
public class TestStringBuilder {
public static void main(String[] args) {
//char[] value = new char[capacity];
//线程安全,JDK1.0
//StringBuffer sb = new StringBuffer();
//效率高,安全性低
StringBuilder sb = new StringBuilder();
//四个核心方法
System.out.println(sb.toString());
//append()追加
sb.append("我爱Java,");
System.out.println(sb.toString());
sb.append("Java面向对象编程");
System.out.println(sb.toString());
//insert插入
sb.insert(0, "哈哈哈");
System.out.println(sb.toString());
//replace替换
sb.replace(0, 3, "嘻嘻嘻");
System.out.println(sb.toString());
//delete删除
sb.delete(0, 3);
System.out.println(sb.toString());
//特殊方法 reverse反转
System.out.println(sb.reverse());
}
}
BigDecimal
import java.math.BigDecimal;
import java.math.RoundingMode;
public class TestBigDecimal {
public static void main(String[] args) {
double d1 = 1.0;
double d2 = 0.9;
System.out.println(d1 - d2);
//BigDecimal:对数字进行准确的存储与计算
BigDecimal b1 = new BigDecimal("1.0");
BigDecimal b2 = new BigDecimal("0.9");
//加法
BigDecimal result1 = b1.add(b2);
System.out.println(result1);
//减法
BigDecimal result2 = b1.subtract(b2);
System.out.println(result2);
BigDecimal b3 = new BigDecimal("8");
BigDecimal b4 = new BigDecimal("2");
//乘法
BigDecimal result3 = b3.multiply(b4);
System.out.println(result3);
//除法
BigDecimal result4 = b3.divide(b4);
System.out.println(result4);
BigDecimal b5 = new BigDecimal("10");
BigDecimal b6 = new BigDecimal("3");
//需要指明小数位数和取舍模式
//BigDecimal result5 = b5.multiply(b6);
//System.out.println(result5);
//四舍五入模式 保留两位小数
result1 = b5.divide(b6, 2,BigDecimal.ROUND_UP);
System.out.println(result1);
}
}
Date
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
System.out.println(date.toLocaleString());
//昨天
//获取今天的毫秒,减去1天就是昨天
Date yesterday = new Date(date.getTime() - 24*60*60*1000);
//after:测试此日期是否是指定日期之后
System.out.println(date.after(yesterday));
//before:测试此日期是否是指定日期之前
System.out.println(date.before(yesterday));
//compareTo:比较两个日期的顺序
/*
* 如果参数 Date 等于此 Date,则返回值 0;
* 如果此 Date 在 Date 参数之前,则返回小于 0 的值;
* 如果此 Date 在 Date 参数之后,则返回大于 0 的值。
*/
System.out.println(date.compareTo(yesterday));
System.out.println(yesterday.compareTo(yesterday));
//年、月、日、时、分、秒、星期
System.out.println(date.getYear());//年,加上1900就是当前年
System.out.println(date.getMonth());//月,从0开始,如果是7月就显示6
System.out.println(date.getDate());//日
System.out.println(date.getHours());//时
System.out.println(date.getMinutes());//分
System.out.println(date.getSeconds());//秒
System.out.println(date.getDay());//星期
}
}
/**
* 使用默认时区和语言环境获得一个日历
*/
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args) {
//创建当前日历
Calendar calendar =Calendar.getInstance();
System.out.println(calendar);
//获取日期部分
System.out.println(calendar.get(Calendar.YEAR));//年
System.out.println(calendar.get(Calendar.MONTH));//月
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//日
//获取时间部分
System.out.println(calendar.get(Calendar.HOUR));//时 12小时制
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));//时 24小时制
System.out.println(calendar.get(Calendar.MINUTE));//分
System.out.println(calendar.get(Calendar.SECOND));//秒
//获取前一天
Calendar yesterday = Calendar.getInstance();
yesterday.add(Calendar.DAY_OF_MONTH, -1);
System.out.println(yesterday.get(Calendar.DAY_OF_MONTH));
//before after
System.out.println(calendar.after(yesterday));
System.out.println(calendar.before(yesterday));
//获取当月的最大天数和最小天数
System.out.println(yesterday.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(yesterday.getActualMinimum(Calendar.DAY_OF_MONTH));
//获取月份的最大天数和最小天数
System.out.println(yesterday.getMaximum(Calendar.DAY_OF_MONTH));
System.out.println(yesterday.getMinimum(Calendar.DAY_OF_MONTH));
//日历转日期
Date date = calendar.getTime();
//日期转日历
calendar.setTime(date);
}
}
SimpleDateFormat
| 字母 | 日期或时间 |
|---|---|
| y | 年 |
| M | 年中月份 |
| d | 月中天数 |
| H | 1天中小时数(0~23) |
| m | 分钟 |
| s | 秒 |
| S | 毫秒 |
/**
* SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。
* 它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。
*/
public class TestSimpleDateFormat {
public static void main(String[] args) throws Exception{
Date date = new Date();
System.out.println(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str = sdf.format(date);
System.out.println(str);
date = sdf.parse(str);//抛异常
System.out.println(date);
}
}
Calendar
/**
* 使用默认时区和语言环境获得一个日历
*/
import java.util.Calendar;
import java.util.Date;
public class TestCalendar {
public static void main(String[] args) {
//创建当前日历
Calendar calendar =Calendar.getInstance();
System.out.println(calendar);
//获取日期部分
System.out.println(calendar.get(Calendar.YEAR));//年
System.out.println(calendar.get(Calendar.MONTH));//月
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//日
//获取时间部分
System.out.println(calendar.get(Calendar.HOUR));//时 12小时制
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));//时 24小时制
System.out.println(calendar.get(Calendar.MINUTE));//分
System.out.println(calendar.get(Calendar.SECOND));//秒
//获取前一天
Calendar yesterday = Calendar.getInstance();
yesterday.add(Calendar.DAY_OF_MONTH, -1);
System.out.println(yesterday.get(Calendar.DAY_OF_MONTH));
//before after
System.out.println(calendar.after(yesterday));
System.out.println(calendar.before(yesterday));
//获取当月的最大天数和最小天数
System.out.println(yesterday.getActualMaximum(Calendar.DAY_OF_MONTH));
System.out.println(yesterday.getActualMinimum(Calendar.DAY_OF_MONTH));
//获取月份的最大天数和最小天数
System.out.println(yesterday.getMaximum(Calendar.DAY_OF_MONTH));
System.out.println(yesterday.getMinimum(Calendar.DAY_OF_MONTH));
//日历转日期
Date date = calendar.getTime();
//日期转日历
calendar.setTime(date);
}
}
Math
/**
* Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
*/
import java.math.BigDecimal;
import java.text.DecimalFormat;
public class TestMath {
public static void main(String[] args) {
//绝对值
System.out.println(Math.abs(-8));
//幂运算
System.out.println(Math.pow(2, 3));
//随机数[0~1)
System.out.println(Math.random());
//取整 遵循四舍五入
System.out.println(Math.round(12.4));
//java实现四舍五入方式
//第一种round
System.out.println(Math.round(3.1415926*100/100.0));
//第二种printf
System.out.printf("%.3f",3.1415926);
//第三种
BigDecimal b1 = new BigDecimal("3.1415926");
BigDecimal b2 = b1.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println(b2);
//第四种 DecimmalFormat类 数字格式化类 #代表整数值 00代表保留小数位数
DecimalFormat df = new DecimalFormat("#.00");
String s = df.format(3.1415926);
System.out.println(s);
//求平方根
System.out.println(Math.sqrt(100));
//求立方根
System.out.println(Math.cbrt(27));
//返回小于等于某个数的最大值
System.out.println(Math.floor(3.9));//3.0
//返回大于等于某个数的最小值
System.out.println(Math.ceil(3.1));//4.0
//圆周率 自然对数的底数
System.out.println(Math.PI);
System.out.println(Math.E);
}
}
Randon
import java.util.Random;
/**
* 此类的实例用于生成伪随机数流。此类使用 48 位的种子,使用线性同余公式 对其进行了修改所得
*/
public class TestRandom {
public static void main(String[] args) {
//创建一个随机数对象
Random random = new Random();
System.out.println(random.nextInt());
System.out.println(random.nextInt(100));//[0~100)
//验证码:Y9a7
// [A,Z][0,9][a,z][0,9]
int num1 = random.nextInt(26);
int num2 = random.nextInt(10);
int num3 = random.nextInt(26);
int num4 = random.nextInt(10);
//字符形式输出
char ch1 = (char)('A' + num1);
char ch2 = (char)('a' + num3);
System.out.println("验证码是:"+ch1+num2+ch2+num4);
}
}
System
/**
* System系统类,主要用于获取系统的属性数据和其他操作。
*/
public class TestSystem {
public static void main(String[] args) {
//1.static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
//从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
int [] nums = new int [] {1,2,3,4,5};
int [] newNums = new int[nums.length*2];
System.arraycopy(nums, 0, newNums, nums.length, nums.length);
//Arrays.toString();
System.out.println(newNums);
System.out.println(Arrays.toString(newNums));
//static long currentTimeMillis()
long start = System.currentTimeMillis();
//String str = "";
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 50000; i++) {
//str += "A";
sb.append("A");
}
long end = System.currentTimeMillis();
System.out.println("时间差:"+(end - start));
//gc()运行来及回收器
System.gc();
//4.static void exit(int status)
//终止当前正在运行的 Java 虚拟机。
System.exit(0);
System.out.println("程序结束");//已经结束,不执行
}
}
待整理...

浙公网安备 33010602011771号