字符串string
1:创建字符串方式
字面量创建的方式
- 存放在堆里面
- 有string独立管理的字符串常量内存区 JDK1.8字符串常量区 放置在堆中
Intern()方法只针对两个字符串内容相等时,调用intern方法会先判断常量池中是否存在相同的字符串内容,如果存在,则返回字符串对象的引用
总结:说明string在栈和堆中不同的内存表达方式。
思考:string s1=“helloworld”
String s2=”hello”+”world”
S2.intern
String s3=”hello”
String s4=”world”
String s5=s3+s4
判断两两是否相等==
/**
*
*/
package com.zhiyou.O;
import java.util.Arrays;
//import java.lang.*;
//*计算机属于通配符 代表lang所有类都导入过来
//lang是java的基础包,所以默认已经导过来
/**
* @author Administrator
*
*/
public class StringClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
/*// 1字面量创建字符串对象的方式iterals
String str1 ="hello";
// 2传统的创建方式
// 这里hello就是匿名字符串
String str2 = new String("hello").intern();
//
String str3 = str1;
// 如果字符串常量池中之前有hello字符串对象,则str4直接指向这个字符串
// 不用重新开辟的内存空间,如此,可以节省内存资源
String str4 = "hello";
// 匿名字符串执行完毕后,就会被当成垃圾被gc回收。
System.out.println(str1==str2);
System.out.println(str1==str3);
System.out.println(str1==str4);*/
/*String s1 = "helloworld";
String s2 = "hello"+"world";
String s3 = "hello";
String s4 = "world";
String s5 = s3 + s4;
System.out.println(s1==s2);
System.out.println(s2==s3);
System.out.println(s3==s4);
System.out.println(s4==s5);
System.out.println(s5==s1);
System.out.println(s5==s2);*/
// 避免nullpointerException
String str1 = null;
// 字符串常量会放在前面,调用方法
System.out.println("laosun".equals(str1));
// 字符串的api方法 API 看类的结构 看那类中有呢些属性和方法供调用
// application program interface
// 应用程序接口
String str2 = "helloworld";
char char1 = str2.charAt(str2.length()-1);
System.out.println(char1);
// indexOf(char)返回某一个字符的索引值
int index = str2.indexOf('l');
System.out.println(index);
// 前缀后缀 返回值为boolean
boolean isStart = str2.startsWith("hello");
boolean isEnd = str2.endsWith("rld");
System.out.println(isStart);
System.out.println(isEnd);
// 拼接
String str7 = "laosun" + "is a handsome java man";
System.out.println(str7);
String str8 = str2.concat(" this is helloworld");
System.out.println(str8);
// 截取
String subStr1 = str7.substring(4);
String subStr2 = str7.substring(4, 8);
System.out.println(subStr1);
System.out.println(subStr2);
// 替换replace 返回一个string
String replaceStr1 = str7.replace("java", "c++");
System.out.println(replaceStr1);
// 分割 返回值类型是一个string[]数组
// 开发过程中,分割URL,文件的地址C:/zhiyou/java/a.txt
String[] splitArr = str7.split(" ");
for (String string : splitArr) {
System.out.println(string);
}
String packageStr = "com.zhiyou.string.laosun.demo";
String [] array=packageStr.split("\\.");
System.out.println(array.length);
for (String string : array) {
System.out.println("---"+string);
}
// trim 去除字符串两边的空格
System.out.println(" lao sum ".trim());
// trim去除的是半角的空格,对于全角的空格 (Unicode为12288)是无效的
// 解决方法是先用半角的空格去替换,然后再用trim方法
// 大小写转换
System.out.println(str7.toUpperCase());
System.out.println(str7.toLowerCase());
// 练习:1:判断回文 123321
// 2:safjkhbkdsbn153141332要求每4个字符分割成为一段
}
}