Java API String函数调用及“==”与equal()的区别

public class StringTest1 {
public static void main(String[] args) {
String sa = "javanet";
String sb = "jAvanet";

// 返回索引处的字符c
char c = sa.charAt(4);
System.out.println("c = " + c);

// 用equals来判断sa和sb是否相等
if (sa.equals(sb))
System.out.println("sa和sb相等");
else
System.out.println("sa和sb不相等");

// 用==来判断sa和sb是否相等
if (sa == sb)
System.out.println("sa和sb相等");
else
System.out.println("sa和sb不相等");

// 返回指定索引处的字符(Unicode 代码点)即字符的ascci如a为97
int s = sa.codePointAt(3);
System.out.println(s);

// 返回指定索引之前的字符(Unicode 代码点)即字符的ascci如a为97
s = sa.codePointBefore(4);
System.out.println(s);

// 返回此 String 的指定文本范围中的 Unicode 代码点数即个数
s = sa.codePointCount(1, 5);
System.out.println(s);

// 返回此 String 中从给定的 index 处偏移 codePointOffset 个代码点的索引即将两个相加
s = sa.offsetByCodePoints(1, 3);
System.out.println(s);

// 将字符从此字符串复制到目标字符数组。
char sw[] = new char[6];
sw[0] = 's';
sa.getChars(1, 3, sw, 3);
for (int i = 0; i < sw.length; i++) {
System.out.print(sw[i] + " ");
}
System.out.println();

//使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。
byte sw1[] = new byte[10];
sw1[0] = 2;
sw1 = sa.getBytes();
for (int i = 0; i < sw1.length; i++) {
System.out.print(sw1[i] + " ");
}
System.out.println();

//将此字符串与指定的 StringBuffer 比较。当且仅当此 String 与指定 StringBuffer 表示相同的字符序列时,结果才为 true。
if (sa.contentEquals(sb))
System.out.println("sa和sb相等");
else
System.out.println("sa和sb不相等");

//将此 String 与另一个 String 比较,不考虑大小写。如果两个字符串的长度相同,并且其中的相应字符都相等(忽略大小写),则认为这两个字符串是相等的。
if (sa.equalsIgnoreCase(sb))
System.out.println("sa和sb相等");
else
System.out.println("sa和sb不相等");

//按字典顺序比较两个字符串。
if (sa.compareTo(sb)==0)
System.out.println("sa和sb相等");
else if(sa.compareTo(sb)<0)
System.out.println("sa小于sb");
else
System.out.println("sa大于sb");

//按字典顺序比较两个字符串,不考虑大小写。
if (sa.compareToIgnoreCase(sb)==0)
System.out.println("sa和sb相等");
else if(sa.compareToIgnoreCase(sb)<0)
System.out.println("sa小于sb");
else
System.out.println("sa大于sb");

//测试两个字符串区域是否相等。
if (sa.regionMatches(0,sb,0,3))
System.out.println("sa和sb区域相等");
else
System.out.println("sa和sb区域不相等");

//测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
if (sa.startsWith(sb,2))
System.out.println("子字符串符合前缀条件");
else
System.out.println("子字符串不符合前缀条件");

//测试此字符串是否以指定前缀开始。
if (sa.startsWith(sb))
System.out.println("sa符合前缀条件");
else
System.out.println("sa不符合前缀条件");

//测试此字符串是否以指定后缀结束。
if (sa.startsWith(sb))
System.out.println("sa符合后缀条件");
else
System.out.println("sa不符合后缀条件");

/*返回此字符串的哈希码。String 对象的哈希码根据以下公式计算:
s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]
*/
System.out.println("输出sa的哈希码: "+sa.hashCode());

//返回指定字符(用assic表示)在此字符串中第一次出现处的索引。
System.out.println("97在sa中第一次出现的位置: "+sa.indexOf(97));

//返回在此字符串(用assic表示)中第一次出现指定字符处的索引,从指定的索引开始搜索。
System.out.println("97在sa的子串中第一次出现的位置: "+sa.indexOf(97,2));

//返回指定子字符串在此字符串中最右边出现处的索引。
System.out.println("va在sa中最后一次出现的位置: "+sa.lastIndexOf("va"));

//返回指定子字符串在此字符串的指定子串中最右边出现处的索引。
System.out.println("va在sa的指定子串中最后一次出现的位置: "+sa.lastIndexOf("va",5));

//返回一个新的字符串,它是此字符串的一个子字符串。该子字符串从指定索引处的字符开始,直到此字符串末尾。
System.out.println("输出sa的从2开始的子串 :"+sa.substring(2));

//返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。因此,该子字符串的长度为 endIndex-beginIndex
System.out.println("输出sa的从2开始以4结束的子串 :"+sa.substring(2,4));

//返回一个新的字符序列,它是此序列的一个子序列。
System.out.println("输出sa的从2开始以4结束的子串 :"+sa.subSequence(2,4));

//将指定字符串连接到此字符串的结尾。
System.out.println("输出字符串连接后产生的新字符串: "+sa.concat(" asdghjas"));

//返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的
System.out.println("输出替代后产生的新字符串: "+sb.replace('a','k'));

//告知此字符串是否匹配给定的正则表达式。
if (sa.matches(sb))
System.out.println("sa和sb匹配");
else
System.out.println("sa和sb不匹配");

//当且仅当此字符串包含指定的 char 值序列时,返回 true。
if (sa.contains("java"))
System.out.println("sa包含“java”");
else
System.out.println("sa不包含“java”");

//使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
System.out.println("输出匹配的子串被替代后的新字串: "+sa.replaceAll("va","VA"));

//使用指定的字面值替换序列替换此字符串所有匹配字面值目标序列的子字符串。该替换从字符串的
System.out.println("输出被替代后的子串: "+sa.replace("va","VA"));

String sq="boo:and:foo";
String ww[]=sq.split(":");
//根据匹配给定的正则表达式来拆分此字符串。
System.out.println("输出拆分后的子串: "+ww);

//将字符串全部转换为小写
System.out.println("将sb转换为小写: "+sb.toLowerCase());

//将字符串全部转换大写
System.out.println("将sb转换为大写: "+sb.toUpperCase());

sa=" javanet";
//返回字符串的副本,忽略前导空白和尾部空白。
System.out.println("出去字符串的前导空白和尾部空白 :"+sa.trim());

int t[]=new int[5];
t[0]=97;
t[1]=98;
t[2]=100;
t[3]=99;
t[4]=101;
//返回此对象本身(它已经是一个字符串!)。
System.out.println("转变成的字符串为:"+t.toString()+" "+sa.toString());

//将此字符串转换为一个新的字符数组。
System.out.println("转变成的字符数组为:"+sa.toCharArray());

//返回 int 参数的字符串表示形式。
int p=9700;
System.out.println("int 参数的字符串表示形式为:"+String.valueOf(p));

//返回字符串对象的规范化表示形式。
System.out.println("字符串对象的规范化表示形式为:"+sa.intern());

//返回指定数组中表示该字符序列的 String。
char y[]=new char[10];
for(int i=0;i<10;i++)
y[i]='a'+1;
System.out.println("字符数组转换为字符串:"+String.valueOf(y,0,5));

//使用指定的格式字符串和参数返回一个格式化字符串。,表示从右到左没3为用,隔开;9d表示输出9位
System.out.println("输出格式化的结果:"+String.format("%1$9d", -31));
System.out.println("输出格式化的结果:"+String.format("%1$012d", -31230000));

}

}
/*
* ==与equals()的区别:
* ==是表示两个对象值相等,如1==1
equals是表示两个元素是同一个对象引用,如A.equals(A)为真,new A().equals(new A())为假
1.对于基本数据类型,只有==,没有equals()(注意String类型不是基本数据类型),所以很明显值相等就为true。
2.对于字符串,==指比较两者的内存地址,equals()则重写了Object类的equals(),比较的是内容,你可以查看API看看它怎么重写的。对于字符串是存放在方法区的字符串常量池里的,无论定义多少,只要字符串值相等都指同一块内存地址,所以==和equals()结果没区别。
3.对于实例对象而言,==比较的依然是内存地址(所以你可以看出无论什么情况,==一直比较的都是内存地址),而equals()默认重写Object类的equals()方法(比较地址)。但是一般我们会自己重写equals(),让它比较值是否相等。
== 比较的是两个变量本身的值。
对于对象变量来说(比如String类型的变量),比较的就是这个变量指向的对象所在的内存的地址。
因为equals来说,因为本身是一个方法,所以在类中重写该方法,达到各自的目的。
对于String来说,这个方法就是比较对象内存储的字符串是否相同。
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值