java菜鸟笔记:String用法详解

当初作为一个计算机小白,最喜欢的就String类,当时只会玩控制台打印(System.out.println();)的我,终于能够用代码显示自己想要的语言了。
简单介绍一下String类,全名为java.lang.String;
String是java系统给我们免费提供的类库之一,对了。这些java给我们写好的工具类库又叫做API(应用程序编程接口),经常使用的有:字符串操作、集合操作、文件操作、输入输出操作、网络操作、多线程等。

- String的构造

String类有多种构造方法,这里不一一介绍,比较常用的就是:
new String();
new String(String original);
String(char[] value) ;
不过在我看来,这些都不常用,我都没用过,当我需要声明一个String类型的变量时,我会写String str = "";此时变量str的值不为null,也就是说String类可以不通过写new来创建对象,这一点比较特殊。因为我们所了解的可以这样声明的变量类型只有所谓的基本类型,如int、long、char、double……但是String并不属于基本类型,而是一个规规矩矩的包装类。这只是一点,下面我们来介绍一下String的特殊性。

  • String的特殊性
    。java.lang.String是由final修饰的,不能被继承
    。字符串一旦被创建,对象永远无法改变,但字符串引用可以重新赋值
    一旦改变字符串的值,则必定是产生了新的对象,指向新的地址
    。字符串其实是字符数组。。
    。当使用字面量创建字符串对象时,会重用内容相同的字符串对象,如:
String s1 = "HelloWorld";
String s2 = "HelloWorld";
System.out.println(s1==s2);  //true

也就是说,上面写法s1/s2指向同一地址的对象。
双等于比较的是两者的地址,但是在String中不是恒定成立的,比如使用new创建对象时,就算是与之前内容一样,也不会沿用之前的地址,而是强制的创建新地址,此时双等于不会成立,但是.equal();成立

String s1 = "HelloWorld";
String s2 = new String("HelloWorld");
System.out.println(s1==s2);  //false
System.out.println(s1.equal(s2));  //true

注意下面的情况:

String s1 = "HelloWorld";
String s2 = "Hello"+"World";
System.out.println(s1==s2);  //true
System.out.println(s1.equal(s2));  //true
String s1 = "HelloWorld";
String s2 = "Hello";
String s3 = "World";
String s4  =s2+s3;
System.out.println(s1==s4);   //false
System.out.println(s1.equal(s4));  //true

这些例子我们可以看得出“= =”和“.equal()”是有区别的,这里简单一提,“= =”代表的意思就是比较符号两边变量所指向的地址,这个符号的意义是不会被重写的;而.equal()是封装在类Object中的一个方法,如果不重写,它的意义和“==”意义相同,而上文中String类就对equal进行了重写,它在String类型的使用是用来比较字符串的字符序列是否完全相等。

  • String的常用方法
    我们在eclipse中随便声明一个String对象,然后用小数点可以点出来很多的方法,这些就是String及其父类所封装的可以被我们使用的方法。下面介绍几个典型代表,介绍时我尽量使用代码表达意义,因为都很简单。
    1、.toCharArray()
String str = "thinking in java";
char[] cha = str.toCharArray();
System.out.println(cha);      //char[] 数组直接可以打印,不用遍历

2、indexof

String str = "thinking in java";
int index = str.indexOf("java");   //目标字符在字符串前面有几个字符(获得它的下标)
System.out.println("index:"+index); //index:12

index = str.indexOf("in",3);  //  从下标3开始找目标字符
System.out.println("index"+index);   //  index:5

3、lastIndexOf

String str = "thinking in java";
index = str.lastIndexOf("in");//目标字符在字符串中最后一次出现的位置
System.out.println(index);  //9

4、substring

//获取当前字符串中,指定范围内的字符串
	String str = "www.oracle.com";
	String sub = str.substring(4,10); //含str[4]不含str[10](java规定:含开头不含结尾)
	System.out.println(sub);//oracle
	
	/*
	 * 下面是获取域名的方法,适用所有基本域名
	 */
	String url = "http://www.tedu.cn/";
	String u= url.substring(url.indexOf(".")+1,url.indexOf(".",url.indexOf(".")+1));
	System.out.println(u);
	//截取第一个点和第二个点之间的内容
	/*
	 * substring 重载的方法,只需要一个参数,
	 * 即从指定位置开始,截取到末尾
	 */
	相当于str.substring(x, str.length());

5、trim

//去除字符串两边的空白(包括tab和空格)  trim();
String str = "    hello!		 ";
String s = str.trim();
System.out.println(str);//    hello!		
System.out.println(s);//hello!

6、charAt

//获取当前字符串指定位置上的字符,并转化为char型
String str = "thinking in java";
char a = str.charAt(9);
System.out.println(a);  //i

//例题:检查字符串是否为回文
String str = "上海自来水来自海上";  //这就是回文

for (int i = 0; i < str.length()/2; i++) {
	if(str.charAt(i)!=
	str.charAt(str.length()-1-i)){
		System.out.print("不");//不换行
		break;
	}
	//下标为0的应该等于下标为8的
	
}
System.out.println("是回文!");

7、大小写转化

/*
 * 转换大小写的方法
 * String toUpperCase();
 * String toLowerCase();
 */

8、startsWith、endsWith

//查看当前字符串是否是以指定的字符串开始或者结尾的
	String str = "You are a bitch !";
	if (str.startsWith("You")) {  //该方法返回值是一个boolean型
		System.out.println(true);//true
	}else {
		System.out.println(false);
	}
	System.out.println(str.endsWith(" !"));//true

上文我们提到String是final修饰的不可被继承,而且对象一旦创建不能被改变地址只能改变其值,但是要注意,频繁修改字符串会带来性能问题。所以接下来的文章我会介绍StringBuilder和StringBuffer。
码字不易,点波关注成为我第一个粉丝吧!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪力乌龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值