1.String类(equals比较内容,)
int i=2;
String s="2";//应用类型,就是字符串对象,有方法,都在java.lang包中
//使用构造方法
String s= new String();
String s1= new String("xxx");
char[] c={'a','b','c'};
//常用的方法
trim();//去收尾空格
toLowerCase();//小写
s.charAt(5);//5号位置的字符,从0开始
length()//长度
indexOf('c');//求下标
lastIndexOf('c')//最后一个c的下标
//字符串的转换操作,转数组...
char[] charArray=s.toCharArray() //转为字符数组
//int转String
String.valueOf(12);//"12",是一个重载的参数,就可以传入不同的参数
//字符串替换
String s="itaa";
s.replace("it","xxit");//替换的字符,替换后的字符
//去除所有空格
s.replace(" ","");//!!!
//字符串的判断 !!!
s.startsWith("Str");//是否以这个开始
s.endsWith("ng")//结尾
s.contains("tri")//包含怎么字符串
String s5=""; //String s5=null;用这个方法会报空指针异常
s1.isEmpty()//判断是否为空
//判断 equals() !!!
String s1="xxx";
String s2="xxx";
String s3=new String("xxx");
String s4=new String("xxx");
s1.equals(s2);//比较的是内容,在string常量池
s1==s2 //比较的是地址
s3.equals(s4);//比较内容 true
s3==s4 // 对象不同地址不同 false
//截取字符串
str.subString(4); //从index为4开始截取 4后面的字符串(包括第4个)
str.subString(4,6);//从4到6的索引,不包括6
//分割字符串
String str="ctr-bb-cc"
String[] arr=str.spilt("-");//分割出 str和bb和cc,像刀一样切出来 2刀3段
for(arr: item)
sout(item);
2.StringBuffer(区分,内容和长度都可以改变,不会产生新stringbuffer对象)(用于反转和插入更新)(直接写函数可以改变原来的对象)
//直接改自己,上面会返回对象
//例子
StringBuffer sb=new StringBuffer();
sb.append("abc");
sb.insert(2,"123");//index为2,插入ab123c
//删除
StringBuff sb=new StringBuffer("123");
sb.insert(0,2);// [0,2]
sb.insert(0,sb.length());//相当于直接清空
//修改
StringBuffer sb=new StringBuffer("123");
sb.setCharAt(1,'p'); //替换字符 1p3
sb.replace(0,2,"qq"); //[0,2) qq3
sb.reverse(); //3qq
//区别 string是覆盖的equals方法
//,stringbuffer是object的方法,造出来的对象等于之前后面的对象
3.StringBuilder 一组可以改变的字符序列(了解)
//equals比较地址
new StringBuilder(“aaa”)
sb.charAt(1);
sb.append(“”);
replace();
replace();
4.空指针
String aa=null;
aa.concat("aa"); //没有指向地址,就没有这个方法(调用会,连接不会)
//已经定义的字符串不能被修改, 另外给别人连接,字符串不改变
String aa="10"
fun1(aa);
void func1(String aa){
aa+="100";//会开辟新的分区存储
}
5.比较3个字符串
s1.compareTo(s2); //返回>0 =0 <0
s3.compareTo(s); //java和javae,更多字符更大
//统计某个字符出现的个数
for(int i=s.indexOf('l');i<=s.lastIndexOf('l');i++){
i=s.indexOf('l',i);//直接跳到有l的地方
count++;
}
6.包装类(包装成类,有构造方法,…其他方法继承object有toString方法)(基本类型没有方法)(都有parsexxx(String)方法)
(无法继承)
char Character
int Integer
其他首字母大写
装箱 : 基本数据类型-->引用类型
拆箱 引用类型--->基本类型
//Integer还拥有其他方法除了object的方法
toBinaryString(int i);//二进制的string返回
parseInt("111"); //把String转int类型
Integer num=20;//自动装箱
int a=num +10;//自动拆箱
7.System与Runtime类
Scanner scanner=new Scanner(System.in);//系统的输入流
String xx=scanner.next();//字符串
nextInt();
// System类
System.exit(0); //非0 表示停止jvm
.gc(); //jvm自动垃圾回收,调用这个会立即回收
.currentTimeMillis();//返回当前毫秒数 1990.1.1开始 时间戳
//系统的属性
System.Properties()//写错
//Runtime
Runtime rt =Runtime.getRuntime();
rt.availableProcessors()//处理器格式
rt.freeMemory/1024/1024 //得到空闲内存
rt.maxMemory/1024/1024 //最大可用内存
8.Math
Math.abs(-1)
System.out.println(Math.ceil(-0.05));//-0.00
.ceil(5.6)//向上取值 6 不管多少
.ceil(5.2) 6
.floor(-4.2) // -5
.floor(4.2) // 4
.round(4.6) //四舍五入 5
.round(-4.6)// -5
.max(2.1,-1) //求最大值
.min(10,1)//最小值
(int)(Math.random()*100) //随机数 double 0-0.1
.PI
.E //数学的E=2.7....
9.Radom类
Radom r=new Radom();//伪随机数
r.nextInt(10); //[0,100)
new Radom(10);//随机数种子,种子固定结果固定
10.Date(很多过期)
Date d=new Date(1000000);//传入时间戳
Date d=new Date(1000000); //一般用构造方法,看系统时间
11.Calender类日历类 对日期和时间操作(抽象类)
Calender c=Calender.getInstance();
c.set(2021,7,8);
c.add(Calender.DATE,100); //延长时间,竣工时间
c.get(Calender.YEAR);//获取年
.MONTH //月份 0-11,!!!必须还要-1
.DATE //得到这一月多少天
//得到11月有多少天
Calendar calendar= Calendar.getInstance();
calendar.set(2022,11,1);//相当于12月-1天
calendar.add(Calendar.DATE,-1);
System.out.println(calendar.get(Calendar.DATE));