JAVA的一些知识点

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_41659081/article/details/88633417

遍历集合
indexOf
substring
HashMap
字符串的一些操作
单例模式

遍历集合(迭代器和增强for循环)

迭代器

List<String> list = new ArrayList<String>();
list.add("yaoming");
list.add("kebi");
Iterator<String> it = list.iterator();
while(it.hasNext())
{
	String s=it.next();
	System.out.println(s);
}

增强for循环

for(String s : list){
	System.out.println(s);
}

indexOf和lastIndexOf(返回的是位置)

var arr = [1,2,3,4,2,1,3];
console.log(arr.indexOf(2)); //返回的值为1
console.log(arr.lastIndexOf(2)); //返回的值为4

substring(返回的是字符串)

"hamburger".substring(4, 8) returns "urge"
 "smiles".substring(1, 5) returns "mile"
 
 //取长度大于等于3的字符串a的后三个子字符串
 a.subString(a.length()-3, a.length());
 
substring(x)是从字符串的第x个字符截取
String id="123454321"   ID=id.substring(4)    ID="54321"

HashMap

Map<String,Student> stu = new HashMap<String,Student>();//Student类中有id和name
stu.put("002"),new Student("xiaoming");
stu.put("003"),new Student("xiaoli");

for(Map.Entry<String,Student> entry:stu.entrySet())
{
	//获取键entry.getKey()
	//获取值entry.getValue()
	System.out.println("entry");//输出Map集合中每一个元素
}

Set<String> keys=stu.keySet();
for(String key:keys)
{
	System.out.println(key);//输出所有key的值
}

Collection<Student> values =stu.values();
for(Student value:values)
{
	System.out.println(value);//输出所有values的值
}

字符串的一些操作

String str ="qaz,wsx,edc";
//字符串是否包含某个字符
boolean status = str.contains(","); //status返回true
//用某个字符来分隔字符串并放入数组
String[] paramArr = str.split(",");
//字符串中某个字符出现的次数
int count=0;
Pattern p = Pattern.compile(",");
Matcher m =p.matcher(str);
while(m.find())
{count++;}
//count的值就是","出现的次数。

单例模式

//懒汉模式(双重锁)类加载时不初始化
//使用synchronized 进行同步处理,并且双重判断是否为null,我们看到synchronized (Singleton.class)里面又进行了是否为null的判断,这是因为一个线程进入了该代码,如果另一个线程在等待,这时候前一个线程创建了一个实例出来完毕后,另一个线程获得锁进入该同步代码,实例已经存在,没必要再次创建,因此这个判断是否是null还是必须的。
public class Singleton {
	private static volatile Singleton instance=null;
	private Singleton(){}
	public static Singleton getInstance(){
		if(instance == null){
			synchronized(Singleton.class){
				if(instance == null){
					instance = new Singleton();
				}
			}
		}
		return instance;
	}
}

//饿汉模式(类加载时初始化)
public class SingletonDemo2{
	private static SingletonDemo2 instance = new SingletonDemo2();
	private SingletonDemo2(){};
	public static SingletonDemo2 getInstance()
	{
		return instance;	
	}
}

==和equals区别

1)对于==,比较的是值是否相等

   	如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;

  如果作用于引用类型的变量,则比较的是所指向的对象的地址

2)对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象

  如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;

  诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

猜你喜欢

转载自blog.csdn.net/qq_41659081/article/details/88633417