zoukankan      html  css  js  c++  java
  • String和StringBuffer

      已知在Java中,boolean、byte、short、int、long、char、float、double这八种是基本数据类型,其余的都是引用类型,比如String、数组、接口、对象等。

      当我们声明一个引用类型变量时,系统只为该变量分配了引用空间,并未创建一个具体的对象;

      当用new为对象分配空间后,将对象的引用(内存中的首地址)赋值给引用变量;

      因此,可以把Java中的引用理解为对象在内存中的首地址。

      Java的常用包

      java.applet:包含一些用于创建Java小应用程序的类; 

      java.awt(awt抽象窗口工具包):包含一些用于编写与平台无关的图形界面(GUI)应用程序的类; 

      java.io:包含一些用作输入输出(I/O)处理的类; 

      java.lang:包含一些Java语言的基本类与核心类,如String、Math、Integer、System、Runtime,提供常用的功能,这个包中的所有类是被隐式导入的; 

      java.net:包含用于建立网络连接的类,于、与java.io同时使用完成与网络有关的读写; 

      java.util:包含一些使用工具类和数据结构类;

      String类: 

      public final class String:声名为final,即不能再从String类中派生出其他类; 

      针对String的"+"和"+=",是Java中唯一被重载的操作符;在Java中,不允许程序员重载操作符; 

      String类对象是个常量对象。String str="abc";str="def",那么str变量的值就为def的引用了,就没有变量再指向abc这个对象了,abc这块就成为垃圾内存。

      StringBuffer 

      在处理大量字符串的程序中,我们通常用StringBuffer来代替String。使用StringBuffer可以在同一块内存内修改。

      x = "a" + 4 + "c"等同于x = new StringBuffer().append("a").append(4).append("c").toString(); 

      StringBuffer.toString()将StringBuffer转变为String; 

      StringBuffer.capacity()会返回当前StringBuffer的容量; 

      StringBuffer.delete(int start,int end)删除StringBuffer中start(含)到end(不含)之间的子串; 

      StringBuffer.deleteCharAt(int index)删除一个字符; 

      StringBuffer.reverse反序内存中的字符串序列;

      "=="和"equals"的用法 

      "=="是比较两个变量的值是否相等; 

      "equals"是比较两个对象变量所代表的对象的内容是否相等;

      class StringTest

        public static void main(String[] args)

          String str1=new String("abc"); 

          String str2=new String("abc"); 

          if(str1==str2){

            //str1和str3变量的值是不等的,他们指向堆内存中不同的地方(对象)

            System.out.println("str1==str2"); 

          }else{ 

            System.out.println("str1!=str2"); 

          } 

          if(str1.equals(str2)){

            //str1和str3所代表的对象的内容相等 

            System.out.println("str1 equals str2"); 

          }else{ 

            System.out.println("str1 not equals str2"); 

          } 

     

          String str3=str1;

          //该赋值是把str1赋值给了str3,赋的是对象的引用,所以在栈内存中,str1和str3的值是一样,即指相对内存中同一块地方(对象) 

          if(str1==str3)

            System.out.println("str1==str3"); 

          }

     

          int i=3; 

          float f=1.5f; 

          char ch=‘f‘; 

          boolean b=false; 

          System.out.println(str1+i+f+ch+b);//String可以使用重载了的操作符"+"和"+="

          int i=3; 

          float f=1.5f; 

          char ch=‘f‘; 

          boolean b=false; 

          StringBuffer sb=new StringBuffer(); 

          sb.append(str1).append(i).append(f).append(ch).append(b); 

          System.out.println(sb.toString()); 

          System.out.println(sb);//也可,打印时会自动调用toString()*/ 

        } 

      } 

      字符串类型String

      当用"+"连接一个字符串和一个非字符串的值时,非字符串变量将被自动转换成字符串。

      如String mystr="ID"+100,这句会把mystr赋值为"ID100",所以可以用语句System.out.println("The number is"+num)输出我们想要的内容; 

      求一个字符串的子串可以用String类所提供的substring方法,substring(a,b)中的b是你不打算留下的字符串的第一个位置; 

      length方法可以得到一个字符串的长度; 

      charAt(n)方法返回字符串中位于n位置的那个字符;

      我们可以用equals方法来检查两个字符串是否相等s1.equals(s2)。

      对于equals方法来说,s1和s2既可以是字符串变量,也可以是字符串常量。

      如"mystring".equals(s)。如果在检测字符串是否相等时,希望忽略字母大小写的区别,可以用equalsIgnoreCase方法; 

      int compareTo(String other):按字典顺序,字符串若在other之前,返回负值;之后,返回正值;相等,返回0 

      boolean endsWith(String suffix):若指定字符串以suffix结尾,返回ture 

      boolean startsWith(String prefix):若指定字符串以prefix开始,返回ture 

      int indexOf(String str),int indexOf(String str,int fromIndex):返回与str相等的第一个字串的起始位置,从索引位置0或fromIndex开始 

      Sring replace(char oldChar,char newChar):返回一个新串,它用newChar替换oldChar 

      Sring toLowerCase():将指定字符串中的字符全部转换为小写 

      Sring toUpperCase():将指定字符串中的字符全部转换为大写 

      String trim():去掉指定字符串中开头和结尾部分的空格

  • 相关阅读:
    xtjh
    Tomcat的安装与使用
    Nginx入门
    git上传本地项目到码云(新手必看)
    GitHub开源项目的发布(使用Docker构建)
    Docker学习笔记(基础篇)
    Mybatis逆向工程
    ElasticSearch学习笔记
    you-get:下载音乐等网页视频技巧
    二叉排序树的添加与删除
  • 原文地址:https://www.cnblogs.com/amirsterry/p/3720364.html
Copyright © 2011-2022 走看看