stringbuilder

JAVA 系列——>StringBuilder类

谁说胖子不能爱 提交于 2020-01-20 04:47:29
字符串拼接问题 由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。例如: public static void main ( String [ ] args ) { String s = "Hello" ; s + = "World" ; System . out . println ( s ) ; } 在API中对String类有这样的描述:字符串是常量,它们的值在创建后不能被更改。 根据这句话分析我们的代码,其实总共产生了三个字符串,即 “Hello” 、 “World” 和 “HelloWorld” 。引用变量s 首先指向 Hello 对象,最终指向拼接出来的新字符串对象,即 HelloWord 。 由此可知,如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。为了解 决这一问题,可以使用 java.lang.StringBuilder 类。 StringBuilder概述 查阅 java.lang.StringBuilder 的API,StringBuilder又称为可变字符序列,它是一个类似于 String 的字符串缓冲 区,通过某些方法调用可以改变该序列的长度和内容。 原来StringBuilder是个字符串的缓冲区,即它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进

一个有趣的问题---java.lang.String的+到底做了什么

喜欢而已 提交于 2020-01-18 18:59:44
前段时间同学问了我一个有趣的问题: String str3 = "what"; String str4 = str3 + " a nice day"; //运行时, + 相当于 new,所以堆中会有 "what a nice day"对象,常量池中会有"what"," a nice day"两个对象,而不会有 "what a nice day"对象。 //这句话大佬们看看对不对啊,我怎么感觉不对啊 //常量池不会有"what a nice day" 对象吗? 看完这个问题,说实话我也是有点懵的,我只是知道 "what a nice day"不会在常量池,但是不知道具体的原因,后来问了同事说 + 号是调用了 StringBuffer 的append 方法。 我去证实了,发现确实调用了 append 方法,但是当时没有调用toString()方法,我很疑惑。(最后经过证实,是StringBuilder的append 方法,不是StringBuffer)。 代码验证: public static void main(String[] args) { //#1 String str1 = "what"; //#2 String str2 = str1 + " a nice day"; //#3 System.out.println("what a nice day".equals(str2

为什么 StringBuilder 不是线程安全的?

此生再无相见时 提交于 2020-01-17 11:54:12
面试官:StringBuilder和StringBuffer的区别在哪? 我:StringBuilder不是线程安全的,StringBuffer是线程安全的 面试官:那StringBuilder不安全的点在哪儿? 我:。。。(哑巴了) 在这之前我只记住了StringBuilder不是线程安全的,StringBuffer是线程安全的这个结论,至于StringBuilder为什么不安全从来没有去想过。 分析 在分析这个问题之前我们要知道StringBuilder和StringBuffer的内部实现跟String类一样,都是通过一个char数组存储字符串的,不同的是String类里面的char数组是final修饰的,是不可变的,而StringBuilder和StringBuffer的char数组是可变的。 首先通过一段代码去看一下多线程操作StringBuilder对象会出现什么问题。StringBuffer 和 StringBuilder 的 3 个区别!这篇也要看下。 public class StringBuilderDemo { public static void main(String[] args) throws InterruptedException { StringBuilder stringBuilder = new StringBuilder(); for

Javascript with in stringbuilder

我怕爱的太早我们不能终老 提交于 2020-01-17 07:48:19
问题 This code I converted as per needed http://jquerymsgbox.ibrahimkalyoncu.com/ Hi all I have written the following code to display an alert public static string ShowAlertMessage(string pHeader, string pError, Page page) { //StringBuilder sb = new StringBuilder(); StringBuilder strScript = new StringBuilder(); strScript.Append("<script type='text/javascript' src='Scripts/jquery-1.4.1.js'>"); strScript.Append("</script>"); strScript.Append("<script type='text/javascript' src='Scripts/jquery

How to append a new line to StringBuilder in Kotlin

不问归期 提交于 2020-01-16 09:34:52
问题 In Java, Following code is one way to achieve. StringBuilder result = new StringBuilder(); result.append(someChar); result.append("\n"); A better way to do it in kotlin? 回答1: Kotlin 1.3+ provides Extension Function to ease the task. Usage: val strBuilder = StringBuilder(); strBuilder.appendln("some text"); 来源: https://stackoverflow.com/questions/57705138/how-to-append-a-new-line-to-stringbuilder-in-kotlin

shiro解析ini文件

一世执手 提交于 2020-01-16 04:00:22
来吧,看看shiro是怎么解析ini文件的,这里假设ini文件在classpath下,名字叫做shiro.ini Factory<org.apache.shiro.mgt.SecurityManager> factory = new IniSecurityManagerFactory("classpath:shiro.ini"); shiro.ini [users] zhang=123 wang=123 [main] #指定securityManager的authenticator实现 authenticator=org.apache.shiro.authc.pam.ModularRealmAuthenticator securityManager.authenticator=$authenticator #指定securityManager.authenticator的authenticationStrategy allSuccessfulStrategy=org.apache.shiro.authc.pam.FirstSuccessfulStrategy securityManager.authenticator.authenticationStrategy=$allSuccessfulStrategy 一、加载ini配置文件 1 public static

Java2019最新面试题

落爺英雄遲暮 提交于 2020-01-15 17:19:38
2019最新整理JAVA面试题附答案 作者:Jack 包含的模块: 本文分为十九个模块,分别是:Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM 如下图所示: 共包含 208 道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单 ==================================================== 一. Java 基础模块 1.JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。 2.== 和 equals 的区别是什么

获取汉字拼音首字母

大城市里の小女人 提交于 2020-01-15 05:07:10
方法一:功能简单,只能得到最常用的汉字,不常用的得不到 方法一 方法二:可以查到常用的20000多个汉字的。 方法二 private static string ToChineseSpell( string strText) { if (strText == null || strText.Trim().Length == 0 ) { return "" ; } // 汉字拼音首字母列表 本列表包含了20902个汉字 StringBuilder sbChineseFirstPY = new StringBuilder(); sbChineseFirstPY.Append( " YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJ " ); sbChineseFirstPY.Append( " HHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPC " ); sbChineseFirstPY.Append( "

Append 'List' items to StringBuilder

我的梦境 提交于 2020-01-14 20:19:10
问题 I tried to append the items in a List<string> to a StringBuilder with LINQ: items.Select(i => sb.Append(i + ",")); I found a similar question here which explains why the above doesn't work, but I couldn't find an Each of ForEach or anything similar on List which I could use instead. Is there a neat way of doing this in a one-liner? 回答1: You could use a simple foreach loop. That way you have statements which modify the StringBuilder, instead of using an expression with side-effects. And

Append 'List' items to StringBuilder

江枫思渺然 提交于 2020-01-14 20:14:20
问题 I tried to append the items in a List<string> to a StringBuilder with LINQ: items.Select(i => sb.Append(i + ",")); I found a similar question here which explains why the above doesn't work, but I couldn't find an Each of ForEach or anything similar on List which I could use instead. Is there a neat way of doing this in a one-liner? 回答1: You could use a simple foreach loop. That way you have statements which modify the StringBuilder, instead of using an expression with side-effects. And