String s = "abc";//创建一个字符串对象在常量池中。

String s2 = new String("abc");//创建两个对象   一个new  一个字符串对象在堆内存中。

boolean b = (s==s2);//b为false   比较的是地址

boolean b2 = s.equals(s2);//b2为true   重写了Object的equals方法,  比较的是俩个字符串的内容。

String e = new String();//等价于String e = "";


相等性的比较(==)
1》对于原生类型数据来说,比较的是左右两边的值是否相等。
2》对于引用类型来说,比较的是左右两边的引用是否指向同一个对象或者说左右两边的引用地址是否相等。

当打印引用时,实际上回打印出引用所有指向对象的toString()方法的返回值,因为每个类都有直接或者间接的继承自Object而Object类中定义了toString()因此每个类都有toString()这个方法。

equals()方法该方法定义在 Object类中,因此java中每个类都具有该方法,对于Object类的equals()方法来说,他是判断调用equals()方法的引用与传进来的引用是否一致,即这两个引用是否指向的的是同一个对象。对于Object类的equals()方法来说他等价于==

对于String类的equals()方法来说,他是判断当前字符串与传进来的字符串的内容是否一致。

对于String对象的相等性来说,请使用equals()方法来说 判断而不要使用==。

String是常量,其对象一旦创建完毕就无法改变,当使用+拼接字符串时,就会生成新的String对象,而不是向原有的String对象追加内容。

Stringpool(字符串池)
String S= ”aaa“(采用的是  字面值方式赋值)
                1)查找SringPool中是否存在”aaa“这个对象,如果不存在则StringPool中创建一个”aaa“对象,然后将SringPool中的这个”aaa“对象的地址返回回来,赋给引用变量S,这样 S会指向StringPool中的这个”aaa“字符串对象。
                2)如果存在,则不创建任何对象,直接将StringPool中的这个”aaa“ 对象地址返回回来,赋给S引用。

String S=new String("aaa");
                1)首先在StringPool中查找有没有”aaa“这个字符串对象,如果有,则不再StringPool中创建一个”aaa“字符串对象,然后将堆中的这个”aaa“对象的地址返回回来赋给S引用。到时S指向了堆中这个”aaa“字符串对象。
                2)如果没有,首先在stringPool中创建歘一个”aaa“ 对象,然后将队中的这个”aaa“ 对象的地址返回回来,赋给S引用倒置S指向堆中所创建的这个”aaa“ 对象。

String本身是一个类,在String类中定义的构造方法:public String (String original)  可以接收一个String类的对象,并重新实例化String对
                             象,String还可以采用直接赋值的方式进行对象的实例化

一个字符串是使用 “”括起来的 那么一个字符串的常量实际上本身就属于String的一个匿名对象

String  str = "hello" ; 与 String str = new String("hello"); 有什么区别?、

String  str="hello "   如果内存已经为"hello"分配了内存空间,那么Str只要指向"hello"内存对象地址;

String str = new String("hello");  内存中重新分配一块内存区域给"hello",str指向"hello",也就是内存中有两个hello的对象了,而且指向的地址不一样

//获取俩个字符串中  的 最大相同字串

获取 一个字符串的所有字串:   按照其长度去找  从最大长度  找到最小长度

private static String getMaxSubstring(String s1, String s2)

{

// TODO Auto-generated method stub

for (int i = 0; i < s2.length(); i++)

{

for(int a=0,b=s2.length()-i; b!=s2.length()+1; a++,b++)

{

String sub = s2.substring(a, b);

if(s1.contains(sub))

{

System.out.println(sub);

return sub;

}

}

}

return null;

}

========================================================================================

/*

* StringBuffer:其实就是字符串缓冲区。  用于存储数据的容器。

* 特点:


1.长度是可变的。


2.可以存不同类型的数据。


3.最终要转成字符串进行使用

* 是一个容器对象,具备的功能:


添加:


append(data)返回类型是String


insert(index, data)


删除:


delete(start, end):包含头,不包含尾


deleteCharAt(int index):删除指定位置上的元素


查找


char charAt(index);


int indexOf(string);


int lastIndexOf(string);


修改:


StringBuffer replace(start, end,string);


void setCharAt(index, char);

*

* StringBuffer是线程同步的,通常用于多线程。

* StringBuilder是线程不同步的。通常用于单线程的,他的出现提高了效率

*

l  */

版权声明:本文为博主原创文章,未经博主允许不得转载。

