⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 10_string_day05.txt

📁 达内科技上课的 java学习笔记 分为18天学完
💻 TXT
字号:
String类:
	两大特征
	1.实现了对象池.
		池的概念:一个公共的地方,对象池就是对象可以存放在里面不被销毁.
			作用:为了避免频繁的创建新对象销毁旧对象.

		创建一个对象的动作和销毁一个对象的操作都是很复杂的,那么希望能够得到一个对象的时候就得到它.这样就避免了频繁的生成新对象销毁旧对象.jdk里面String类就是实现了对象池的典型例子.

		String s1="hello";
		String s2=new String("hello");

		s1和s2是不相等的.
		s1会到string的对象池里面找"hello",如果有就把"hello"给s1,如果没有就创建一个"Hello"把引用付给s1
		s2不管对象池里面有没有和它相同的对象,都会去创建这个对象.所以s1和s2是不相等的.

		s1和s2用equals比较是相等的.

		String s1=new String("Hello");
		这需要分情况来讨论,
		如果它说这条语句是main方法中的的一条语句,那么它创建了2个对象.
		如果在这条语句之前有语句如String s="hello";那么上面这条语句创建了1个对象
		
		
		String b = new String("1" +"2");这句话创建了几个对象?
	
	2.它是不可变的.(不变模式)
		String s1="hello";
		s1=s1+",haha";
		System.out.println(s1);
		这里不是说字符串改变了,而是通过+号变成了新的字符串对象"hello,haha",并且把新的字符串对象的引用赋值给了s1
		
		实际上只要对字符串对象的内容做了改变,都会创建一个新的对象.

		它的意义在于:
			在写代码的时候,如果某个字符串变量的值经常被改变,那么就会 产生大量的垃圾对象.(实际上是不断的扩大字符串池的大小)
			如果有经常需要改变的字符串,
			那么我们可以使用StringBuffer 或 StringBuilder
		
		String类实际上是使用字符数组来实现的.而数组是不可以扩容的,导制字符串这个类也是不可以扩容的.可以认为这是String为什么要具有不变性的解释.

	StringBuffer
		底层不是使用字符数组来实现的,加入新的字符来实现,只是在原有对象的基础上加入了一些实现.
		使用的方法上和String稍有不同.
		利用构造方法,可以指定大小,可以用字符串来构造,一般使用的使用append方法.
		这使得StringBuffer可以加任意的数据.
		它是线程安全的.

	StringBuilder			
		如果有多个线程对StringBuilder做访问,那么就有可能造成数据的前后不一致.

	如果子类把父类的方法覆盖了,那么在第三方类里面是没有办法去调用父类中被覆盖的方法,只有在子类中可以去调用父类被覆盖的方法,C#对这个问题做了补充,它有办法做到这一点.如果一定要做,那么可以把rt.jar文件里面的String.class替换掉.

	主方法的参数:
		public static void main(String[] args){}
		参数类型是String数组.
		它的参数由java虚拟机传给main方法,可以通过命令行传给java虚拟机.要传入的参数.
		java day05.Testargs args1 args2 args3

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -