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.包装类
在实际开发时,开发中的实体类都是包装类
而八大基本数据类型,自然也有自己的包装类
| 基本数据类型 | 对应包装类 |
|---|---|
| byte | Byte |
| short | Short |
| int | Interget |
| long | Long |
| float | Float |
| double | Double |
| char | Character |
| boolean | Boolean |
【重点】:
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}
}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
