java——懒汉饿汉单例模式,字符串String类操作方法整理

1.单例模式

1)单例类只能有一个实例
2)单例类必须自己创建自己的唯一实例
3)单例类必须给其他所有对象提供这一实例

分为三种:懒汉式单例、饿汉式单例、懒汉式单例(高并发、多线程并发情况下)。

1.饿汉式单例

public class Singleton {
    private Singleton(){}
    private static Singleton singleton=new Singleton();	//在类初始化时,已经自行实例化
    public static Singleton getSingleton(){
        return singleton;
    }
    
}
//==================================
		Singleton a1=Singleton.getSingleton();
        System.out.println(a1);
        在类初始化时,已经自行实例化,浪费资源

2.懒汉式单例

public class Singleton {
    private Singleton(){}
    private static Singleton singleton=null;
    public static Singleton getSingleton(){		//在第一次调用的时候实例化自己
        if(singleton==null){
            singleton=new Singleton();
        }
        return singleton;
    }

}
//==================================
		Singleton a1=Singleton.getSingleton();
        System.out.println(a1);
        //在第一次调用方法的时候实例化自己

3.懒汉模式(高并发、多线程并发情况下,会出现问题)

	public class Singleton {
	    private Singleton(){}
	    private static Singleton singleton=null;
	    public static Singleton getSingleton(){
	        if(singleton==null){
	            try {
	                Thread.sleep(1);           //时差,间隔1毫秒,实例化了多次
	            } catch (InterruptedException e) {
	                e.printStackTrace();
	            }
	            singleton=new Singleton();
	        }
	        return singleton;
	    }
	
	}
		//========================================
	public class Test05 {
    public static void main(String[] args) {
        ExecutorService executorService=Executors.newCachedThreadPool();
        executorService.execute(new Thead1());
        executorService.execute(new Thead1());
        executorService.execute(new Thead1());
        executorService.execute(new Thead1());
        executorService.execute(new Thead1());

    }
}
//线程定义
class Thead1 extends Thread{
    @Override
    public void run(){
        Singleton s1=Singleton.getSingleton();
        System.out.println(s1);
    }
}

在这里插入图片描述
有指令时差,间隔1毫秒,实例化了多次

2.字符串String类操作方法整理

字符串的基本用法

1)获取字符串的长度 length()

string.length();

2)获取字符串的第i个字符 charAt(i)

string.charAt(i);

3)获取指定位置的字符方法getChars(4个参数)(从字符串中提取部分存储到char数组中)

		String s="abcd";
        char[] c=new char[80];
        s.getChars(0,4,c,0);	//0:开始位置;4:结束位置;c:数组ming;0:数组开始位置;
        System.out.println(c);

字符串比较

字符串比大小

(1)不忽略字符串大小写情况下字符串的大小比较方法compareTo(another str)

格式:int result = str1.compareTo(str2);

输出三种比较结果:若该字符串的Unicode值<参数字符串的Unicode值,结果返回一负整数;若若该字符串的Unicode值=参数字符串的Unicode值,结果返回0;若该字符串的Unicode值>参数字符串的Unicode值,结果返回一正整数。

(2) 忽略字符串大小写情况下字符串的大小比较方法compareTOIgnoreCase(another str)

格式:int result = str1.compareToIgnoreCase(str2);

在忽略字符串大小写情况下,返回三种比较结果:输出三种比较结果:若该字符串的Unicode值<参数字符串的Unicode值,结果返回一负整数;若若该字符串的Unicode值=参数字符串的Unicode值,结果返回0;若该字符串的Unicode值>参数字符串的Unicode值,结果返回一正整数。

字符串是否相等

然后看一下第二种判别两种字符串是否相等(相等情况下必须保证二者长度相等)需求中的方法:

1)不忽略字符串大小写情况下判别字符串相等的方法eaquals(another str)

格式:boolean result = str1.equals(str2);

当且仅当str1和str2的长度相等,且对应位置字符的Unicode编码完全相等,返回true,否则返回false

2)忽略字符串大小写情况下判别字符串相等的方法equalsIgnoreCase(another str)

格式:boolean result = str1.equals(str2);

字符串与其他数据类型的转换

在这里插入图片描述

        Boolean b=s1.equalsIgnoreCase(s2);
        s2=String.valueOf(b); 	//bool转换为string
        s2=b.toString();	//bool转换为string

字符串查找

1) 查找字符出现位置

返回指定字符在字符串中第一次出现位置的索引

int i=str.indexOf(‘a’);

返回指定字符在字符串中最后一次出现位置的索引

int i=str.lastIndexOf(‘a’);

2) 查找字符串出现位置

返回字符串第一次出现的位置索引

		String s1="bcd";
        String s2="Abcd";
        int i=s2.indexOf(s1);
        System.out.println(i);

返回字符串最后一次出现的位置索引

		String s1="bcd";
        String s2="Abcd";
		int i=s2.lastIndexOf(s1);
        System.out.println(i);

截取与拆分

(1) 截取方法

  1、substring()方法    

        格式1:String result = str.substring(index);    	//index之后保留

        格式2:String result = str.substring(beginIndex,EndIndex);//实际索引号[beginIndex,EndIndex-1]

        结果:截取出范围内的字符串

(2)拆分方法

   1、split()方法

        格式1 :String strArray[] = str.split(正则表达式);// 拆分的结果保存到字符串数组中
        
          		例:String stringArray[] = str.split(" ");  //根据空格要求拆分出所有单词保存到字符串数组中

        格式2:String strArray[] = str.split(正则表达式,limit);

替换和修改

(1)concat()方法合并字符串

     格式:String result = str1.concat(str2);   //将str1和str2合并

(2) toLowerCase()方法 将字符全部转化为小写

     格式:  String result = str.toLowerCase();

(3) toUpperCase()方法 将字符全部转化为大写

     格式:String result = str.toUpperCase();          

(4)replaceAll()、replaceFirst()方法:需要匹配正则表达式

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值