zoukankan      html  css  js  c++  java
  • java的String

    String.valueOf()      将其他类型的值转换成字符串类型
    String.intern()          该方法会将字符串常量池中的字符串与外部的字符串(s)进行比较,如果共享池中有与之相等的字符串,则不会将外部的字符串放到共享池中的,返回的只是共享池中的字符串地址;如果不同则将外部字符串放入共享池中,并返回其字符串的句柄(引用)-- 这样做的好处就是能够节约空间
     
    StringBuilder s=new StringBuilder("计算机");
    s.append("软件");
    说明StringBuilder是可变字符串,而String是不可变的,final char[](源码分析)
    StringBuilder的对象存储在java堆中,而String存储在方法区中。
    -----------------------------------------------------------------------------------
    String的equal方法与==的比较:
    ==用于判断地址是否相等,也就是指针
    equals()用于判断内容是否相等
     
    String s1="libi";         String s2="libi";        (存在于字符串常量池中)
    s1==s2为true,s1.equals(s2)为true
     
    String s3=new String("libi");     String s4=new String("libi"); (新new的字符串存在于java堆中)
    s3==s4为false             s3.equals(s4)为true
     
    s1==s3为false              s1.equals(s3)为true
    -------------------------------------------------------------------------------
     
    当频繁操作字符串时,会额外产生很多临时变量。使用 StringBuilder 或 StringBuffer 就可以避免这个问题。至于 StringBuilder 和StringBuffer ,它们基本相似,不同之处,StringBuffer 是线程安全的,而 StringBuilder 则没有实现线程安全功能,所以性能略高。因此一般情况下,如果需要创建一个内容可变的字符串对象,应优先考虑使用 StringBuilder 类。
     
    ----------------------------------------------------------------------------------
    Java是传值还是传引用?
    String s="guoyari"
    String foo(Stirng s){
      对字符串进行相关操作
    }
    当把s传递给foo()时,其实是把s(位于java虚拟机栈中)复制了一份,将s`传递给了foo()。s和s`指向的字符串常量池的内容是相同的。
     public   < T >   void  swap(T a, T b)   {  
                T temp  =  a;  
                a  =  b;  
                b  =  temp;  
            }  
    定义一个交换的函数。
     
             String stra  =   " Mighty " ;  
             String strb  =   " Mouse " ;  
             c.swap(stra, strb);  
             System.out.println(stra  +   "   "   +  strb); //输出Mighty   Mouse
     
     
     public   < T >   void  swap(T[] t)   {  
                 if  (t.length  <   2 )   {  
                    System.out.println( " error! " );  
                     return ;  
                }   
                  
                T temp  =  t[ 0 ];  
                t[ 0 ]  =  t[ 1 ];  
                t[ 1 ]  =  temp;  
            }   
    也定义了一个交换函数
            String[] strArr  =   new  String[ 2 ] ;  
            strArr[ 0 ]  =  stra;  
            strArr[ 1 ]  =  strb;  
            c.swap(strArr);  
            System.out.println(strArr[ 0 ]  +    "   "   +  strArr[ 1 ]);
           //输出Mouse Mighty
  • 相关阅读:
    diango-tinymce富文本编译器
    django 1.10以上版本,引入js
    linux中使用vi 打开文件时,能显示行号
    ubuntu 16.04 系统语言汉化
    ubuntu16.04 一些简单软件安装操作
    urllib -- ProxyHandler处理器(代理设置)
    urllib基本使用-Handler和自定义的opener()
    urllib基本使用 urlopen(),Request
    python3
    Ubuntu安装Mysql+Django+MySQLdb
  • 原文地址:https://www.cnblogs.com/james111/p/6607399.html
Copyright © 2011-2022 走看看