字符串

字符串一 字符串 String 的创建方式一般有如下几种 1 直接用 创建 String s1 aaa String s2 aaa System out println s1 s2 true 2 使用 new String 创建 String

大家好,我是讯享网,很高兴认识大家。

一.字符串

 String的创建方式一般有如下几种:

1.直接用" "创建

String s1="aaa";

String s2="aaa";

System.out.println(s1==s2);//true


讯享网

 

2.使用new String()创建

        String s1="aaa";

String  string=new String();

string="aaa";

System.out.println(s1==string);//true

 

3.使用new String(" ")创建

        String s1="aaa";

String  s2=new String("aaa");

s2=s2.intern();//会使s2指向该对象常量池s1中的引用

System.out.println(s1==s2);//true

 

4.使用重载的字符串连接操作符"+"创建

        String s1="aaa";

String  s2=new String("777");

        String s3="aaa777";

System.out.println(s3==s2+s1);//false

 

二.StringBuffer

 

public class Test6 { public static void main(String[] args) { StringBuffer a=new StringBuffer("A"); StringBuffer b=new StringBuffer("B"); operate(a, b); System.out.println(a+" "+b); } public static void operate(StringBuffer x,StringBuffer y) { x.append(y); y=x; } }

讯享网

 

分析结果:

第一步:oprate 函数传入两个StringBuffer类型的句柄副本,一个是x,一个是y

第二步:执行x.apend(y)

 

 

第三步.执行y=x;y指向AB

函数结束,x,y自然消失,a指向的是AB,b指向的是B

 

注意:1.不要简单的认为StringBuffer.append()效率好于"+"是错误的

        2.避免使用"+="来构造字符串

           String s="a"+"b";

           String s="a";

                 s+="b";

前者开辟了一个内存段,后者开辟了两个.会造成内存的浪费

 

题目:以下程序创建了几个对象?

       String A,B,C;

       A="a";

       B="b";

       A=A+B;

       StringBuffer D=new StringBuffer("abc");

       D=D.append("567");

创建了5个对象

 

//题目:一个字符串中可能包含a~z中的 多个字符,如有重复,如String data="aavzjksdhdksahdkas"

//求出现次数最多的那个字母及次数,如有多个重复则都求出

public class Test1 {

public static void main(String[] args) {

String data="aaacccdddddooffggasdae";

char[] a=data.toCharArray();//第一步:将字符串转为字符数组

ArrayList<String> list=new ArrayList<>();//创建一个list集合

TreeSet<String> set=new TreeSet<>();//创建一个set集合

int num=0;

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

list.add(String.valueOf(a[i]));

set.add(String.valueOf(a[i]));

}

Collections.sort(list);

for (int i = 0; i < list.size()-1; i++) {

while (!list.get(i).equals(list.get(i+1))) {

System.out.println(list.get(i)+"的个数"+(i+1-list.indexOf(list.get(i))));

break;

}

}

}

}

讯享网//一个数组中,"支配者"是在数组中出现频率超过一半的整数,写一个函数,在给定的 //的整数数组中找出支配者是多少,如果一个数组中没有支配者则返回-1 public class Test8 { public static void main(String[] args) { int a[]= {2,3,8,9,3,3,2,3,3}; boolean b=false; //遍历数组 for (int i = 0; i < a.length-1; i++) { int count=1;//统计元素个数 for (int j = i+1; j < a.length; j++) { if (a[i]==a[j]) { count++; } } if ((double)count/a.length>0.5) { System.out.println("支配者是"+a[i]); b=true; } } if (b==false) { System.out.println(-1);//没有支配者 } } }

 

 

 

小讯
上一篇 2025-02-16 20:46
下一篇 2025-04-08 11:03

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/22221.html