南京城乡建设局网站首页广州 创意的网站设计

当前位置: 首页 > news >正文

南京城乡建设局网站首页,广州 创意的网站设计,如何建设网站简介,型云网站建设StringBuffer类 String和StringBuffer的区别 String 不可变性#xff1a;String 类是不可变的#xff0c;这意味着一旦创建了一个 String 对象#xff0c;其值就不能改变。每次对 String 进行修改#xff08;如连接、替换等操作#xff09;都会产生新的 String 对象String 类是不可变的这意味着一旦创建了一个 String 对象其值就不能改变。每次对 String 进行修改如连接、替换等操作都会产生新的 String 对象原来的对象不会被改变。 线程安全性由于 String 的不可变性它是线程安全的可以被多个线程共享而无需担心数据一致性的问题。 性能因为每次修改都会创建新的对象所以在频繁进行字符串操作时String 的效率较低。
StringBuffer 可变性StringBuffer 是一个可变的字符序列可以被多次修改而不创建新的对象。这意味着如果需要对字符串进行大量的修改操作使用 StringBuffer 比使用 String 更加高效。 线程安全性StringBuffer 是线程安全的。它的方法都是同步的即加了 synchronized 关键字这使得 StringBuffer 可以在多线程环境中安全地使用但是也导致了它的性能相比非线程安全的 StringBuilder 要差一些。 性能当需要在一个单线程环境下进行大量字符串操作时StringBuffer 仍然不是最优选择因为它的线程安全特性会带来额外的开销。在这种情况下应该考虑使用 StringBuilder。
使用场景 使用 String当你不需要修改字符串内容时或者修改次数非常少的时候使用 String 是合适的。此外String 的不可变性和线程安全性使其成为多线程环境中的首选。 使用 StringBuffer如果你的应用程序需要在多线程环境中频繁地修改字符串那么 StringBuffer 是一个很好的选择因为它提供了线程安全的操作。 使用 StringBuilder对于单线程环境下的频繁字符串操作推荐使用 StringBuilder因为它比 StringBuffer 性能更高同时又保持了可变性的优点。 StringBuffer介绍 String类自身有一个最大的缺陷内容一旦声明则不可改变JDK为了方便用户修改字符串内容提供了StringBuffer类 StringBuffer类不像String类那样可以直接通过声明字符串常量方式进行实例化而是必须像普通类对象使用一样首先通过构造方法进行对象实例化而后才可以调用方法进行处理。 No.方法类型描述1public StringBuffer()构造创建一个空的StringBuffer对象2public StringBuffer(String str)构造将接受到的String内容变为StringBuffer内容3public StringBuffer append(数据类型 变量)普通内容连接等价于String中””操作4public StringBuffer insert(int offset,数据类型 变量)普通在指定索引位置处插入数据5public StringBuffer delete(int start,int end)普通删除指定索引范围之内的数据6public StringBuffer reverse()普通内容反转 示例 public class JavaDome{public static void main(String args[]){StringBuffer buf new StringBuffer(hello);change(buf);String data StringBuffer.toString();  //将StringBuffer变为String实例System.out.println(data);} } ​ public static void change(StringBffer temp){temp.append(world).append(!); } 实际上使用 String strB helloworld! 程序编译后的结果全部等价于以下操作 StringBuffer buf new StringBuffer(); buf.append(hello).append(world).append(!); 所有的编译之后都变成了StringBuffer中append()方法 除了可以修改内容的能力外还提供了一些String类所不具备的方法 插入删除数据 StringBuffer buf new StringBuffer(); buf.append(hello world).delete(6,12).insert(6,!); 字符串反转 StringBuffer buf new StringBuffer(); buf.append(hello); System.out.println(buf.reverse()); CharSequence接口 常见子类 String、StringBuffer、StringBuilder 常见的方法 No.方法类型描述1public char charAt(int index)普通获取指定索引字符2public int length()普通获取字符串长度3public CharSequence subSequence(int start,int end)普通截取部分字符串 使用示例 CharSequence str hello; //子类实例向父类接口转型 CharSequence sub str.subSequence(4,8); //截取部分子字符串 ​ //String类是CharSequence接口子类所以本程序利用对象向上转型的操作通过字符串的匿名对象实现了CharSequece父接口对象实例化随后调用subSequence()方法实现了子字符串的截取操作 注: 开发中优先考虑String类只有在频繁操作修改这一操作中才会考虑使用StringBuffer或StringBuilder AutoCloseable接口 该接口的主要功能是结合异常处理结构在资源操作完成后实现自动释放功能 public interface AutoCloseale{public void close() throws Exception;//资源释放 } Runtime类 Runtime描述的是运行时的状态在每一个JVM进程中都会提供唯一的一个Runtime类实例化对象。 可以利用Runtime类对象获取与JVM有关的运行时状态。 由于Runtime类中只存在一个实例化对象所以在Runtime类中默认将默认将其构造方法封装单例设计模式这样就必须用Runtime类中提供的getRuntime()方法(为static方法)来获取实例化对象随后就可以获取一些系统相关的信息。 No.方法类型描述1public static Runtime getRuntime()普通获取Rintime类的实例化对象2public int avaliableProcessors()普通获取可用的CPU处理器数量3public long maxMemory()普通取得最大可用内存量4public long totalMemory()普通取得总共可用内存量5public long freeMemory()普通取得空闲内存量6public void gc()普通运行垃圾收集器释放垃圾空间 获取本机CPU处理器数量 public class JavaAPIDemo{public static void main(String args) throws Exception{Runtime runtime Runtime.getRuntime(); //获取Runtime实例化对象System.out.println(runtime.avaliableProcessors()); //获取处理器数量} } 注 long型数据主要有两种情况表示文件大小和表示日期时间 System类 No.方法类型描述1public static void arraycopy(Object src,int srcPos,Object destPos,int length)普通数组复制操作2public static long currentTimeMillis()普通取得当前的日期时间以long型数据返回3public static void gc()普通执行GC操作 Cleaner类 在java中对象的整个生命周期大致可以分为七个阶段 创建阶段(Created) 应用阶段(In Use) 不可见阶段(Invisible) 不可达阶段(Unreachable) 收集阶段(Collected) 终结阶段(Finalized) 释放阶段(Free) Math数学计算 程序开发本质就是数据处理java提供有java.lang.Math类来帮助开发者进行常规的数学计算处理。 例如四舍五入三角函数乘方处理等 Math.abs(-10.9)  //绝对值 10.9 Math.max(10.2,20.3) //获取最大值 Math.log(5) //对数1.60943… Math.round(15.1) //四舍五入 15 Math.round(-15.5) //四舍五入 -15 Math.round(-15.51) //四舍五入 -16 Math.pow(10.2,20.2) //乘方:2.36441… Rondom随机数 import java.util.Random 设置一个随机数的范围边界就可以随机生成不大于此边界范围的正整数 方法(随机生成正整数)public int nextInt(int bound) Random rand new Random(); rand.nextInt(100); 大数字处理类 BigInteger No.方法类型描述1public BigInterger(String val)构造将一个字符串变成BigInterger类型数据2public BigInterger add(BigInterger val)普通加法计算3public BigInterger substract(BigInterger val)普通减法计算4public BigInterger multiply(BigInterger val)普通乘法计算5public BigInterger divideBigInterger val)普通除法计算6public BigInterger max(BigInterger val)普通返回两个大数字中的最大值7public BigInterger min(BigInterger val)普通返回两个大数字的最小值8public BigInteger[] divideAndRemainder(BigInterger val)普通除法操作数组的第一个元素为除法的商第二个元素为除法的余数 BigDecimal No.方法类型描述1public BigDecimal(double val)构造将double表示形式转换为BigDecimal2public BigDecimal(int val)构造将int表示形式转换为BigDecimal3public BigDecimal(String val)构造将字符串表示形式转换为BigDecimal4public BigDecimal add(BigDecimal augend)普通加法计算5public BigDecimal subtract(BigDecimal subtrahend)普通减法计算6public BigDecimal multiply(BigDecimal multiplicand)普通乘法计算7public BigDecimal divide(BigDecimal divisor)普通除法计算8public BigDecimal divide(BigDecimal divisor,int scale,RoundingMode roundingMode)普通除法计算设置保留下小数位与进位模式 Date日期处理类 No.方法类型描述1public Date()构造实例化Date对象2public Date(long date)构造将数字变为Date类对象long为日期时间数据3public long getTime()普通将当前的日期时间变为long型 SimpleDateForrmat日期格式化 正则表达式 Arrays数组操作类 import java.util.Arrays public class JavaApIDemo{public static void main(String[] args) throws Exception{int dataA[] new int[] {1,2,3};int dataB[] new int[] {1,2,3};System.out.println(Arrays.compare(dataA,dataB));System.out.println(Arrays.equals(dataA,dataB));int data[]C new int[10];Arrays.fill(dataC,3); //内容填充System.out.println(Arrays.toString(dataC)); //数组转为字符串输出} } No.方法类型描述1public static void sort(数据类型[] 变量)普通数组排序2public static int binarySearch(数据类型[] 变量数据类型 key)普通利用二分查找算法进行数据查询3public static int compare(数据类型[] 变量数据类型[] 变量)普通比较两个数组的大小返回3类结果大于(1)、小于(-1)、等于(0)4public static boolean equals(数据类型[] 变量数据类型[] 变量)普通数组相等判断5public static void fill(数据类型[] 变量数据类型 变量)普通数组填充6public static String toString(数据类型[] 变量)普通数组转为字符串 异常结构 以后慢慢遇到再补充吧