Java基础总结四

==和equals:

==作比较:基本类型比的就是值是否相同,引用类型比的就是地址值是否相同。

equals比较:JDK中equals的源码如下:

public boolean equals(Object obj){
    return (this==obj);
}

从源码中可以看出equals底层也使用过==进行比较的,那么等号比较引用,比的则是对象。因此默认情况下equals比较的是地址值。但比较地址值一般意义不大,所以我们要重写该方法,就在实体类中重写equals方法,即可比较该类的两个对象的实例是否相同。下面是通过eclipse自动生成的equals代码用来比较两个对象的值是否相同,而不是一味地比较地址值相同(在实际开发中往往都是要比较值,而==比较不了对象(引用)的值,所以只能是通过重写equals方法比较引用的值,但注意的是没有重写的equals方法功能类似于等号)。右击代码->Source->Generate hashCode and equals()...

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		A other = (A) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}

String、StringBuffer、StringBuilder的区别?

(1)String:字符串,一旦被赋值就内容不可以改变,但是其引用可以改变。

String s=new String("hello");

String s="hello";两者存在区别,前一个是在堆和方法区的常量池都会创建一个对象,后面的那个就直接从常量池执行

(2)StringBuffer:线程安全的可变字符串

StringBuffer():无参构造方法,默认的容量是16,当然也有可以指定容量的缓冲区对象

String和StringBuffer的相互转换?

扫描二维码关注公众号,回复: 2729524 查看本文章

String  s="hello";

String-->StringBuffer

方式一:StringBuffer buffer=new StringBuffer(s);方式二:StringBuffer buffer=new StringBuffer();buffer.append(s);

StringBuffer-->String

Stringbuffer buffer=new StringBuffer("Is-Me-HL");

方式一:String str=new String(buffer);方式二:buffer.toString();  

(3)String、StringBuffer、StringBuilder的区别?

A:String是内容不可变的,而StringBuffer和StringBuilder是内容可变的

B:StringBuffer是同步的,数据安全的,效率低;StringBuilder是不同步的,数据不安全的,但是效率高

(4)StringBuffer和数组的区别

二者都可以看过是一个容器,装其他数据,但是呢,StringBuffer的数据最终是一个字符串数据,而数组可以放置多种数据,但必须是同一种数据类型的。

(5)作为形式参数问题

String作为参数传递:注意String作为形参传递效果是和基本类型一样。

StringBuffer作为参数传递,如果调用方法就会改变内容,赋值不会改变。例子如下:(ps:敲一遍代码就能理解)

public class Test {

	public void show(String s) {
		s = s + s;
		System.out.println("show:" + s);
	}

	public void show(StringBuffer s) {
		s.append("Is-Me-HL");
		// s=new StringBuffer("World");
	}

	public static void main(String[] args) {
		Test test = new Test();
		String s = "Hello";
		test.show(s);
		System.out.println("String:" + s);
		StringBuffer buffer = new StringBuffer("Hello");
		test.show(buffer);
		System.out.println("Buffer:" + buffer.toString());

	}
}
//执行结果
show:HelloHello
String:Hello
Buffer:HelloIs-Me-HL

 如果上面的例子中show(StringBuffer s)中放开那两行注释的话,再注释掉那唯一的一行代码,既可以发现上面总结的规律。

Date时间工具类简单示例:

Date date=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat ("yyyy年MM月dd日 HH时mm分ss秒");
		String s=sdf.format(date);
		System.out.println(s);
		
		String source="2018年08月07日 18时52分42秒";//注意String的类型格式要和sdf的格式保持一致
		Date date2=sdf.parse(source);
		System.out.println(date2.getTime());

注:以上文章仅是个人学习过程总结,若有不当之处,望不吝赐教。

猜你喜欢

转载自blog.csdn.net/m0_37265215/article/details/81475468
今日推荐