已知在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():去掉指定字符串中开头和结尾部分的空格

String和StringBuffer的更多相关文章

  1. 初识java之String与StringBuffer(上)

    好久没写博客了,一直在纠结后面的路怎么发展?好了不说废话了!!正题开始!! String与StringBuffer类是我们在开发中最常用的,我们现在一起来分析一下这两个类,首先我们先来谈谈String ...

  2. String、StringBuffer与StringBuilder之间区别

    关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下 1.三者在执行速度方面的比较:StringBuilder >  String ...

  3. (转)String、StringBuffer与StringBuilder之间区别

    原文地址: http://www.cnblogs.com/A_ming/archive/2010/04/13/1711395.html 关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺 ...

  4. Java中String、StringBuffer、StringBuilder区别与理解

    一.先比较String.StringBuffer.StringBuilder变量的HashCode值 使用System.out.println(obj.hashcode())输出的时对象的哈希码, 而 ...

  5. String、Stringbuffer、StringBuilder的区别(转载)

    最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下. 关于这三个类在字符串处理中的位置不言而喻,那 ...

  6. String、StringBuffer和StringBuilder的深入解析

    今天闲来无事,整理了下平时记录在印象笔记里的java开发知识点,整理到String,StringBuffer以及StringBuilder的区别时突然又产生了新的疑惑,这些区别是怎么产生的?温故为何能 ...

  7. String、StringBuffer、StringBuilder的区别

    在日常开发过程中String字符串估计是被用到最多的变量了,最近看了一些String.StringBuffer和StringBuilder的东西,三者都可以对字符串进行操作,他们究竟有什么区别,以及适 ...

  8. String、StringBuffer、StringBuilder的一些小经验……

    一说String.StringBuffer和StringBuilder,想必大家都很熟悉,这三者经常在我们的面试题中出现,我也是看到了关于这三个的经典面试题,才触动了我之前工作中的一些经历,故而根据我 ...

  9. java中String、StringBuffer、StringBuilder的区别

    java中String.StringBuffer.StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题.现在总结一下,看看他们的不同与相同. 1.可变与不可 ...

  10. String、StringBuffer与StringBuilder之间区别[全屏看文]

    String.StringBuffer与StringBuilder之间区别[全屏看文]   最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,S ...

随机推荐

  1. btrfs使用方法

    创建文件系统 mkfs.btrfs 命令建立一个 btrfs 格式的文件系统.可以用如下命令在设备 sda5 上建立一个 btrfs 文件系统,并将其挂载到 /btrfsdisk 目录下: #mkfs ...

  2. Windows Internals学习笔记(七)Image Loader

    参考资料: 1. <Windows Internals> 2. Fibers 知识点: ● 当一个进程在系统上启动时,内核将创建一个进程对象来代表它,并执行各种内核相关的初始化任务.然而, ...

  3. EasyUi 分页 和 表格数据加载

    这里说明的是将说有数据先返回到前端再由前端去分页,性能可能没有先在后台分好页再返回给前端高 但如果操作不涉及大数据的话也没什么大问题,具体问题具体分析 要使用分页控件首先要声明初始化一下: //设置分 ...

  4. 《利用python进行数据分析》读书笔记--第十一章 金融和经济数据应用(一)

    自2005年开始,python在金融行业中的应用越来越多,这主要得益于越来越成熟的函数库(NumPy和pandas)以及大量经验丰富的程序员.许多机构发现python不仅非常适合成为交互式的分析环境, ...

  5. ReentRantLock使用

    synchronized原语和ReentrantLock在一般情况下没有什么区别,但是在非常复杂的同步应用中,请考虑使用ReentrantLock,特别是遇到下面2种需求的时候. 1.某个线程在等待一 ...

  6. json对象,数组,字符串总结

    关于json对象,数组,字符串的总结 什么是json? JSON(JavaScript Object Notation)  一种轻量级的数据交换格式,JSON采用完全独立于语言的文本格式...(来自百 ...

  7. __VA_ARGS__可变参数宏

    #define qWiFiDebug(format, ...) qDebug("[WiFi] "format" File:%s, Line:%d, Function:%s ...

  8. 在腾讯云上创建您的SQL Cluster(4)

    版权声明:本文由李斯达原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/255 来源:腾云阁 https://www.qclo ...

  9. Android Gradle的使用

    说明: 在Android Studio中的Terminal可以直接使用Gradle命令行,不需要配置环境,而想直接在电脑的命令行使用Gradle命令行, 则需要配置环境,Window下配置Gradle ...

  10. &与&&的区别

    &是“逻辑与”(“按位与”“位运算符”),一定要判断完所有的条件才能确定到底返回true还是false. &&是“短路与”(“逻辑运算符”),当从左至右判断时,一旦出现有一个条 ...