面向对象 继承 单例模式 String

项目1单例模式

解决一个类在内存中只能存在一个对象,想要保证对象的唯一。
思路:

将构造方法私有化(采用private修饰)
在类中创建一个私有的本类对象(将类封装成private static类型)
提供一个用类名调用的共有方法获取该对象(静态方法调用)

单例模式的类会自行实例化并创建一个对象,同时对外提供一些访问这个对象的方式。

饿汉式
加载类的时候就把单利初始化完成。
懒汉式
只有在创建对象时才会调用。节约内存。

项目2 String 类

1、String就是字符串类型,属于java.lang包,不需要导包

2、所有的字符串常量(“Hello World”、”abc”)都属于String类型的对象

3、字符串字面值属于常量,存储在方法区的常量池中。

4、String类型在创建之后就无法更改(是一个不可变的字符序列)。

5、不可变的原因是String类型只提供了构造方法,没有提供set方法,因此只能在创建对象的时候,初始化成员变量,将来对象创建完成之后,无法通过方法来修改。

对象的增删改

创建

方式1
String str=new String();
str=“abc”;

方式2
String str1=new String(“abc”);

方式3
String str=“abc”;

方式4
Char[] arr={‘a’,’‘b’,‘c’};
String str=new String(arr);

方法5
String str2=str;

String 类的操作

判断功能的方法

1、equals(Object obj):判断调用者和参数对象描述的字符串内容是否相同
2、equalsIgnoreCase(String otherStr):忽略大小写判断两个字符串内容是否相同
3、contains(String str):判断调用者是否包含了str这个子串
4、startsWith(String prefix):判断调用者是否以prefix开头
5、endsWith(String suffix):判断调用者是否以suffix结尾
6、isEmpty():判断调用者是否是空串

实例:

		String s1 = "aaa";
		String s2 = new String("aaa");
		System.out.println(s1.equals(s2));	
		
		//判断键盘输入的值是否为admin
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		
		
		System.out.println(str=="admin");
		System.out.println("admin".equals(str));  //常量和变量使用equals比较内容时,尽量把常量写在前面		
		
		//equalsIgnoreCase 忽略大小写的比较
		String str1 = "aaa";
		String str2 = "AAA";
		System.out.println(str1.equals(str2));
		System.out.println(str1.equalsIgnoreCase(str2));
		
		//contains 判断字符串是否包含某内容(子串)
		String str = "abcde";
		System.out.println(str.contains("ab"));
		System.out.println(str.contains("cde"));
		System.out.println(str.contains("ac"));
		
		// startsWith   endsWith  判断字符串是否以某个值开头,是否以某个值结尾
		String str="http://www.sina.com.cn";
		
		System.out.println(str.startsWith("h"));
		System.out.println(str.startsWith("http"));
		System.out.println(str.startsWith("http://www.sina.com.cn"));
		System.out.println(str.startsWith("a"));
		
		
		System.out.println(str.endsWith("cn"));
		System.out.println(str.endsWith(".cn"));
	
		
	
		// isEmpty 判断字符串是否 为空串
		String str1 = "";
		String str2 = new String();
		String str3 = new String("");
		String str4 = " ";
		
		System.out.println(str1.isEmpty());
		System.out.println(str2.isEmpty());
		System.out.println(str3.isEmpty());
		System.out.println(str4.isEmpty());
		

获取功能的方法

1、length():获取字符串字符的个数
2、charAt(int index):返回调用者字符串中索引为index的字符(和length方法结合之后可以遍历字符串)
3、substring(int beginIndex):获取一个字符串,内容是从当前字符串的beginIndex索引开始
4、substring(int beginIndex, int endIndex):获取一个指定索引范围的子串
注意事项:1、包含头不包含尾,返回的结果中,不包含endIndex索引指向的字符;2、所有的方法都无法修改字符串对象本身,一般都是返回一个新的字符串对象
5、indexOf家族:
indexOf(int ch):返回ch字符在当前调用者字符串中,第一次出现的索引
indexOf(int ch, int fromIndex):从fromIndex索引开始寻找,找到ch字符在当前字符串中第一次出现的索引
indexOf(String str):返回的是str这个字符串在调用者字符串中第一次出现的索引
indexOf(String str, int fromIndex):从fromIndex索引开始寻找,找到str字符串在当前字符串中第一次出现的索引(注意:无论从哪个位置开始找,所有字符的索引都不会变化)
6、lastIndexOf家族:
和IndexOf基本一样,只不过是从后往前找,所有字符和字符串的索引也都不会发生变化

