初学杂文 String类
String:
两个字符床 String stra 和String strb
stra = "hello " ; strb = "hello "
在对象池中开辟一块内存"hello " stra与strb都指向同一块地址。
字符串的不可改变性
在JavaAPI文档中我们可以看到String类的定义:
public final class String extends Object implements Serializable, Comparable<String>, CharSequence
String类是一个final类,这代表一个String对象是不可改变的,String类的方法中我们也找不到任何能够改变字符串的值和长度的方法。这就是字符串的不可改变性。
当我们进行连接字符串操作的时候,Java虚拟机没有改变其中任何一个字符串,而是创建了一个新的String对象,把连接后的结果赋予了它。 Sun将String设计成不可改变的,这是为了让String的行为最优化。因为String在多数应用中都被大量使用,所以它的优化是非常关键的。
如果用 == 则比较两个字符串的地址是否一样。
用 stra.equals(str2) 则是比较两个字符串的内容是否一致。
2.compareTo()
如果两个字符串的长字符串的前几位是短字符串,则返回长字符串-段字符串的长度差。
如果两个字符串某个字符不同,则返回两个字符的ascll差
相等则返回 0;
String str1 = "hello" ;
String str2 = "hellow";
String str3 = "ha" ;
System.out.println("str1.compareto(str2)"+str1.compareTo(str2));//长度差
System.out.println("str2.comperto(str2)"+ str3.compareTo(str3));//字符差
结果:
-1
0
3.获取字符串的第 i 个字符 charAt();
例:System.out.println(str1.charAt(0)); 结果: h
4.String concat(String str) :将该String对象与str连接在一起。
5.查找
String str = "helloworld" ;
//返回满足条件的单词的第一个字母的索引
System.out.println(str.indexOf("world"));
//返回查到的的意义个字母索引
System.out.println(str.indexOf("l"));
System.out.println(str.indexOf("l",3));
//从后面开始后查找
System.out.println(str.lastIndexOf("l"));
//返回bool值
System.out.println(str.contains("ll"));
//是否以某些单词开头呢
String str = "helloworld" ;
System.out.println(str.startsWith("he")) ;
System.out.println(str.startsWith("ll",2));
System.out.println(str.endsWith("ld"));
6.替换
public class Test{
public static void main(String args[])
{ String str = "helloworld";
String resultA = str.replaceAll("l","_");//全部替换
String resultB = str.replaceFirst("l","_") ;//替换首个
System.out.println(str);
System.out.println(resultA);
System.out.println(resultB);
}
}
7.字符串截取
String str = "helloworld" ;
String str1 =str.substring (0,5); //从第 0 个开始截取 5个字符
String str2 =str.substring (5); //第五个开始截取到末尾
System.out.println(str1);
System.out.println(str2);
输出结果:
hello
world
8.字符串拆分
String str = "helloworld nihao mldn" ;
String result [] = str.split(" ") ; //中间是一个空格就按照空格拆分,如果引号中间什么都没 有则按照每个字母拆分
String result [] = str.split(" ",2) ;//如果能拆好多个,则按照limit(2)最多拆成2个
String str = "192.168.1.1" ; //IP地址拆分,,如果是敏感字符拆分字符(正则标记)使用 (\\.)拆分。
String result [] = str.split("\\.") ;
9 其他方法
System.out.println(stra.toUpperCase()); //字符转为大写
System.out.println(stra.toLowerCase());//字符转为小写字母
System.out.println(stra.trim()) ;//去掉字符串两边的空格,用处就是,用户输入的时候可能 两边会输入不必要的空格
· str.length()//获得字符的长度,,与数组的*.length 不同
str.isEmpty()) //是否字符串为空
10.遗憾
String 少了一个功能,首字母大写,其余字母小写的功能。
只能自己写
String str = "hELLo";
System.out.println(initcap(str));
}
public static String initcap(String temp)
{
return temp.substring(0,1).toUpperCase() + temp.substring(1).toLowerCase() ;
}
初学杂文 String类的更多相关文章
- 【Java】整理关于java的String类,equals函数和比较操作符的区别
初学 Java 有段时间了,感觉似乎开始入了门,有了点儿感觉但是发现很多困惑和疑问而且均来自于最基础的知识折腾了一阵子又查了查书,终于对 String 这个特殊的对象有了点感悟大家先来看看一段奇怪的程 ...
- Java入门篇(五)——Java的字符串/String类
前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...
- Java入门篇(五)——字符串/String类
前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...
- 标准库String类
下面的程序并没有把String类的所有成员方法实现,只参考教程写了大部分重要的成员函数. [cpp] view plain copy #include<iostream> #include ...
- 自己实现简单的string类
1.前言 最近看了下<C++Primer>,觉得受益匪浅.不过纸上得来终觉浅,觉知此事须躬行.今天看了类类型,书中简单实现了String类,自己以前也学过C++,不过说来惭愧,以前都是用C ...
- C++ string类的实现
c++中string类的实现 今天面试被考到了, 全给忘记了!!! //string类的实现 #include <iostream> #include <string.h> ...
- String类的功能
String类 标红的为较少出现的 1.判断功能 boolean equals(Object obj) :比较字符串内容是否相同,区分大小写 boolean equalsIg ...
- java基础复习:final,static,以及String类
2.final 1)为啥String是final修饰的呢? 自己答: 答案: 主要是为了“效率” 和 “安全性” 的缘故.若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所 ...
- String类和StringBuffer类的区别
首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...
随机推荐
- VC与ADO数据库操作
VC与ADO数据库操作 学研部的同志们,大家好! 想开一次学习会,实习时间冲突了,只好把文档发给大家看了.重点推荐李振龙的BMP读图教程! 尤其是大三GIS班的同志,注意了,可能实习用得上的! 一.A ...
- linux服务器安装php GD扩展库方法
Strict Standards: Only variables should be assigned by reference in/home/wienholl/public_html/includ ...
- 草,又学了个新命令,nc传文件。
nc -l 5222 > aa nc 192.168.0.48 5222 < a http://www.linuxso.com/command/nc.html
- java.lang.RuntimeException: java.lang.NoSuchMethodException:
[java] 15/12/19 14:09:46 INFO mapred.JobClient: Task Id : attempt_201512182036_0017_m_000000_0, Stat ...
- HDU 1114 Piggy-Bank(判断是否恰好装满的背包)
其实这道题在寒假自学训练赛的时候就做过,不过感觉现在的理解跟当时真的不一样,大一半年过去了,变了这么多,我们都在进步,一回头便走出了这么远... 好了,题目很简单,一个背包,装不满做一个标记就行了 # ...
- 转:Web测试需要了解的知识
这里只是介绍Web测试相对于其他类型软件的测试额外需要了解的内容,关于测试方法不是本文的重点,里面谈到的每一项在以后的文章中再说明.大家看到这些内容可能都不陌生,我晒出的内容也许不对或有误导,请大家指 ...
- 转:Validation of viewstate MAC failed异常的原因及解决方法
ViewState是一种机制,ASP.NET 使用这种机制来跟踪服务器控件状态值,否则这些值将不作为 HTTP 窗体的一部分而回传.也就是说在页面刷新或者回传的时候控件的值将被清空,我们在aspx.c ...
- document.createElement方法的使用
我们在使用createElemen方法t创建一个元素节点的时候,似乎在IE下面怎么写都可以,但切换到FF等其它浏览器却总是会报错. 比如我们要创建一个input元素,那么在IE下,我们可以有多种写法: ...
- word 书签排序算法
直接上代码 /// <summary> /// 通过计算插入引文的位置格式化合适的引文序号 /// </summary> /// <returns></ret ...
- spring事务的传播性的理解
来自至顶网的文章 http://developer.zdnet.com.cn/2007/0521/402066.shtml