Java String语法
String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。
字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享。(常量池技术)
Java语言为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串。
1.char charAt(int index);//返回 char指定索引处的值。
2.int compareTo(String anotherString);//按字典顺序比较两个字符串。
如:int cha=s1.compareTo(s2);
比较字符串s1和s2,逐位比较,返回 第一个不同的字符,如果下标是i,返回(s1[i]-s2[i])。
如果s1="abc";s2="abc";返回0
如果s1="123456789";s2="123";返回后面不相同的部分("456789")的长度,这里返回6
如果s1="123";s2="123456789";返回-6
如果s1="159";s2="130"或者"136";返回第一个不相同的字符之差,返回'5'-'3'=2
3.boolean endsWith(String suffix);//测试此字符串是否以指定的后缀结尾
boolean startsWith(String suffix);//测试此字符串是否以指定的前缀开头
4.int indexOf(int ch);//返回指定字符第一次出现的字符串内的索引
5.int indexOf(int ch, int fromIndex);//返回指定字符第一次出现的字符串内的索引,以指定的索引开始搜索。
6.int	indexOf(String str);//返回指定子字符串第一次出现的字符串内的索引。
7.int	indexOf(String str, int fromIndex);//返回指定子串的第一次出现的字符串中的索引,从指定的索引开始。如果找不到,返回-1
8.int length();//获取长度
9.String substring(int beginIndex, int endIndex);//返回一个字符串,该字符串是此字符串的子字符串。取头断尾。
10.String trim(String str);//删去前后缀的空白格
11.char[] toCharArray();//将String型转化为新的char字符数组,可用于修改内部字符,比Substring()截取拼接快多了
String s="hello";
int nowx=1,xx=3;
char c[]=s.toCharArray();
c[nowx]=c[xx];
c[xx]=s.charAt(nowx);
String next=new String(c);
12.整型浮点型和String互转,封装类和String里的静态方法
String str="123";
int a=Integer.parseInt(str);//String转整型
String sa=String.valueOf(a);//整型转回String
double f=1234.56;
String sf=String.valueOf(f);//浮点型转String
double ff=Double.parseDouble(sf);//String转浮点型
13.String toLowerCase();//字母全部变小写,其他字符不变,包括中文或符号
14.String	toUpperCase();//字母全部变大写,其他字符不变,包括中文或符号
15.String[] split(String regex);//按相同字符串regex的内容进行分割,存进String数组
但这个regex是一个匹配模式,不是普通的字符串,如果遇到"."、"*"、"|"、"+"、"\\"等符号都需要转义,否则运行后有些是抛出异常有些是没有达到预期结果,遇到这种情况加个"\\"试试,如"\\."、"\\*"、"\\+"等。在regex中,"|"这个字符是连字符,可以按多种符号进行分割。
public class TestString {
    public static void main(String[] args) {
        String s1="守林鸟+博客园";
        String []s=s1.split("\\+");
        for(int i=0;i<s.length;i++)
            System.out.println(s[i]);
        System.out.println("-----------------");
        s1="守林鸟|博客园";
        s=s1.split("\\|");
        for(int i=0;i<s.length;i++)
            System.out.println(s[i]);
        System.out.println("-----------------");
        s1="守林鸟\\博客园";
        s=s1.split("\\\\");
        for(int i=0;i<s.length;i++)
            System.out.println(s[i]);
        System.out.println("-----------------");
        s1="shou lin niao bo ke.yuan";
        s=s1.split("lin|bo|\\.");
        for(int i=0;i<s.length;i++)
            System.out.println(s[i]);
    }
}
输出:
守林鸟
博客园
-----------------
守林鸟
博客园
-----------------
守林鸟
博客园
-----------------
shou 
 niao 
 ke