实例:

public class Demo05_String{
	public static void main(String[] args) {
/*
		// 1 length()  获取字符串长度(由多少个字符组成)
		String str = "abc";
		int x = str.length();
		System.out.println(x);
*/
		
/*		
		//2 charAt 获取某个位置上的字符
		String str = "abcde";
		char c = str.charAt(1);
		System.out.println(c);
*/	
/*		
		//3 substring 截取子串
		String str = "abcdefg";
		String result = str.substring(2);  //取到最后
		System.out.println(result);
		String result2 = str.substring(2,4); // 左闭右开
		System.out.println(result2);
		
*/	
/*		
		//4 indexOf 查找位置
		String str = "abcdeabcd";
		int idx = str.indexOf("cd");
		System.out.println(idx);
		
		int idx2 = str.indexOf("ab",3);
		//int idx2 = str.indexOf("ab",-3);// 第2个参数为负数,相当于0
		System.out.println(idx2);
		
		int idx3 = str.indexOf("xy");
		System.out.println(idx3);    // 找不到时,返回-1
		
		
*/		
/*	
		//5 lastIndexOf 查找位置  从后向前找
		String str = "abcdeabcd";
		
		int idx = str.lastIndexOf("cd");
		System.out.println(idx);
	
		int idx2 = str.lastIndexOf("ab",3);
		System.out.println(idx2);
	
		int idx3 = str.lastIndexOf("xy");
		System.out.println(idx3);    // 找不到时,返回-1
	*/
	}
}

转换功能的方法

1、byte[] getBytes():将当前字符串,转成字节数组
2、char[] toCharArray():将当前的字符串,转成字符数组
3、toUpperCase():将当前的字符串,转成全大写形式
4、toLowerCase():将当前的字符串,转成全小写形式
5、concat(String str):将当前调用者,和参数str进行拼接,返回拼接后的长字符串(不常用,因为更多使用的是运算符+)
6、valueOf家族:可以将任意数据类型的数据,转换成字符串

其他方法

1、replace(String oldStr, String newStr):将调用者中的老串替换成新串
2、trim():去掉字符串左右两边的空格、制表符
3、split():字符串拆分

public class Demo08{
	
	public static void main(String[] args) {
/*		
		// replace 替换   replaceAll---后面讲
		
		String str = "www.baidu.com";
		
		String str2 = str.replace("w", "x");
		System.out.println(str2);
		
		
		String str3 = str.replace("www", "x");
		System.out.println(str3);
		
*/
		
/*		
		// trim 去首尾空格
		
		String str = "  aaa  bbb        ";
		String str2 = str.trim();
		System.out.println(str);
		System.out.println(str2);
		
*/	
	/*	
		// split 字符串拆分   拆成数组
		String str = "aaa#bbb#ccc#ddd";
		String[] ss = str.split("#");
		for(String s:ss){
			
			System.out.println(s);
		}
*/
		
		
/*		
		String str = "aaa##bbb#ccc#ddd";
		String[] ss = str.split("#");
		for(String s:ss){
			
			System.out.println(s);
		}
		
*/		
		String str = "aaa+bbb+ccc+ddd";
		//String[] ss = str.split("+");  // 因为+是正则表达式(后面讲)的特殊字符    (+ . * ?)需要转义
		String[] ss = str.split("\\+");
		for(String s:ss){
			
			System.out.println(s);
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值