一、构造器
实质是给底层的char数组value赋值
String s1 = new String();
String s2 = new String(“abc”);
String s3 = new String(new char[]{‘a’,‘b’,‘c’});
二、方法
str.length() 字符串长度本质是底层的char数组的长度
str.isEmpty() 本质是判断底层char数组长度是否为0
str.charAt(i) 本质是取底层char数组的第i个元素(字符)
str1.equals(str2)本质是比较二者底层char数组的元素是否都相等
str1.compareTo(str2)本质是返回二者底层char数组中第一个不同元素(字符的码值)之差,如果没有不同元素,则返回二者底层char数组长度之差。如果返回0,说明二者底层char数组相同。
三、常用方法
package com.llg.learnString;
import java.util.Arrays;
import java.util.Locale;
public class Learn01 {
//程序的入口
public static void main(String[] args) {
String s11 = "abcdefghijk";
System.out.println(s11);
//字符串截取 从第3位开始取到最后
System.out.println(s11.substring(3));//defghijk
//字符串截取 从第3位开始取到第6位最后
System.out.println(s11.substring(3, 6));//def
//字符串合并拼接 把zzzzz拼接到后面
System.out.println(s11.concat("zzzzz"));//abcdefghijkzzzzz
//字符串中的字符替换 把b替换为x
System.out.println(s11.replace('b','x'));//axcdefghijk
String s12 = "a-b-c-def-ghi-jk";
//字符串分割 以-分割字符串,返回字符串数组
String[] strarr= s12.split("-");
System.out.println(Arrays.toString(strarr));//[a, b, c, def, ghi, jk]
//转换为小写
String s13 = "abc";
System.out.println(s13.toUpperCase());//ABC
//转换为大写
String s14 = "ABC";
System.out.println(s14.toLowerCase());//abc
//去除首尾空格
String s15 = " a b c def ";
System.out.println(s15.trim());//a b c def
//toString
String s16 = "abc";
System.out.println(s16.toString());//abc
//转换为字符串String.valueOf
System.out.println(String.valueOf(true));//true
System.out.println(String.valueOf(false));//false
}
}
四、String的内存分析
4.1、无变量参与的字符串拼接,编译后只存在结果字符串
编译器优化
4.2、new String(“abc”)新的字符串对象
4.3、变量参与的字符串拼接,编译器不会优化
反汇编查看javap -c Learn5.class
原文地址:http://www.cnblogs.com/javaxubo/p/16862810.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性