当前位置: 首页 > news >正文

JAVA API-----String类和StringBuffer类

  String类和StringBuffer类主要用来处理字符串,这两个类提供了很多字符串的使用处理方法。String类是不可变类,表示对象所包含的字符串类不能改变。StringBuffer类是可变类,其对象所包含的字符串内容可以被添加或修改。

  关于这两个类处理字符串的常用方法请参考:http://www.runoob.com/java/java-string.html    

                      http://www.runoob.com/java/java-stringbuffer.html

  下面主要介绍:equals和==在字符串和非字符串使用方面的区别

class Test{
    int x=1;
}

public class EqualTest{
    public static void main(String args[]){
        String a1,a2,a3="abc",a4="abc";
        a1=new String("abc");
        a2=new String("abc");
        System.out.println("a1.equals(a2): "+(a1.equals(a2)));
        System.out.println("a1==a2: "+(a1==a2));
        System.out.println("a1.equals(a3): "+(a1.equals(a3)));
        System.out.println("a1==a3: "+(a1==a3));
        System.out.println("a3.equals(a4): "+(a3.equals(a4)));
        System.out.println("a3==a4: "+(a3==a4));
        System.out.println("----------------------------");
        Test one=new Test();
        Test two=new Test();
        System.out.println("one.equals(two): "+(one.equals(two)));
        System.out.println("one==two: "+(one==two));
        one=two;
        System.out.println("赋值后:");
        System.out.println("one.equals(two): "+(one.equals(two)));
        System.out.println("one==two: "+(one==two));
    }
}

1. ==可以用来比较基本类型和引用类型,判断内容和内存地址

2. equals只能用来比较引用类型,它只判断内容。

java中的数据类型,可分为两类: 
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean 
  他们之间的比较,应用双等号(==),比较的是他们的值。 
2.复合数据类型(类) 
  当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,
  所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。

 

字符串缓冲池:程序在运行的时候会创建一个字符串缓冲池。
当使用 String a3 = "abc"; 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象

在String a3 = "abc";中,a3先被放到了池中。所以在a4被创建的时候,程序找到了具有相同值的 a4,并将a4引用a3所引用的对象"abc"。

使用了 new 操作符,他明白的告诉程序:"我要一个新的!不要旧的!"于是一个新的"abc"Sting对象被创建在内存中。他们的值相同,但是位置不同。

 

转载于:https://www.cnblogs.com/scf141592/p/5748223.html

相关文章:

  • redis 异常解决办法
  • 2016跨境电商五大物流模式盘点
  • .NET Framework 4.6.2改进了WPF和安全性
  • ubuntu 16.04 有道词典
  • AFNetworking 3.0 源码解读(四)之 AFURLResponseSerialization
  • 玩转Slot Machine
  • JavaScript之数组循环 forEach 循环输出数组元素
  • emacs初体验
  • RAW+ASM 的RAC 安装文档
  • 7 个 JavaScript “特性”
  • linux 下 ant 安装配置
  • 后台——使用maven时出现Failure to transfer 错误的解决方法
  • 吾爱论坛浏览器分享
  • java 极光推送
  • Plsql连接不上64位oracle数据库问题解决方案
  • [LeetCode] Wiggle Sort
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • 【刷算法】求1+2+3+...+n
  • Asm.js的简单介绍
  • JS+CSS实现数字滚动
  • k个最大的数及变种小结
  • Leetcode 27 Remove Element
  • LeetCode算法系列_0891_子序列宽度之和
  • vue 配置sass、scss全局变量
  • vue数据传递--我有特殊的实现技巧
  • windows下mongoDB的环境配置
  • 产品三维模型在线预览
  • 汉诺塔算法
  • 近期前端发展计划
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 面试遇到的一些题
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前端攻城师
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​马来语翻译中文去哪比较好?
  • ​业务双活的数据切换思路设计(下)
  • #HarmonyOS:基础语法
  • #预处理和函数的对比以及条件编译
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (三)Honghu Cloud云架构一定时调度平台
  • (四)库存超卖案例实战——优化redis分布式锁
  • (一)VirtualBox安装增强功能
  • ../depcomp: line 571: exec: g++: not found
  • .md即markdown文件的基本常用编写语法
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .NET Core跨平台微服务学习资源
  • .net framework profiles /.net framework 配置
  • .NET Reactor简单使用教程
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • /dev下添加设备节点的方法步骤(通过device_create)
  • :如何用SQL脚本保存存储过程返回的结果集
  • [ C++ ] STL_stack(栈)queue(队列)使用及其重要接口模拟实现