day021--简略

1.常用类

1.1StringBuffer类

通过追加实现字符串的拼接

有以下方法:

append----是在上一个字符串的尾部进行拼接

insert----是在字符串的指定下标进行拼接

reverse----倒置指定字符串

delete----删除指定下标范围的字符串内容

package com.qfedu.a_zht;public class Demo2 {public static void main(String[] args) {StringBuffer sb = new StringBuffer();//sb.append("xixi");//追加sb.append("hehe");sb.append("heihei");sb.insert(3,"fhgh");System.out.println(sb);//倒写System.out.println(sb.reverse());System.out.println(sb.delete(1,3));}
}

String,StringBuffer和StringBuilder三者的区别
1.String为固定长度的字符串,StringBuilder和StringBuffer为变长字符串;
2.stringBuffer是线程安全的,StringBuilder是非线程安全的;
3.StringBuffer和StringBuilder的默认初始容量是16,可以提前预估好字符串的长度,进一步减少扩容带来的额外开销。
4.StringBuffer每次获取toString都会直接使用缓存区的 toStringCache值来构造一个字符串。StringBuilde 则每次都需要复制一次字符数组,再构造一个字符串。所以说StringBuffer利用缓存区进行了部分优化操作。
  StringBuffer中比StringBuilder多了一个toStringCache字段,字段上的解释是返回最后一次toString的缓存值,一旦StringBuffer被修改就清除这个缓存值。看到这里有的小伙伴可能就有疑问了,为什么StringBuilder不使用这样的一个字段呢,参考了其它博客我了解到,StringBuffer是线程安全的,并且其方法都使用了synchronized关键字,性能与StringBuilder相比当然大打折扣,线程安全的应用场景是多线程,那么访问的数据量肯定比单线程环境要大的多,所以说这个缓存机制可以平衡StringBuffer的性能。

2.Math下面的方法

PIπ值
E单距阵列
max()获取最大值
min()获取最小值
abs()获取绝对值
random()获取0~1的随机数
round()四舍五入取值
floor()向下取整
ceil()向上取整
package com.qfedu.b_zht;public class Demo2 {public static void main(String[] args) {System.out.println(Math.PI);System.out.println(Math.E);System.out.println(Math.max(25,20));System.out.println(Math.min(99,32));System.out.println(Math.abs(-99));System.out.println(Math.random());System.out.println(Math.round(45.2));System.out.println(Math.floor(45.9));System.out.println(Math.ceil(52.2));}
}

3.Calendar下面的方法

package com.qfedu.b_zht;import java.util.Calendar;
import java.util.Date;public class Demo3 {public static void main(String[] args) {Calendar instance = Calendar.getInstance();int i = instance.get(Calendar.YEAR);System.out.println(i);System.out.println(instance.get(Calendar.MONTH));System.out.println(instance.get(Calendar.DAY_OF_MONTH));System.out.println(instance.get(Calendar.DAY_OF_WEEK));System.out.println(instance.get(Calendar.DAY_OF_YEAR));System.out.println(instance.get(Calendar.HOUR));System.out.println(instance.get(Calendar.MINUTE));System.out.println(instance.get(Calendar.SECOND));Date time = instance.getTime();System.out.println(time);//开发常用//将日期转化为long类型的数据,可用于比较SimpleDateFormat spf = new SimpleDateFormat("yyyy-MM-dd");String str = "2004-05-04";//转化的格式,注意要对parse进行异常抛出long time = spf.parse(str).getTime();System.out.println(time);}
}

4.枚举(enum)

注意:

java中的枚举是一个特殊的类,是用来表示常量的

语法格式

public enum 枚举类名 {//下面写常量,常量之间使用逗号隔开}

枚举的入门

package com.qfedu.a_zht;public enum Color {RED ,GREEN, BLUE
}
package com.qfedu.a_zht;public class Demo3 {public static void main(String[] args) {//都是常量Color green = Color.GREEN;System.out.println(green);Color red = Color.RED;System.out.println(red);Color blue = Color.BLUE;System.out.println(blue);}
}

枚举在switch中的用法

package com.qfedu.a_zht;public class Demo4 {public static void main(String[] args) {Color red = Color.RED;switch (red) {//可以作为判断表达式case RED:System.out.println("红色");break;case GREEN:System.out.println("绿色");break;case BLUE:System.out.println("蓝色");break;}}
}

枚举下面的方法

values()枚举中所有的值
ordinal()可以找到每个枚举类中常量的引用
valueof()返回值是指定字符串的枚举常量
package com.qfedu.a_zht;public class Demo5 {public static void main(String[] args) {//获取枚举中所有的值,并存入数组中//通过增强for循环进行遍历Color[] values = Color.values();for (Color value : values) {//value.ordinal()  获取对应常量的索引下标System.out.println(value + "的索引:" + value.ordinal());}//valueOf() 将常量转化为字符串,本质与Color.RED没有区别Color red = Color.valueOf("RED");Color red1 = Color.RED;System.out.println(red);System.out.println(red1);}
}

开发案例

package com.qfedu.b_zht;enum Product{UP(0,"上架"),DOWN(1,"下架");private Integer code;private String message;Product(int code, String message) {this.code= code;this.message= message;}public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}
}
public class Demo1 {public static void main(String[] args) {System.out.println(Product.UP.getCode());//0System.out.println(Product.UP.getMessage());//上架System.out.println(Product.DOWN.getCode());//1System.out.println(Product.DOWN.getMessage());//下架}
}

5.包装类

在实际开发时,开发中的实体类都是包装类

而八大基本数据类型,自然也有自己的包装类

基本数据类型对应包装类
byteByte
shortShort
intInterget
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

【重点】:

​ 1.自从JDK1.5之后,有拆箱和装箱

​ 自动装箱:将基本数据类型转为包装类

​ 自动拆箱:将包装类转为基本数据类型

​ 2.***Value();将包装类转为基本数据类型

​ 3.toString();将基本数据类型转为字符串

​ 4.parse***();将字符串类型的数据转为基本数据类型【以后开发用】

​ 5.valueOf();将基本数据类型转为包装类类似手动装箱

package com.qfedu.b_zht;public class Demo5 {public static void main(String[] args) {//Integer的取值范围System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);//int类型的数据会自动封箱为Integer,也就是他的封装类int a = 20;Integer a1 = a;System.out.println(a1);//同样,Integer也会自动拆箱为int类型Integer b = 10;int b1 = b;System.out.println(b1);//其他几个数据类型也和这个格式相同Boolean c = true;//常规写法boolean b2 = c.booleanValue();//可以自动转化boolean c1 = c;//重点  toString  将基本数据类型转化为字符串String s = Integer.toString(23);//八大基本数据类型均可以String s1 = Double.toString(52.3);//parseInt(); parseDouble(); parseFloat();parseByte()//以上是将字符串类型转化为对应的基本数据类型double v = Double.parseDouble("63.2");//格式没有报错,证明转化完成//valueOf 将基本数据类型转化为字符串int d = 34;Integer integer = Integer.valueOf(d);//实际这个是代码可以自动完成的,没必要用}
}

6.Ramdom类

用于处理随机数

package com.qfedu.e_random;import java.util.Random;public class Demo1 {public static void main(String[] args) {Random random = new Random();//分别对应相应的数据类型System.out.println(random.nextInt());System.out.println(random.nextInt(66));//0~65,并不包括66System.out.println(random.nextFloat());System.out.println(random.nextDouble());System.out.println(random.nextBoolean());}
}

7.System类

System是系统的意思,自然功能就是调用系统相关的内容

package com.qfedu.b_zht;import java.util.Properties;
import java.util.Scanner;public class Demo4 {public static void main(String[] args) {//可以获取当前的时间 是从1970年1月1日开始的long类型的数据long l = System.currentTimeMillis();//打印的是当前的时间//可以作为输入流Scanner scanner = new Scanner(System.in);//在控制台自行输入//获取系统的东西  Properties properties = System.getProperties();//系统的名字System.out.println(properties.get("os.name"));//系统的版本System.out.println(properties.get("os.version"));//管理员的名字System.out.println(properties.get("user.name"));//java的版本System.out.println(properties.get("java.version"));}
}

8.Date类

功能:用于处理日期,但很多方法现在已经弃用

package com.qfedu.a_zht;import java.util.Date;public class Demo7 {public static void main(String[] args) {Date date = new Date();//Tue Aug 09 19:11:35 GMT+08:00 2022System.out.println(date);//获取年份,但需要加上1900才是正确值System.out.println(date.getYear() + 1900);//2022//获取月份,要在基础上加1System.out.println(date.getMonth() + 1);//8//获取当前小时System.out.println(date.getHours());//19//获取当时分钟System.out.println(date.getMinutes());//15//获取当前秒数System.out.println(date.getSeconds());//20}
}

9.Runtime类(非重点)

package com.qfedu.b_zht;import java.io.IOException;public class Demo6 {public static void main(String[] args) throws IOException {//获取对象Runtime runtime = Runtime.getRuntime();//功能是可以启动电脑上有的任何软件//需要获取软件的储存位置和对应地址runtime.exec("D:\\eclipse\\eclipse.exe");//返回Java虚拟机将尝试使用的最大内存量   字节数System.out.println(runtime.maxMemory()/1024/1024);//3561//返回Java虚拟机中的可用内存量     字节数System.out.println(runtime.freeMemory()/1024/1024);//236//返回Java虚拟机中的内存总量  字节数System.out.println(runtime.totalMemory()/1024/1024);//241}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部