yuan
16.String为什么是final的?
(1)为了实现常量池技术,在常量池中,需要的时候直接拿(指向引用),不需要开辟内存,省空间。
(2)因为字符串是不可变的,所以是多线程安全的,同一个字符串实例可以被多个线程共享。这样便不用因为线程安全问题而使用同步。字符串自己便是线程安全的。
17.至于对比StringBuffer和StringBuilder,网上有很多毁三观的测试,说法不一而同,暂不考虑(无知者无畏)。
牛客刷题
1.java7后switch支持String作为条件。switch语句和子句表达式都不能为null,NullPointerException
Java String语法的更多相关文章
- 【转】详解Java正则表达式语法
		(转自: http://www.jb51.net/article/76354.htm) 这篇文章主要介绍了Java正则表达式语法,包括常用正则表达式.匹配验证-验证Email是否正确以及字符串中查询字 ... 
- C++与Java的语法区别
		C++与Java的语法区别 首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别. main 函数C++//自由浮动的函数int main( int argc, char* argv[]) ... 
- java基础语法要点<二>(基于1.8)
		注解(元数据) 从jdk5 开始,java支持在源文件中嵌入补充信息,称为注释(annotation).注释不会改变程序的动作,也就不会改变程序的语义.但在开发和部署期间,各种工具可以使用这类信息.元 ... 
- java基础语法要点<一>(基于1.8)
		http://yishouce.com/java/run http://www.shucunwang.com/RunCode/java/ 数据类型 8种基本数据类型及对应的 类型封装器 byte, s ... 
- Atitti.java exp ast java表达式语法ast构造器
		Atitti.java exp ast java表达式语法ast构造器 /atiplat_cms/src/com/attilax/lang/AstParser.java 原理 分割tokens_sli ... 
- java面向对象编程——第二章 java基础语法
		第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ... 
- JAVA正则表达式语法大全
		[正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n ... 
- java基础语法笔记
		这段时间看了一些java,急了一些笔记,记下一遍以后复习用! 2016-07-24 15:12:40 java很多语法都跟C#类似,下面列举一些不同的地方******注意***** java中的系统方 ... 
- Java基础语法(下篇)
		 Java基础语法(下篇) 内容概要: (1)函数的定义 (2)函数的特点 (3)函数的应用 (4)函数的重载 ... 
随机推荐
- tecplot——Fluent重叠网格解决方案
			算例来源:http://blog.sina.com.cn/s/blog_af99efb50102xoh3.html 受上篇博文的启发,在tecplot当中也能采用类似的方法处理Fluent的重叠网格计 ... 
- python之lambda、filter、map、reduce的用法说明(基于python2)
			python中有一些非常有趣的函数,面试的时候可能会遇到.今天也来总结一下,不过该类的网上资料也相当多,也没多少干货,只是习惯性将一些容易遗忘的功能进行整理. lambda 为关键字.filter,m ... 
- QuantLib 金融计算——收益率曲线之构建曲线(3)
			目录 QuantLib 金融计算--收益率曲线之构建曲线(3) 概述 估算期限结构的步骤 读取样本券数据 一些基本配置 配置 *Helper 对象 配置期限结构 估算期限结构 汇总结果 当前实现存在的 ... 
- SpringBoot 系列教程自动配置选择生效
			191214-SpringBoot 系列教程自动配置选择生效 写了这么久的 Spring 系列博文,发现了一个问题,之前所有的文章都是围绕的让一个东西生效:那么有没有反其道而行之的呢? 我们知道可以通 ... 
- RabbitMQ的构架
			初识rabbitMQ RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现. AMQP :Advanced Message Queue,高级消息队列协议.它是应用层协议的一个开放 ... 
- yarn安装node-sass失败问题
			注:使用 yarn install 命令安装依赖时报错 第一步:更改镜像源 yarn config set registry https://registry.npm.taobao.org -g 第二 ... 
- windowserver --------  修改服务器防火墙
			再服务器中安装好软件的时候,我们通过别的电脑来访问服务器中的软件的时候,会出现访问不了的情况,这是可能是因为服务器中的防火墙中的进站端口,没有开放,一般软件进行部署的时候会开放801到 810 之间的 ... 
- 使用excel中的数据快速生成sql语句
			在小公司的话,总是会有要开发去导入历史数据(数据从旧系统迁移到新系统上)的时候.这个时候,现场实施或客户会给你一份EXCEL文档,里面包含了一些别的系统上的历史数据,然后就让你导入到现在的系统上面去. ... 
- 在 ubuntu 下安装 mono 和 xsp4 ,并测试
			1. 安装完 ubuntu 后,在 ubuntu 软件中查看是否自带了 mono 运行时和 XSP4,如果没有,则选中后,点击安装按钮. 2. 安装完后,在终端(类似于 Windows 上的命令行工具 ... 
- 错误:error: failed to push some refs to 'https://github.com/pzq7025/KG.git'的解决办法
			一.问题在进行[git push orgin master]的时候出现如下错误 ! [rejected] master -> master (non-fast-forward) error: f ... 
