第三章-字符串类[String]
String介绍
String是我们使用最多的一种字符串数据类型,它本质是一个对象,但String又和其他的对象有不同点;
重点
直接已""进行创建 和 使用 new 关键字创建他们存储的位置是不同的!并且一旦被创建是不可以被更改的,很多人的代码中都使用到了 + 符号进行拼接,但本质是又创建一个对象在把2个对象字符串进行拼接成为另外一个新的字符串;
String str1 = new String("我");//堆空间 string@001
String str2 = new String("我");//堆空间 string@002
String str3 = "我";//常量池
String str4 = "我";//常量池
String str5 = "abc";//常量池
String str6 = "a"+"b"+"c";//常量池
str1 == str2 ? //不等,堆内存空间地址不同
str1 == str3 ? //不等,引用地址不同
str3 == str4 ? //等于,都是指向常量池
str5 == str6 ? //等于,常量池检查机制
String的常用方法
| 返回值类型 | 方法名称 | 描述 |
|---|---|---|
| int | length() | 返回字符长度 |
| int | compareTo( String ) | 比较字符字典顺序 |
| boolean | equals( String ) | 字符串内容比较 |
| boolean | equalsIgnoreCase( String ) | 字符串内容比较,不区分大小写 |
| boolean | startsWith( String ) | 字符串以什么开头 |
| boolean | endsWith( String ) | 字符串以什么结尾 |
| int | indexOf( char ) | 返回字符所在索引位置 |
| int | indexOf( char,index ) | 从哪个索引位置开始找,返回索引位置 |
| char | charAt( index ) | 返回索引位置的字符 |
| String | valueOf( baseDataClass ) | 返回字符串 |
| String | toUpperCase() | 全部修改为大写 |
| String | toLowerCase() | 全部修改小写 |
| char[] | toCharArray() | 转换为字符数组 |
String str1 = "hello my name is jack the is i introduce";
占位符
在我们处理数据的时候需要对其它的数据进行拼接,处理起来特别麻烦,我们可以通过设置占位符的方式去对字符串进行改造,例如:我要在第一个占位符的位置插入一个字符串,第二个占位符的位置插入一个变量等...
| 转 换 符 | 说 明 |
|---|---|
| %s | 字符串类型 |
| %c | 字符类型 |
| %b | 布尔类型 |
| %d | 整数类型(十进制) |
| %x | 整数类型(十六进制) |
| %o | 整数类型(八进制) |
| %f | 浮点类型 |
| %a | 十六进制浮点类型 |
| %e | 指数类型 |
| %g | 通用浮点类型(f和e类型中较短的) |
| %h | 散列码 |
| %% | 百分比类型 |
| %n | 换行符 |
| %tx | 日期与时间类型(x代表不同的日期与时间转换符 |
String introduce = "我的名字叫:%s,今年:%d岁";
String myIntroduce = String.format(introduce,"老王",48);
---
StringBuffer和StringBuilder介绍
概述:
StringBuffer是可变长字符串,在JDK1.0开始就已经存在,它被synchronized关键字所修饰,因此它是安全的,它的构造器分为空参和有参2个构造,无参数构造在对象创建时会为它分配16个字节数组空间,如果是有参数构造会把构造所传递的字符串存储到StringBuffer中并追加16个字节数组空间,但由于对字符串的并发情况下的操作并不多,在JDK1.5时推出了StringBuilder字符串类,它们的底层完全一样,只是StringBuilder比StringBuffer少了一个Synchronized关键字,在操作时不会上锁;
来自一个菜逼程序员
浙公网安备 33010602011771号