1.String类空间概述

目录
4.类
1.类空间概述
2.特性
3.常用方法
4.案例
1.模拟用户登陆
2.手机号码屏蔽
5.可变字符串
1.用法
2.效率
5.
1.由来
2.为什么使用?
3.怎么使用?
4.的概括及四则运算的应用
5.总结
6.Math类
4.类
类是final类,不可以被继承
1.类空间概述
字符串是常量,创建之后不可变
字符串字面值存储在字符串池中,可以共享
s = "hello";产生一个对象,字符串池中存储(推荐使用)
s=""则产生一个张三,然后把s指向""这个对象而不指向"hello",也在字符串池中储存
s1=""只是重新在字符串池中寻找""对象,如果有则直接指向,如果没有则重新创建一个,因为s和s1直接指向的""对象存在,两个在栈里的位置也会相同
s = new ("Hello"); 产生两个对象,堆、池各一个
s1 = new ("Hello");也产生两个对象,堆、池各一个
s1会先指向在堆里的对象,虽然最后指向都是字符串池中的"Hello"对象,但是s1和s2都各自创建了一个自己独有的堆对象,两个值是从不同的堆地址去前往字符串池的,所以不相等
例:1(人)是a(妈妈)和b(爸爸)生的,然后a和b离婚了,a又和c(爸爸)结婚生了1(人),虽然最后生的都是人,但是生的人的途径不一样
字符串常量池位于堆内存中,专门用来存储字符串常量,可以提高内存的使用率,避免开辟多块空 间存储相同的字符串,在创建字符串时 JVM 会首先检查字符串常量池,如果该字符串已经存在池 中,则返回它的引用,如果不存在,则实例化一个字符串放到池中,并返回其引用 。
package java_se.java_jinjie.neibulei.demo06;public class Demo {public static void main(String[] args) {String name="hello";//"hello"常量存储在字符串池中name="zhangsan";//"zhangsan"赋值给name变量,给字符串赋值时,并没有修改数据,而是重新开辟一个空间,然后引用新的地址String name2="zhangsan";//创建name2给他赋的值,会先去查看有没有"zhangsan"这个空间,如果有直接指向,如果没有则重新开辟//演示字符串的另一种创建方式 new String();String str = new String("java");String str1 = new String("java");System.out.println(str==str1);//false因为两个的地址不一样,==比较的是地址System.out.println(str.equals(str1));//true,在String类中equals被重写了,之比较内容}}
package java_se.java_jinjie.neibulei.demo06;public class demo05 {public static void main(String[] args) {String s1="abc";String s2="ab";String s3= s2+"c";System.out.println(s1 ==s3);//false//Java存在编译优化机制,程序在编译时: “a” + “b” + “c” 会直接转成 "abc"String a1="abc";String a2="a"+"b"+"c";System.out.println(a1==a2);//true}}
2.特性3.常用方法
1.();返回字符串长度
2.chaAt(int index);返回某个位置的字符
3.( str);判断是否包含某个字符串
4.();返回字符串对应的数组
5.();返回字符串首次出现的下标位置
6.();返回字符串最后一次出现的下标位置
7.trim();去掉字符串前后的空格
8.();把小写转成大写(字母) ();把大写转成小写(字母)
9.(str);判断是否以str结尾 (str);判断是否以str开头
10.(char php,char c#);用新的字符或字符串替换旧的字符或字符串
11.split();对字符串进行拆分
12.()比较两个内容是否一样(这里的是重写的)==在基本数据类型比较时用
()比较大小,先比较首个字符大小并输出差值,如果首字符相同依次比较,相等或不同停,如果前面都相等到最后一个个数不同,则输出相差的个数