1.String和StringBuffer类
(1)String
字符串的基本操作:
String s="lalalalalalllll";
s.length();//返回字符串的长度
s.charAt(0);//返回字符串中的第一个字符
s.indexOf('a');//返回字符串中字符a第一次出现的位置
s.lastIndexOf('a');//返回最后一个出现的位置
s.indexOf("la");//返回子字符串la第一次出现的位置
s.lastIndexOf("la");//子字符串最后一次出现的位置
字符串的转换操作:
String s="lalalalalalllll";
char[] c=s.toCharArray();//将字符串s转换成字符数组
s.toUpperCase();//小写字母转换成大写
String.valueOf(1);//将整型数据1转换成字符型
字符串的替换和去除空格操作:
String s=" lala lalalalllll ";
s.trim();//去除字符串首尾两端的空格
s.replace(" ","");//替换字符串中的所有空格
字符串的判断操作:
String s="lalalalalalllll";
s.startWith("la");//判断是否以la开头
s.endWith("la");//判断是否以la结尾
s.isEmpty();//判断是否是空字符
s.equals(s1);//判断两个字符是否相等
注:equals方法判断的是两个字符串的字符值是否相等,而==判断的是两个字符串内存地址是否相同。
字符串的截取与分割:
String s="2022-3-6";
s.substring(5);//截取第6个字符串之后的
s.substring(5,7);//截取第6,7字符
String [] str=s.split("-");//通过-将字符串分解为字符串数组
(2)StringBuffer类
其余String类最大的不同是它的内容和长度都是可以改变的。但该类不能使用+进行连接。
StringBuffer sb=new StringBuffer();//定义一个字符串缓冲区
sb.append("ABCDE");//添加指定字符串
sb.inser(2,"DE");//在指定位置加入字符串
sb.setCharAt(2,'C');//修改指定位置字符串
sb.replace(2,5,"GGG");//替换指定位置的字符或字符串
sb.delete(2,4);//删除指定范围字符
sb.deleteCharAt(2);//删除指定位置字符
sb.reverse();//翻转字符串
sb.delete(0,sb.length());//清空缓冲区
2.System类和Runtime类
(1)System类
getProperties方法:
public class Example{
public static void main(String[] args){
Properties properties=System.getProperties();//获取系统当前属性
System.out.println(properties);
Set<String>propertyNames=properties.stringPropertiesNames();//获取所有系统属性的key
for(String key:propertyNames){
String value=System.getProperties(key);
System.out.println(key+":"+value);
}
}
}
currentTimeMillis方法
时间戳:返回与1970年1月1日0点0分0秒的时间差,单位为毫秒。返回的数据类型为long
public class Example{
public static void main(String[] args){
long startTime=System.currentTimeMillis();
//程序
long endTime=System.currenTimeMillis();
System.out.println("程序运行时间"+(endTime-startTime));
}
}
arraycopy方法
用于将一个数组中的元素快速拷贝到另一个数组中。
System.arraycopy(src,2,des,0,4);
//src:源数组;2:原数组中元素拷贝的起始位置;des:目标数组;0:拷贝到目标数组的起始位置;4:表示拷贝元素的个数
(2)Runtime类
public class Example{
public static void main(String[] args){
Runtime rt=Runtime.getRuntime();//获取java程序关联的运行时对象
rt.availableProcessors();//返回处理器的个数
rt.freeMemory();//返回空闲内存大小
rt.maxMemory();返回最大可用内存大小
Process process=rt.exec("notepad.exe");//会在桌面上打开一个记事本
process.destroy();//关闭进程
}
}
3.Math类
Math类中的所有方法都是静态方法,可以直接通过类名来进行调用。
Math.abs(-1);//计算绝对值
Math.sin();//计算正弦
Math.cos();//计算余弦
Math.tan();//计算正切
Math.sqrt();//计算平方根
Math.cbrt();//计算立方根
Math.pow(3,4);//计算乘方
Math.ceil();//计算大于参数的最小整数
Math.floor();//计算小于参数的最小整数
Math.round();//四舍五入(会将小数点后的数字直接忽略)
Math.max(4,5);//求两个数的较大值
Math.min();//求两个数中的较小值
Math.random();//生成0-1之间的一个随机树
4.Random类
Random r=new Random();
Random r=new Random(1);//固定随机种子
r.nextBoolean();//生成布尔型的随机数
r.nextDouble();
r.nextFloat();
r.nextInt();
r.nextInt(10);//指定范围为0-10
r.nextLong();
5.包装类
java所包含的8中基本数据类型不支持面向对象的编程机制,通过包装类可以将基本数据类型的值包装成引用数据类型的对象。
基本数据类型 | 对应的包装类 |
---|---|
byte | Byte |
char | Character |
int | Integer |
short | Short |
long | Long |
float | Float |
double | Double |
boolean | Boolean |
int a;
Integer b=a;
int c=b;
其他方法支持基本数据类型、基本上数据包装类与对应字符串之间的相互转换。
(1)String类中的valueOf()方法可以将8中数据类型转换成字符串类型;
(2)8中包装类的静态方法valueOf()(Character类没有这种方法);
(3)8种包装类的praseXxx()方法可以将字符串转换为相应的数据类型;
(4)包装类都重写了Object类中的toString()方法,可以将相应的数据类型转换成字符串
6.日期与时间类
(1)Data类
Data data=new Date();//输出当前计算机的日期和时间
(2)Calendar类
Calendar calendar=Calendar.getInatance();//要使用静态方法来得到一个Calendar对象
calendar.get(Calendar.Year);//MONTH;DATE;HOUR;MINUTE;SECOND
7.格式化类
(1)DataFormat类
它是一个抽象类,不能直接被格式化,但能通过一些静态方法来获取其中的实例对象。
专门用于将日期格式化为字符串或者将用特定的格式显示的日期字符串转换成一个Data类。
Data data=new Data();
DataFormat fullFormat=DataFormat.getDataInstance(DataFormat.FULL);//LONG;MEDIUM;SHORT
String s="2022-03-06";
DataFormat dt=DataFormat.getInstance();
dt.parse(s);//将字符串解析成Data对象
(2)SimpleDataFormat类
为了能够更好地格式化日期、解析字符串。
可以使用new关键字创建实例对象。
Data data=new Data();
SimpleDataFormat sdf=new SimpleDataFormat("Gyyyy年MM月dd日:今天是yyyy年的第D天,E");//按SimpleDataFormat对象的日期模板格式化Data对象
sdf.format(data);
SimpleDataFormat sdf=new SimpleDataFormat("yyyy/MM/dd");
String s="2022/03/06";
sdf.parse(s);//将字符串解析成Data对象
(3)DataTimeFormatter类
可以将时间、日期对象格式化为字符串,也能将特定格式的字符串解析为日期、时间对象
(不想看了,后边不困了再说吧)
8.例子
package com.csh.helloworld;
public class Chapter5_1 {
public static void main(String[] args) {
String s="HelloWorld";
StringBuffer sb=new StringBuffer();
for(int i=0;i<s.length();i++){
char c=s.charAt(i);
if(Character.isUpperCase(c)) {
sb.append(Character.toLowerCase(c));
}
else{
sb.append(Character.toUpperCase(c));
}
}
System.out.println(sb.toString());
}
}
package com.csh.helloworld;
import java.util.Random;
public class Chapter5_2 {
public static void main(String[] args) {
Random r=new Random();
for(int i=0;i<5;i++){
System.out.println(20+r.nextInt(10));
}
}
}