Java学习笔记Object类是所有的类的基类publicStringtoString()这个方法是object类中的一个方法,默认返回的是类名+@+哈希码;自己也可以重写toString这个方法,当直接输出这个类时,调用toString方法。如:System.out.println(dog=+dog);输出的就是toString的返回值例:publicclassTestToString{publicstaticvoidmain(String[]args){Dogdog=newDog();System.out.println(dog=+dog);}}classDog{publicStringtoString(){returni'mahotdog!;}}equalspublicbooleanequals(Objectobj)这个方法也是object类中的一个方法,一般需要重写这个方法在String,Date等类中都重写了equals方法例:publicclassTestEquals{publicstaticvoidmain(String[]args){Catcat1=newCat(red,1,2);Catcat2=newCat(blue,1,2);System.out.println(cat1.equals(cat2));}}classCat{Stringcolor;intweight,height;publicCat(Stringcolor,intweight,intheight){this.color=color;this.weight=weight;this.height=height;}publicbooleanequals(Objectobj){if(obj==null)returnfalse;else{if(objinstanceofCat)//判断这个obj是否是Cat类型的{Catcat=(Cat)obj;//将这个obj强制转换成Cat类型if(cat.color==this.color&&cat.height==this.height&&cat.weight==this.weight)returntrue;}}returnfalse;}}对象转型:可以使用instanceof来判断一个对象是不是属于该类或者该类的子类;if(objinstanceofCat)//判断这个obj是否是Cat类型的一个基类的引用可以指向子类的对象;一个基类的引用不可以访问其子类对象新增加的成员:如一个animal的基类,cat类继承自它,cat类中有furcolor变量,而在animal中没有,Animalanimal=newcat();在这里animal是访问不到cat中的furcolor变量的,它只能访问animal基类的变量。如果想要访问furcolor变量,则要强制转换catcat=(cat)animal;多态(动态绑定):面向对象的核心,是程序的扩展性达到极致。动态绑定是指在执行期间(而非编译期间)判断所引用的对象的实际类型,根据其实际类型调用其相应的方法。多态使用的条件:1要有继承,2要有重写,3父类引用指向子类对象例:classAnimal{Stringname;publicAnimal(Stringname){this.name=name;}publicvoidenjoy(){System.out.println(叫声。。。);}}classdogextendsAnimal{privateStringfurcolor;dog(Stringname,Stringfurcolor){super(name);this.furcolor=furcolor;}publicvoidenjoy(){System.out.println(狗叫声。。。);}}classcatextendsAnimal{privateStringeyecolor;cat(Stringn,Stringe){super(n);this.eyecolor=e;}publicvoidenjoy(){System.out.println(猫叫声。。。。);}}classlady{privateStringname;privateAnimalpet;lady(Stringn,Animalp){this.name=n;this.pet=p;}publicvoidmyPetEnjoy(){pet.enjoy();}}publicclassTestPolm{publicstaticvoidmain(String[]args){dogdog1=newdog(狗,黑色);catcat1=newcat(猫,白色);ladylady1=newlady(Lucy,dog1);lady1.myPetEnjoy();}}上面这个例子中根据lady对象的成员变量pet所引用的不同的实际类型而调用相应的enjoy方法。抽象类:当一个类中有抽象方法的时候,这个类必须声明为抽象类;当一个方法有存在的必要但是没有实现的必要(需要在子类中重写)的时候,可以用抽象方法;将上例中类改为abstractclassAnimal,并且将enjoy方法改为publicabstractvoidenjoy();即可。不需要实现enjoy的内容。抽象类不能被实例化。抽象类必须被继承,抽象方法必须被重写。Final关键字:Final的变量不能被改变;Final的方法不能被重写;Final的类不能被继承;接口(interface):接口是一种特殊的抽象类,这种抽象类只包含常量和方法的定义,没有变量和方法的实现。接口是抽象方法和常量值的定义的集合。接口的特性:1接口可以实现多重实现2接口的属性默认也只能是publicstaticfinal的;3接口中的方法只能是抽象方法,只能是public;4接口可以继承自其它的接口,并添加新的属性和抽象方法。多个无关的类可以实现一个接口,一个类可以实现多个无关的接口,与继承类似,接口与实现类之间存在多态性。Java异常处理:Java程序在执行过程中出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交到java运行时系统,这个过程称作抛出(throw)异常。当java运行时,系统接受到异常对象时,会寻找能处理这一异常对象的代码,并将当前的异常对象交给其处理,这一过程成为捕获catch异常。Error:由虚拟机生成并抛出,程序不对其进行处理Exception:所有异常类的父类,一般需要用户显式的声明或捕获RuntimeException:一类特殊的异常,如被0除,数组下标超范围。由此由系统系统自动检测并将它们交给缺省的异常处理程序。Try{语句。。。。。。}Catch(someExceptione)//当捕获到相应的异常时执行{。。。。。。。}Finally{。。。。。。。}//finally中的语句不管是否异常都会执行声明并抛出异常:重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常。数组:一维数组的声明:typevar[]或者type[]varJava语言中声明数组时不能指定长度:typevar[5]为非法元素为引用类型的数组中每一个元素都需要被实例化定义并运用运算符new为之分配空间后,才可以引用数组中的每个元素,数组的引用方式为a[**];每个数组都有个属性length指明它的长度(元素的个数)publicstaticvoidmain(String[]args)args表示命令行参数数组二维数组:可以看成以数组为元素的数组。Java中多维数组的声明和初始化按从高维到低维的顺序进行的inta[][]=newint[3][];a[0]=newint[2];a[1]=newint[3];a[2]=newint[2];String类:构造方法有String(byte[]bytes)String()等方法有:charAt(intindex)返回编号的字符Length()返回字符串的长度replace(charoldChar,charnewChar)字符替换indexOf(Stringstr)返回子字符串在字符串中的索引,如果不存在返回-1equalsIgnoreCase(StringanotherString)忽略大小写比较大小startsWith(Stringprefix)判断字符串是不是以该字符串开头endsWith(Stringsuffix)判断字符串是不是以该字符串结尾toUpperCase()返回该字符串的大写形式toLowerCas()返回该字符串的小写形式substring(intbeginIndex)返回从索引开始到结束的字符串substring(intbeginIndex,intendIndex)返回从开始索引到结束索引的字符串trim()去掉开头和结尾空格后的字符串valueOf(****)将其转换成字符串,对于对象object也可以转换,只要重写object中的tostring方法即可例:publicclassTestEx{publicstaticvoidmain(String[]args){Dated=newDate(12,3,2014);Stringstr=String.valueOf(d);System.out.println(str);}}classDate{privateintday;privateintmonth;privateintyear;publicDate(intd,intm,inty){this.day=d;this.month=m;this.year=y;}publicStringtoString(){returnday:+day++month:+month+year:+year;}}Stringstr=Mary,2,china;String[]s=str.split(,);for(inti=0;is.length;i++){System.out.println(s[i]);}可以拆分字符串,感觉不错StringBuffer类可修改的String类型,与String类似基本数据类型包装类:publicintintValue()//返回封装类型的int类型的值publiclonglongValue()//返回封装数据的long类型的值publicstaticintparseInt(Strings)//将字符串解析成int类型数据publicstaticIntegervalueOf(Strings)throwsNumberFormatException//返回Integer对象,其中封装的数据类型为s表示的内容例:Integeri=newInteger(100);Doubled=newDouble(122.123);intj=i.intValue()+d.intValue();//解析成int类型floatf=i.floatValue()+d.floatValue();System.out.println(j);System.out.println(f);Doublepi=Double.parseDouble(3.14159245);//解析成doubleDoubler=Double.valueOf(2.0).doubleValue();//先转换成Double的对象,然后转换为double类型doubles=pi*r*r;System.out.println(s);数学类:abs绝对值sincos...aqrt平方根log自然对数expe为底的指数pow(doublea,doubleb)a的b次幂max(doublea,doubleb)min(doublea,doubleb)random()返回0.0到1.0的随机数toDegrees(doubleangrad)弧度-角度toRadians(doubleangdeg)角度-弧度File类:代表系统文件名或者路径名Stringseparat