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语法的更多相关文章

  1. 【转】详解Java正则表达式语法

    (转自: http://www.jb51.net/article/76354.htm) 这篇文章主要介绍了Java正则表达式语法,包括常用正则表达式.匹配验证-验证Email是否正确以及字符串中查询字 ...

  2. C++与Java的语法区别

    C++与Java的语法区别 首先,两个大的不同是主函数和怎样编译的不同,接下来是许多小的区别. main 函数C++//自由浮动的函数int main( int argc, char* argv[]) ...

  3. java基础语法要点<二>(基于1.8)

    注解(元数据) 从jdk5 开始,java支持在源文件中嵌入补充信息,称为注释(annotation).注释不会改变程序的动作,也就不会改变程序的语义.但在开发和部署期间,各种工具可以使用这类信息.元 ...

  4. java基础语法要点<一>(基于1.8)

    http://yishouce.com/java/run http://www.shucunwang.com/RunCode/java/ 数据类型 8种基本数据类型及对应的 类型封装器 byte, s ...

  5. Atitti.java exp ast java表达式语法ast构造器

    Atitti.java exp ast java表达式语法ast构造器 /atiplat_cms/src/com/attilax/lang/AstParser.java 原理 分割tokens_sli ...

  6. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  7. JAVA正则表达式语法大全

    [正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n ...

  8. java基础语法笔记

    这段时间看了一些java,急了一些笔记,记下一遍以后复习用! 2016-07-24 15:12:40 java很多语法都跟C#类似,下面列举一些不同的地方******注意***** java中的系统方 ...

  9. Java基础语法(下篇)

     Java基础语法(下篇) 内容概要:        (1)函数的定义        (2)函数的特点        (3)函数的应用        (4)函数的重载               ...

随机推荐

  1. GC分析工具使用-gceacy分析堆栈

    gceasy是一款在线的gc分析工具.试用一下分析jstack的日志 1.jstack -l 3539 > 3539.stack 2.打包成zip文件 3.上传https://gceasy.io ...

  2. luogu P2495 [SDOI2011]消耗战 |虚树+LCA+dp

    题目描述 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望.已知 ...

  3. 深入浅出 REST(转)

    文章讲的不错,更具体一些,对实践的指导意义更强 原文:https://www.infoq.cn/article/rest-introduction/ 不知你是否意识到,围绕着什么才是实现异构的应用到应 ...

  4. WPF 精修篇 旋转 RotateTransForm

    原文:WPF 精修篇 旋转 RotateTransForm 旋转 RotateTransform Angle 角度 CenterY ,CenterX  中心点位置 和缩小一样 左侧 和右侧 做了对比 ...

  5. 在 VSCode 调试过程中,使用 Watcher,免手动重新编译

    1.安装Microsoft.DotNet.Watcher.Tools包 dotnet add package Microsoft.DotNet.Watcher.Tools --version 2.0. ...

  6. sonarqube+sonar runner分析C#代码

    最近研究一个代码覆盖率和代码分析工具.遇到一些比较坑的问题,现在分享给大家. 1.Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质量.通过插件机制,Sonar 可 ...

  7. Java内功心法,创建型设计模式包括哪些

    1. 单例(Singleton) Intent 确保一个类只有一个实例,并提供该实例的全局访问点. Class Diagram 使用一个私有构造函数.一个私有静态变量以及一个公有静态函数来实现. 私有 ...

  8. Java高级工程师面试宝典

    Java高级工程师面试宝典 JavaSE 多线程 进程与线程的区别? 答:进程是所有线程的集合,每一个线程是进程中的一条执行路径,线程只是一条执行路径. 为什么要用多线程? 答:提高程序效率 多线程创 ...

  9. JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  10. Vue-Cli 3.x 创建的项目中对 import 引入的 CSS 样式启用 autoprefixer

    问题描述: Vue-Cli 3.x 默认开启了 autoprefixer,但对于在 main.js 中通过 import 引入的 CSS 并没有自动添加前缀 分析原因: autoprefixer 在项 ...