博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编写高质量代码改善java程序的151个建议——[52-57]String !about Strin
阅读量:7064 次
发布时间:2019-06-28

本文共 4396 字,大约阅读时间需要 14 分钟。

hot3.png

原创地址:     (泥沙砖瓦浆木匠),需要转载的,保留下! Thanks

Although the world is full of suffering , it is full also of the overcoming of it.  -Hellen Keller   

相信自己看得懂就看得懂了,相信自己能写下去,我就开始写了.其实也简单—泥沙砖瓦浆木匠

Written In The Font

Three pieces[52-3]:

        

        

        

        

     

Suggestion:Use the String direct value for the assignment

Do u knw the String Object ? If u do some projects,u can see the String is used usually. A object is created by the key word : new.Therefore , we can create a String Obejct by :“ 

String str3 = new String("Jeff"); ” .

Here, in my word,using the String direct value for the assignment is a better way.

 

for example:

复制代码

public class String01 {    public static void main(String[] args)     {        String str1 = "Jeff";        String str2 = "Jeff";        String str3 = new String("Jeff");        String str4 = str3.intern();                boolean b1 = (str1 == str2);        boolean b2 = (str1 == str3);        boolean b3 = (str1 == str4);                System.out.println("b1:"+b1+"  "+"b2:"+b2+"  "+"b3:"+b3+"  ");    }}#outputs:b1:true  b2:false  b3:true

复制代码

b1:true b2:false

u will think ,thats why they r different.
As we all kno , the  operator“==”show whether two objects’address references are the same. Java designed a String Pool for storing all the String used to avoid there are to many String Objects created in a system. So  String str3 = new String("Jeff");  is creating a object in java heap memory not the String Pool.

 

intern() is a method of String. we can see from the jdk help doc.

复制代码

public String intern()Returns a canonical representation for the string object.A pool of strings, initially empty, is maintained privately by the class String.When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.

复制代码

It follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.

All in all, using  String str = "Jeff";  u dont mind the Thread-security or Garbage collection mechanism.String is a nice man , treat it as a little boy pelasse.

                              

How to use the String , StringBuffer,StringBuilder

Look at the pic:

                              

String , StringBuffer ,StringBuilder implement the CharSequence.But they are different.

 

String

String Object is a non-variable . it can not be changed and in the memory when u create it.

for example:

    String str  = "abc";    String str1 = str.substring(1);            System.out.println("str1" + str1);
#outputs:bc

substring() method creates a new String Object and links the reference of it to str1. But when “str.substring(0)”,str1 and str  both link to the “abc”by the JVM.

 

StringBuffer StringBuilder

they are very similar and they r variables of the sequence of characters.Only different, the StringBuffer has the methods which are synchronized where necessary. String buffers are safe for use by multiple threads. Different from String, if z refers to a string buffer object whose current contents are "start", then the method call z.append("le") would cause the string buffer to contain "startle", whereasz.insert(4, "le") would alter the string buffer to contain "starlet".

 

All in all:

String can be used for the constants.

                                   

StringBuffer can be used for some operating methods in multithreaded environment.like XML analyze,the parameters of HTTP analyze etc.

StringBuilder can be used for HQL/SQL splice, JSON package etc.

                           

 

Easy Time:Pay attention to the address of String

for example:

复制代码

public static void main(String[] args){    String str1 = 1 + 2 + "apples";    String str2 = "apples" + 1 + 2;        System.out.println(str1);    System.out.println(str2);}#outputs:3applesapples12

复制代码

 

what we can see from the result-values.why ? how ? they did.

Because the JAVA handling mechanism to the operator “+”. when there is a string in the expression, all the expression data will change itself to the String class.if the data is an Object, it will call its toString method.

So,String str1 = 1 + 2 + "apples" just like String str1 = (1 + 2) + "apples" .thats all.

 

Complex string manipulation using regular expressions

just reading!! the part , i will write in the future.

                                 

 

Write to Reader

based on .

Thank u!

道可道也,非恒道也。名可名也,非恒名也。无名,万物之始也;有名,万物之母也。故恒无欲也,以观其眇;恒有欲也,以观其所徼。两者同出,异名同谓。玄之又玄,众眇之门。

转载于:https://my.oschina.net/jeffli1993/blog/287648

你可能感兴趣的文章
八数码问题
查看>>
持续集成之⑤:jenkins结合脚本实现代码自动化部署及一键回滚至上一版本
查看>>
关于malloc的一个未解决的疑问
查看>>
java内存管理机制
查看>>
用R分析时间序列(time series)数据
查看>>
CCF201609-1 最大波动(100分)
查看>>
Vue-devtools 安装浏览器调试
查看>>
postman环境变量的设置
查看>>
百度--买帽子
查看>>
SDWebImage的使用
查看>>
PC端和移动端测试区别
查看>>
TCP/IP中的四元组、五元组、七元组
查看>>
用代码告诉你“问世间情为何物,直教人生死相许”
查看>>
(PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
查看>>
使用sqlite保存数据返回主键
查看>>
js循环生成多个easyui datagrid数据网格时,初始化表格
查看>>
Python编程笔记(第三篇)【补充】三元运算、文件处理、检测文件编码、递归、斐波那契数列、名称空间、作用域、生成器...
查看>>
获取用户信息
查看>>
洛谷P3952 时间复杂度
查看>>
Leetcode | Parentheses 相关
查看>>