Lesson_14_Note_lang包(下)

package Lesson_14;
/**************************************************************
 * 				     		2013.3.5
 * 				 	      java.lang包(下)
 * 					  	   @author Gavin
 **************************************************************/
/****************************课堂内容*****************************
 * 1、StringBuffer类:
 * 					String和StringBuffer他们都可以存储和操作字符串,即包含
 * 					多个字符的字符串数据。String类是字符串常量,是不可更改的常量。
 * 					而StringBuffer是字符串变量,它的对象是可以扩充和修改的。
 * 					StringBuffer与String是同等的类,唯一区别是可以进行更改
 * 2、StringBuffer类的构造方法有4种重载方式,以下是常用的几个
 * 		--->StringBuffer()
 * 			创建一个空的StringBuffer对象,默认保留16个字符的缓冲空间
 * 		--->StringBuffer(String str)
 * 			根据字符串str的内容创建StringBuffer对象,并默认保留 16 个字符的缓冲空间
 * 		--->StringBuffer(int capacity)
 * 			创建一个空的StringBuffer对象,缓冲空间大小由capacity指定
 * 3、StringBuffer类的常用方法
 * 		--->StringBuffer insert(int index, x x)
 * 			将x插入到索引为index的位置,x可以为任何类型的数据
 * 		--->int length()
 * 			获得当前StringBuffer对象的长度
 * 		--->void setCharAt(int index, char ch)
 * 			使用 ch 指定的新值替换 index指定的位置上的字符
 * 		--->String toString()
 * 			转换为字符串形式
 * 		--->StringBuffer reverse()
 * 			将当前StringBuffer对象中的字符序列倒置
 * 		--->StringBuffer delete(int start, int end)
 * 			删除当前对象中从start位置开始直到 end 指定的索引 位置的字符序列
 * 		--->StringBuffer deleteCharAt(int index)
 * 			将删除 index 指定的索引处的字符
 * 		--->StringBuffer replace(int start, int end, String str)
 * 			此方法使用一组字符替换另一组字符。将用替换字符串从 start指定的
 * 			位置开始替换,直到 end 指定的位置结束
 * 4、Math类:提供了一系列基本数学运算和几何运算的方法
 * 		--->该类的构造方法被修饰为private,因此不能实例化
 * 		--->该类的所有方法都是静态的可以通过类名直接调用
 * 		--->该类被修饰为final,因此没有子类
 * 5、Math类的常用方法:
 * 		--->static int abs(int a)   求a的绝对值,有4种重载,还有float,double和long
 * 		--->static double pow(double a, double b)   求a的b次方幂
 * 		--->static double sqrt(double a)	求a的平方根
 * 		--->static int round(float a) 		求a的四舍五入结果
 * 		--->static double ceil(double a)	返回不小于a的最小整数值
 * 		--->static double floor(double a)	返回不大于a的最大整数值
 * 		--->static double sin(double a)		返回a的正弦值
 * 		--->static double cos(double a)		返回a的余弦值
 * 6、Math类中还包括两个常用的常量:
 * 		--->PI:圆周率π
 * 		--->E:自然常量
 * 7、Object类
 * 			Object类就是这个单根体系的根,也就是说它是其它所有类的共同父类
 * 			如果用户定义的类没有扩展任何其它类,则默认扩展自Object类
 * 8、Object类的常用方法
 * 		--->boolean equals(Object obj)
 * 			判断当前对象是否与参数obj(内容)相等,如果有必要,应该在自定义的类中覆盖该方法
 * 		--->String toString()
 * 			返回当前对象的字符串表示,如果有必要,应该在自定义的类中覆盖该方法
 * 9、Class类
 * 		--->Class类的实例用于记录对象的类描述信息;
 * 		--->如果在程序运行时,需要检索某个对象的相关类信息,可以调用该对象的getClass方法来
 * 			获得记录其描述信息的Class类实例;
 * 		--->Class类没有公共的构造方法,无法通过new运算符实例化,只能通过对象的getClass方法,
 * 			或是通过Class的静态方法forName来获得实例。
 * 10、Class类的常用方法	
 * 		--->static Class forName(String className)throws ClassNotFoundException
 * 			使用参数className来指定具体的类,来获得相关的类描述对象,该方法有可能抛出类加载异常
 * 			(ClassNotFoundException),必须捕捉
 * 		--->Class getSuperclass()
 * 			获得当前类描述对象的父类的描述对象
 * 		--->String getName()
 * 			返回当前类描述对象的类名称
 ******************************************************************/
public class Day3_5 {
	public static void main(String[] args) {
		String str1="abc";
		String str2="abc";
		System.out.println(str1.equals(str2));		//输出为true,因为两者的内容相同
		System.out.println(str1==str2);				//输出为true,因为指向同一字符串
		System.out.println(str1.hashCode());//两者哈希码是同一值
		System.out.println(str2.hashCode());
		
		student s1=new student();
		s1.setId(2);s1.setName("张三");
		System.out.println(s1);		//输出对象时,默认调用对象的toString方法
		
		student s2=new student();
		s2.setId(2);s2.setName("张三");
		
		System.out.println(s1==s2);		//输出为false,因为两个对象不一样
		System.out.println(s1);
		System.out.println(s2.toString());//此时输出一样,那么怎么判断哪个是s1哪个是s2呢?
		
		System.out.println(s1.getClass());//输出该对象所在的类情况
		
//		System.out.println(s1.hashCode());
//		System.out.println(s2.hashCode());
		
		student[] names=new student[4];	//源
		student[] names2=new student[4];//目的
		student s5=new student(); 
		s5.setId(1);s5.setName("zs");
		names[0]=s5;
		student s6=new student();
		s6.setId(2);s6.setName("lz");
		names[1]=s6;
		student s3=new student();
		s3.setId(3);s3.setName("ls");
		names[2]=s3;
		student s4=new student();
		s4.setId(1);s4.setName("zs");
		names[3]=s4;
		for(int i=0;i<names.length;i++){		//当元素在新的数组里已经存在的时候,就不把这个元素放进去
			for(int j=0;j<=i;j++){
				if(!names[i].equals(names2[j])){
					if(i==j){
						names2[j]=names[i];
					}
				}else {
					break;
				}
			}
		}
		for (student t:names2){		//for each 循环  输出
			System.out.println(t);
		}
	}
}

package Lesson_14;

public class student {
	private String name;
	private int id;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
//	@Override
//	public String toString() {		//toString返回该对象的字符串表示
//		// TODO Auto-generated method stub
//		return "【名字:"+this.getName()+",Id:"+this.getId()+"】";
	
	@Override
	public String toString() {		//可以用工具写
		return "student [name=" + name + ", id=" + id + "]";
	}
	
	
	@Override				
	public int hashCode() {		//重写hashCode方法和equals方法
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		student other = (student) obj;
		if (id != other.id)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		return true;
	}
	
	
	
	
}

package Lesson_14;

public class StringbufferDemo {
	public static void main(String[] args) {
		StringBuffer strbuf=new StringBuffer("Java");
		strbuf.append("Guide Ver1/");		//连接,具体有很多的重载方法,查看API
		System.out.println(strbuf);
		
		strbuf.append(3);
		System.out.println(strbuf);
		
		strbuf.insert(5, "student");		//插入,也有许多重载方法,看API
		System.out.println(strbuf);
		
		strbuf.setCharAt(20, '.');
		System.out.println(strbuf);   //替换
		
		strbuf.reverse();
		System.out.println(strbuf);
		
		String str=strbuf.toString();
		System.out.println(str);
	}
}

你可能感兴趣的:(Lesson_14_Note_lang包(下))