认识字符串String

String的美妙之处

1:如何创建一个字符串?
方式一

String str = "Hello Bit";

方式二

String str2 = new String("Hello Bit");

方式三

char[] array={'a','b','c'};
String str=new String(array);

2: String是一个引用类型;
所以对于以下代码:

String str1 = "Hello"; 
String str2 = str1;

内存图如下
在这里插入图片描述注意 String类型的不会改变,所谓的改变也不过是是它的引用指向了另一个字符串。
3:字符串比较相等:有“==”和equals方法。
String 使用 == 比较并不是在 比较字符串内容 而是比较两个引用是否是指向同一个对象.
而equals方法比较的是内容是否相等。

String str = new String("hello"); 

内存图如下:
在这里插入图片描述

 public static void main(String[] args) {
        String str1=new String("hello");
        String str2="hello";
        System.out.println(str1==str2);
    }

输出结果为false
但是可以用intern()方法手动入池;

 public static void main(String[] args) {
        String str1=new String("hello").intern();
        String str2="hello";
        System.out.println(str1==str2);
    }

结果就是true
字符串是不可改变的,如果想要改变,可以借助原字符串,创建新的字符串,反射也可以。
在这里插入图片描述这是一些常用的放法

任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指 向而已。
通常来讲String的操作比较简单,但是由于String的不可更改特性,为了方便字符串的修改,提供StringBuffer和 StringBuilder类。 StringBuffer 和 StringBuilder 大部分功能是相同的,我们课件上主要介绍 StringBuffer
在String中使用"+"来进行字符串连接,但是这个操作在StringBuffer类中需要更改为append()方法:

下面是我写的一个字符串反转

public class TestString {
    public static String[] func(String[]strings){
        int left=0;
        int right=strings.length-1;
       while(left<right){
         String tmp=strings[left];
         strings[left]=strings[right];
         strings[right]=tmp;
         left++;
         right--;
       }
        return strings;
    }
    public static void display(String[]strings){
        for(int i=0;i<strings.length;i++){
            System.out.print(strings[i]+" ");
        }
    }
    public static void main(String[] args) {
        String string="i am student";
        String[] strings=(string.split(" "));//使用split方法使字符串变为
        String[]strings1=func(strings);
        display(strings1);

    }
}

下面是一个利用StringBuffer写的一个从头开始不重复的最长子串

public static void main(String[] args) {
       Scanner sc=new Scanner(System.in);
        while (sc.hasNext()){
            String str=sc.nextLine();
            StringBuffer stringBuffer=new StringBuffer();
            for(int i=0;i<str.length();i++){
               char tmp=str.charAt(i);
               if(!stringBuffer.toString().contains(tmp+"")){
                   stringBuffer.append(tmp);
               }
            }
            System.out.println(stringBuffer.toString());
        }
    }

关于字符串就先说到这里了,

发布了23 篇原创文章 · 获赞 12 · 访问量 1574

猜你喜欢

转载自blog.csdn.net/weixin_45607985/article/details/103555202