String本身是一个类本类。其它是一个char[]数组。
字符串为空的两种形式
1.表示引用为空: String str = null;——还没有初始化,没有分配内存空间。
2.表示空字符串: String str = “”;——已经创建了对象,已经分配了内存,但内存当中的内容为空。
String数据比较
1、“==”比较的是堆内存空间的地址。
2、“equals()”比较的是字符串的内容。

——————————————————————————————————————
实例化对象:
1、直接赋值

public static void main(String[] args) {
		// TODO Auto-generated method stub
		String name1="神仙姐姐";
		String name2="神仙姐姐";
		System.out.println("name1地址是否等于name2->"+(name1==name2));
	}
	//结果:name1地址是否等于name2->true

一个字符串就是一个String类的匿名对象。
String采用直接赋值,只要以后声明的字符串内容一样,就不会再去开辟新的堆内存空间。直接变换栈空间的引用地址。
String关键字
2、构造方法完成实例化

public static void main(String[] args) {
		// TODO Auto-generated method stub
		String name=new String("神仙姐姐");
		System.out.println("name->"+name);
	}

会开辟两个内存空间,而只有一个是有效的(不推荐使用这种方式)
String关键字
——————————————————————————————————————

字符串内容不能改变

public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str="神仙";
		str=str+"姐姐";
		System.out.println("str="+str);
	}
	//结果:str=神仙姐姐

实际情况内存分析:
String关键字
String对象内容的改变是通过内存地址的“断开-连接”变化完成的,而本身字符串的内容没变化。

String中常用方法:
1、字符串——>字符数组:toCharArray()
2、从字符串中取出指定位置字符:charAt()
3、字符串<=>byte数组:getBytes()
4、取得字符串的长度:length()
取数组长度使用length,取字符串长度用length()方法
5、查找指点字符串是否存在:indexOf()
6、去掉左右空格:trim()
7、字符串截取:substring()
8、按照指定位置拆分字符串:split()
9、转换字符串大小写:toLowerCase()
11、不区分大小写比较字符串内容:equalsIgnoreCase()
12、将指定字符串替换为其他字符串:replaceAll()

引用传递
引用传递实际上就是将堆内存空间试用权交给多个栈内存空间。

相关文章:

  • 2021-06-12
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-12
  • 2021-11-02
  • 2021-10-12
  • 2021-08-23
猜你喜欢
  • 2021-08-25
  • 2021-05-04
  • 2021-11-08
  • 2022-02-25
  • 2021-09-07
  • 2021-09-13
相关资源
相似解决方案