基础捡起来,以前学校里面学的现在重新认识下。
String 、StringBuffer和 StringBuilder 参考链接:String、StringBuffer与StringBuilder之间区别
三者相同之处:都是处理字符串
区别:
类
String
StringBuffer
StringBuilder
描述
String类是常量,一旦创建无法改变。String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间
StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量
可变类,速度更快
可变性
不可变
可变
可变
安全性
线程安全
线程不安全
性能
多线程操作字符串
单线程操作字符串
1、String是字符串常量,一旦创建无法改变。
Strings="hello";s=s+" world";
内存变化:
2、StringBuffer和StringBuilder
StringBuffer s = new StringBuffer("hello");s.append(" world");
跟上面内存不同之处在于,字符串的变化都在同一个地址,不会造成浪费。
3、equals三者用法不同,String.equals可以比较字符串的值因为其重写了该方法,而其它两个类没有重写,比较的话是比较object。
4、三者常用方法:
1 2 String:length()、equals()、charAt()、indexOf()、toUpperCase()、startsWith()、endsWith()、contains()等 StringBuffer、StringBuilder:length()、append()、insert()、delete()、deleteCharAt()、replace()等
System类与Runtime类 System System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。它不能被实例化 。
System类提供的System包括
标准输入System.in、标准输出System.out和错误输出流System.err;
访问外部定义的属性getenv和环境变量getProperties;
一种加载文件和库的方法loadLibrary;
用于快速复制阵列的一部分的实用方法arraycopy。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 public void SystemTest() { //标准输入流和输出流 System.out.println("请输入信息:"); Scanner scanner = new Scanner(System.in); System.out.println(scanner.nextLine()); //获取系统信息 System.out.println(System.getenv()); System.out.println(System.getenv("LOCALAPPDATA")); //获取Java环境信息 System.out.println(System.getProperties()); System.out.println(System.getProperty("java.vm.version")); //获取当前时间 System.out.println(System.currentTimeMillis()); System.out.println(System.nanoTime()); // 将指定源数组中的数组从指定位置复制到目标数组的指定位置 int[] src = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] dest = new int[10]; System.arraycopy(src, 2, dest, 1, 4); for (int i : dest) { System.out.print(dest[i] + "-"); //0-0-0-0-0-0-4-5-6-0- } //加载库 System.out.println(" Process of Library Loading "); Runtime.getRuntime().loadLibrary("C:/Windows/system/FP30TXT.dll"); System.out.println("Process of Library Loading completion"); //运行垃圾回收器 System.gc(); //终止虚拟机运行 System.exit(0); }
Runtime Runtime类代表Java程序的运行时环境 ,可以访问JVM的相关信息,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取 与之关联的Runtime对象。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 public void RuntimeTest() throws IOException { //获取当前程序的环境 Runtime runtime = Runtime.getRuntime(); //返回处理器个数 System.out.println(runtime.availableProcessors()); //执行命令 String[] cmd = new String[]{"ipconfig","/a"}; Process process = runtime.exec(cmd); //取得命令结果的输出流,然后用一个读输出流类去读 InputStreamReader isr=new InputStreamReader(process.getInputStream()); //用缓冲器读行 BufferedReader br=new BufferedReader(isr); String line; //直到读完为止 while((line=br.readLine())!=null) { System.out.println(line); } //获取JVM可用内存 System.out.println(runtime.freeMemory()); //获取JVM尝试使用的最大内存 System.out.println(runtime.maxMemory()); //获取JVM内存总量 System.out.println(runtime.totalMemory()); }
Math类和Random类 Math:提供常用数学方法 1 2 3 4 5 6 7 8 9 绝对值:ads() 取整:ceil()、floor() 四舍五入:round() 随机数:random() 最大最小值:max()、min() 三角函数:sin()、cos()、tan() 指数:exp()、power() 对数:log()、ln() ...
Random 除了Math类可以生成随机数之外,还有更加专业的Random类可以使用,Random有两种构造方法,分别是无参构造函数,以long为参数的构造方法。即:
1 2 Random r1=new Random(); Random r2=new Random(long seed);
除了Character、Short、Byte之外,所有类型都可以使用Random类产生:
1 2 3 4 5 6 nextInt() //产生一个随机整数 nextInt(int n) //产生一个大于等于0小于n的整数 nextFloat() //产生一个浮点数 nextDouble() // nextLong() //产生一个长整数 nextBoolean() //产生一个布尔值
UUID (Universally Unique Identifier):通用唯一识别码,是一种软件建构的标准
包装类(Boolean,Character,Byte,Short,Integer,Long,Float,Double) 包装类 将基本数据类型的值包装为引用数据类型的对象。
基本类型
包装类
boolean
Boolean
char
Character
byte
Byte
short
Short
int
Integer
long
Long
float
Float
double
Double
装箱:将基本数据类型的值转为引用数据类型.
1 2 int a = 1; Integer i = a;//自动装箱
拆箱:将引用数据类型的值转为基本数据类型.
1 2 Integer i = new Integer(1); int a = i;//自动拆箱
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 public void DateTest(){ Date date = new Date(); System.out.println(date); // Full格式的日期格式器对象 DateFormat fullFormat = DateFormat.getDateInstance(DateFormat.FULL); // Long格式的日期格式器对象 DateFormat longFormat = DateFormat.getDateInstance(DateFormat.LONG); // MEDIUM格式的日期/时间 格式器对象 DateFormat mediumFormat = DateFormat.getDateTimeInstance( DateFormat.MEDIUM, DateFormat.MEDIUM); // SHORT格式的日期/时间格式器对象 DateFormat shortFormat = DateFormat.getDateTimeInstance( DateFormat.SHORT, DateFormat.SHORT); // 下面打印格式化后的日期或者日期/时间 System.out.println("当前日期的完整格式为:" + fullFormat.format(date)); System.out.println("当前日期的长格式为:" + longFormat.format(date)); System.out.println("当前日期的普通格式为:" + mediumFormat.format(date)); System.out.println("当前日期的短格式为:" + shortFormat.format(date)); // 获取表示当前时间的Calendar对象 Calendar calendar = Calendar.getInstance(); // 设置指定日期,将MONTH设为13 //默认lenient模式,月份可以设置为13,加一年 calendar.set(Calendar.MONTH, 13); System.out.println(calendar.getTime()); // 开启non-lenient模式 calendar.setLenient(false); calendar.set(Calendar.MONTH, 13); } //输出结果 Wed Jun 02 17:30:27 CST 2021 当前日期的完整格式为:2021年6月2日 星期三 当前日期的长格式为:2021年6月2日 当前日期的普通格式为:2021-6-2 17:30:27 当前日期的短格式为:21-6-2 下午5:30 Wed Feb 02 17:30:27 CST 2022
参考链接:
String、StringBuffer与StringBuilder之间区别
狂神说–javase08–常用类学习
https://blog.csdn.net/weixin_43915808/article/details/91474659
Java System与Runtime类常用方法
https://www.cnblogs.com/lbrs/p/11067221.html