Java——关于String(字符串)的更多相关文章

  1. java 判断String字符串是不是json数据

      java 判断String字符串是不是json数据 CreationTime--2018年8月24日18点23分 Author:Marydon JSONObject jo = null; try ...

  2. < java.lang >-- String字符串

    java中用String类进行描述.对字符串进行了对象的封装.这样的好处是可以对字符串这种常见数据进行方便的操作.对象封装后,可以定义N多属性和行为. 如何定义字符串对象呢?String s = &q ...

  3. 浅谈java的String字符串

    一提到java的String首先想到的应该就是它的不可变性,其原因是因为String类的内部是使用一个private final char value[]的字符数组来存储数据,本身没有相应的set方法 ...

  4. java中String字符串

    一.定义String字符串 String字符串和char字符不同,char使用单引号,只能表示一个字符,字符串就是一段文本.String是个类.这个类使用final修饰,所以这个类是不可以继承扩充和修 ...

  5. JAVA中String(字符串)课堂总结

    一:Java编译器中关于字符串自动优化 例子一: 源代码: public class StringPool { public static void main(String args[]) { Str ...

  6. Java中String字符串常量池总结

    最近到广州某建站互联网公司面试,当时面试官问假设有两个字符串String a="abc",String b = "abc";问输出a==b是true还是fals ...

  7. java中String字符串的==解析

    今天不知道怎么看了下string的==的问题,本身我觉得我这个水平去判断几个字符串相等还能出问题?呵呵,真的出了大问题,根本原因在于对java字节码的不了解. 首先,==运算符比较的是两个变量所指向的 ...

  8. Java中String字符串常量池

    首先看一个例子,通过这个例子更能快速理解String常量池 public static void main(String[] args) { String a = "ab"; St ...

  9. JAVA中String字符串比较equals()和equalsIgnoreCase()的区别

    标签: equals和equalsIgnoreC 2012-11-11 16:03 65644人阅读 评论(0) 收藏 举报  分类: JAVA(3)  1.使用equals( )方法比较两个字符串是 ...

  10. java中String字符串的替换函数:replace与replaceAll的区别

    例如有如下x的字符串 String x = "[kllkklk\\kk\\kllkk]";要将里面的“kk”替换为++,可以使用两种方法得到相同的结果 replace(CharSe ...

随机推荐

  1. 移动设备和SharePoint 2013 - 第3部分:推送通知

    博客地址:http://blog.csdn.net/foxdave 原文地址 在该系列文章中,作者展示了SharePoint 2013最显著的新功能概观--对移动设备的支持. 该系列文章: 移动设备和 ...

  2. python版恶俗古风自动生成器.py

    python版恶俗古风自动生成器.py """ python版恶俗古风自动生成器.py 模仿自: http://www.jianshu.com/p/f893291674c ...

  3. 如何区别PeekMessage&GetMessage SendMessage&PostMessage

    转自http://blog.csdn.net/young0325/article/details/6430664 Peekmessage和Getmessage都是向系统的消息队列中取得消息,不过性质不 ...

  4. hdu1878 欧拉回路

    //Accepted 1240 KB 250 ms //水题 欧拉回路 //连通+节点度均为偶数 #include <cstdio> #include <cstring> #i ...

  5. ICTCLAS50中文分词软件“Init ICTCLAS failed!”问题

    if (!ICTCLAS_Init(Server.MapPath("ICTCLAS50")))            {               Response.Write( ...

  6. STL 源码分析《5》---- lower_bound and upper_bound 详解

    在 STL 库中,关于二分搜索实现了4个函数. bool binary_search (ForwardIterator beg, ForwardIterator end, const T& v ...

  7. css if hack之兼容ie

    1.Css if hack条件语法< !--[if IE]> Only IE <![endif]-->仅所有的WIN系统自带IE可识别< !--[if IE 5.0]&g ...

  8. context理解

    官方文档的解释是:Context提供了关于应用环境全局信息的接口.它是一个抽象类,它的执行被Android系统所提供.它允许获取以应用为特征的资源和类型.同时启动应用级的操作,如启动Activity, ...

  9. Java_oop_继承

    不用多久,就会升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰.想想还有点小激动呢, OK,睡醒了,我们说到继承就先来学习一下Java中继承的语法. public SubClass exte ...

  10. 第一个Sprint冲刺事后诸葛报告

    用户反馈:软件一般般,比较传统. 用户数量:5 团队改进建议:选择题与填空题太没有新意了,需要新的创新功能. 1.每个成员第一个sprint阶段有何需要改进? 成员 需要改进 邵家文 需要更多的技术的 ...