从零开始的java_day8.String类_1


前言

今天看到了第八章的String类,只学了五小节多一点,又是摸鱼的一天


一.构造String对象

1.String对象分为常量和非常量。

String常量对象:String s1 = "你好";

String非常量对象:String s2 = new String("你好");

简单来说“=”后直接接“你好”、“abc”、“123”等是常量对象;“=”后接new的就是非常量。

常量和非常量的区别在于引用。

对于常量对象,两个不同对象如果有相同实体,则他们的引用也相同。

如String s1 = "你好”;String s2 = “你好”;那么s1 == s2的值为true,也就是说s1和s2的引用相同。

对于非常量对象,两个不同对象即使实体相同,他们的引用也不相同。

如String s1,s2;

s1 = new String("ab");

s2 = new String("ab");

s1 == s2的值为flase,也就是说每创建一个非常量对象就会分配一个新地址。

2.其他构造方法:

char a[] = {'a','b','c'};

String s = new String(a);

相当于String s = new String("abc");

char a[] = {'零’,‘一’,‘二’,‘叁’};

String s = new String(a,1,3);//数组a从a[1]开始的三个字符

相当于String s = new String("一二叁");

二.字符串的并置

String对象可以用“+”进行并置运算。

如String you = "你”;

String hi = “好”;

String test1 = you+hi;

String test2 = “你”+“好”;

需要注意的是test1==test2的值为flase,只要参与并置运算的有一个是变量那么这个新对象就是非常量,也就是说you+hi相当于new String(“你好”)。

三.String类的常用方法

1.public int length()

和之前学的求数组长度一样,获取String对象的字符序列长度。例如:

String s = "1945年抗战胜利";

int n1 = s.length();

int n2 = "小鸟fly".length();

n1的值为9,n2的值为5.

2.public boolean equals(String s)

String对象调用equals(String s)方法比较当前String对象的字符序列是否与参数s指定的String对象相同。例如:

String tom = new String("天道酬勤”);

String boy = new String("知心朋友”);

String jetty = new String("天道酬勤”);

那么,tom.equals(boy)的值为flase,tom.equals(jetty)的值为true。

注意比较的是对象里的实体而不是引用。

书上还说比较时忽略大小写,可是我自己编译运行是区分大小写的,不知道是不是时代变了。

3.public boolean startsWith(String s)、public boolean endsWith(String s)

String对象调用startsWith(String s)方法,判断当前String对象的字符序列前缀是否是参数指定的String对象s的字符序列,例如:

String tom = "天气预报,小雨”,jerry = “比赛结果,中国胜利”;

那么,tom.startsWith("天气")的值为true,jerry.startsWith("天气”)的值为flase。

String对象调用endsWith(String s)方法,判断当前String对象的字符序列后缀是否是参数指定的String对象s的字符序列,例如:

tom.endsWith("大雨")的值为flase,jerry.endsWith(“胜利”)的值为true。

区分大小写

4.public int compareTo(String s)

String对象调用compareTo(String s)方法,按字典序也就是abcd...顺序(ascll码)与参数指定的String对象s的字符序列比较大小,相同返回0;大于s返回正值;小于s返回负值。例如:

String str = "abcde";

str.compareTo("boy")中a的位置为97,b的位置为98,即返回值<0;

str.compareTo("aba")返回值>0;

str.compareTo("abcde")返回0。

5.public boolean contains(String s)

String对象调用contains方法判断当前String对象的字符序列是否包含参数s的字符序列,例如:

String tom = "student",那么tom.contains("stu")为true,tom.contains("lol")为flase。

6.public int indexOf(String s)和public int lastIndexOf(String s)(lastIndexOf的Index是大写的i不是L,第一个是小写的L)

String对象的字符序列索引位置从0开始,例如,对于String tom = “abcd”,索引位置0,1,2,3分别对应a,b,c,d。

indexOf(String s)从当前String对象的字符序列的0索引位置开始检索首次出现s的字符序列的位置,并返回该位置。如果没有检索到则返回-1.

lastIndexOf(String s)从当前String对象的字符序列的0索引位置开始检索最后一次出现s的字符序列的位置,并返回该位置。如果没有检索到则返回-1.

indexOf(String str,int startpoint)方法是一个重载方法,参数startpoint的值用来指定检索的开始位置。

例如:

String tom ="I am a good cat";

tom.indexOf("a");//值为2

tom.indexOf("good",2);//值为7

tom.indexOf("a",7);//值为13

tom.indexOf("w",2);//值为-1

tom.lastIndexOf("a");//值为13

String对象的字符序列中的转义字符是一个字符,如“\n”为一个字符。

特别注意,String对象的字符序列中如果使用目录符,那么Windows目录符必须转义写成\\,Unix目录符/直接使用即可。

7.public String substring(int startpoint)

调用substring(int startpoint)方法,复制当前String对象的字符序列中的startpoint位置开始到最后位置上的字符得到新String对象的字符序列。

调用substring(int startpoint,int end)方法,复制当前String对象的字符序列中的startpoint位置开始到end-1位置上的字符得到新String对象的字符序列。例如:

String tom = "我喜欢篮球”;

String str = tom.substring(1,3);//str = "喜欢”  而不是 “喜欢篮”!

String str = tom.substring(0);//str = "我喜欢篮球”

8.public String trim()

调用trim()得到新String对象,这个新的String对象的字符序列是将原本String对象字符序列中去掉开头和结尾的空格后的字符序列。例如:

String str = "     你   好     ”;

String tom = str.trim();//tom = "你   好"    只删除前面和后面的空格。     


总结

String对象的字符序列中的转义字符是一个字符,如“\n”为一个字符。

特别注意,String对象的字符序列中如果使用目录符,那么Windows目录符必须转义写成\\,Unix目录符/直接使用即可。

复盘也太累了叭

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值