您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > 毕向东Java自学笔记
1.intscore[];score=newint[3];2.intscore[]=newint[3];3.intscore[]={0,0,0};1.staticStringc=China;//static静态变量,类变量。c变成公有属性,所有对象共享内存空间,改变一个就是改变所有。也可以用类名直接调用而不必产生对象再调用:Person.c=America;2.static类型声明一个方法,则此方法可用类名直接调用。但注意:若类中声明了一static型属性,则此属性既可在非static方法中使用,也可以在static中使用;但用static型的属性调用非static型的属性,则出现错误。3.forwhile区别。while没有初始化条件变量语句。4.数组元素操作,操作下标和操作元素值,效率可能不一样,堆内存和栈内存。如求最大值。5.10w个int随机数组,冒泡算法:25、27秒。一般排序:2021秒。打印需要8s左右。Arrays.sort():10秒以内。6.Java交换数值函数,voidswap(int[]arr,inti,intj){};i,j数组元素小标。7.十进制--二进制publicstaticvoidtoBin(intnum){StringBuffersb=newStringBuffer();whlie(num0){sb.append(num%2);//转二进制求余数法num=num/2;}System.out.println(sb.reverse());//反向输出。}8.二维数组:int[][]arr=newint[3][];arr[0]=newint[3];arr[1]=newint[2];intarr[2]=newint[1];arr.length:行数;arr[1].length:列数。定义数组:int[]x;intx[];int[][]y;inty[][];int[]y[];9.构造函数:不用定义返回值类型,不能写return语句。不是必须在类的第一行。Person()10.(没什么作用)构造代码块:对象共性初始化。对象建立就运行,而且优于构造函数。与构造函数区别:构造代码块给所有对象进行统一初始化,而构造函数给对应的对象初始化。classPerson{。。。。{S.o.p(!);}}11.this代表它所在函数所属对象的引用:哪个对象调用this所在的函数,this就代表哪个对象。12.构造函数间调用。不能这样调用:Person(){};Person(intn){Person();.....}//错误。正确方法:构造函数只能放第一行。构造函数循环调用,错误。13.内存区域。Person{staticStringcountry='CN';//静态成员变量,类变量。随着类的加载而加载,//消失而消失,生命周期最长。Stringname;//成员变量,实例变量。.......}.....Personp1=newPerson();Personp2=newPerson();栈内存p1p2name=null;name=null;堆内存方法区,共享区,数据区。country='CN';p1,p2的方法代码也在这里。分为:static和非静态区两个。14.static:修饰成员。不能修饰局部成员变量。静态方法存在比非静态成员早,所以不能调用非静态变量和方法。15.main():含有两个main(),函数可以重载,因此可以编译通过。jvm只识别第一个Stringargs[].也可以不用args。下面程序结果分别是:a)1.HelloWorld!2.HelloWorld!b)2.HelloWorld!下面这个程序一共有四个main()方法。没有publicclass时,jvm把第一个标准main()方法当入口。有public类时,public类的标准main()方法是程序入口。16.javadoc:文档生成(能给外界使用的内容)。Public和protected方法须注释,也只有public和protected才能显示,其他注释也不生成。javadoc-d(c:\)MyHelp-author-versionTest.java点index.html查看。@author;@version;@param17.静态代码块:以上程序运行结果:bcaover如果在StaticCode中定义一个static方法show(){打印show};且主函数内容改成:StaticCode.show()。则运行结果是:bcashow如果主函数改成StaticCodep=null;则运行结果:bc(StaticCode类未加载)下面这个类执行顺序:acb或者d。a是类加载,c是对象加载且优于构造函数18.super:父类,this:本类对象。子类调用父类成员变量可以直接调用,因为子类继承了这个变量。但父类的private变量,子类不能访问。需要注意没有指明this,super时的变量。程序结果:042D中也可以不写this.19.子类静态方法不覆盖父类静态方法。非静态方法覆盖非静态方法。不一样就是重载。重载只看参数,不看返回值。所以返回值不同,参数相同,报错。20.子类不继承父类的构造方法。但是会自动调用。父类构造方法fu()会在子类构造函数内自动“隐式”调用,且一定调用的是super();如果父类没有无参构造函数,报错。如果父类没有无参构造函数,则子类只能显式调用。21.final:继承是破坏类的封装性,final加强封装性。类的修饰符有两个:public,final。也可以没有修饰符。22.abstract抽象类。抽象类和一般类没有太大不同,抽象类也可以定义一般方法。只是多了抽象方法,不可以实例化。也可以不定义抽象方法,此时抽象的作用是不让此类建立对象。23.抽象类-------模板方法模式。23种设计模式之一。24.接口(interface):java类不支持多继承,原因是:假如两个父类A,B都有method(),那么调用method()会产生混乱。而接口中的方法都是没有方法体,且有固定格式的。所以interface可以支持多继承。如:interfaceCextendsA,B如果一个类C只实现接口A的部分方法,那么类C只能定义为抽象类。接口A中的属性,方法都有固定格式,不写也会自动补全。25.多态:26.多态转型:能转换的是父类引用指向了自己子类对象时,该引用可以被提升,也可以被强制转换。多态自始至终都是子类对象在做变化。27.多态中成员的特点:Fuf=newZi();/static静态成员函数加载在方法区的静态区,所以子类静态函数不会覆盖父类静态函数。调用静态成员函数只看左边(上面是例子是Fu)。静态绑定编译期间执行。静态区(静态绑定)没有对象,只有类。所以可以用类名调用。fu.method2()zi.method()非静态区(动态绑定)有对象。super.method1()this.method1()成员变量在栈区,栈区有父类成员变量和子类成员变量。也可以看成和类绑定而不是对象。28.Object类是所有类的超类。29.内部类:内部类的访问规则:1.内部类可以直接访问外部类的成员,包括私有。原因是内部类持有一个外部类的引用,格式:Outer.this2.外部类要访问内部类,必须建立内部类对象。格式:Outer.Innerf=newOuter().newInner();内部类是外部类的成员,所以可以被private修饰,这说明在特殊情况下,类可以被private修饰。x=4还是x=4;x=5改成,结果是x=3;结果是x=5;内部类一般是private。例如Person类的内部可以定义心脏,肝脏。。。。代码:classOuter{voidmethod(){finalintx=3;classInner{//局部内部类不再是外部类成员,所以不能用static修饰,因此Inner内部也不能voidfunction(){定义static成员了。S.o.p(“x=”+x);}}newInner().function;//外部类要通过对象访问内部类,所以只能定//在Inner所在方法内部。}}如果上面是voidmethod(finalintx)那么Outerout=newOuter();out.method(7);out.method(8);//可以运行。method运行完栈内存就是释放了。30.匿名内部类:可以简化代码。没有父类,可以使用Object父类建立匿名内部类。30.异常体系:Throwable||-----Error||-----Exception异常有多个,catch也要多个。也可以用catch(Exceptione),但是不好。还可以在指定方法上使用throws抛出具体的异常。当方法会抛出异常且没有进行处理时,就要throws声明该异常。当throw抛出异常对象,函数结束。(类似return)自定义异常不能自动抛出,要手动抛出。31.throw和throws区别:throws使用在函数上,throw使用在函数内。throws后面跟的异常类,可以跟多个。用逗号隔开,throw后跟的异常对象。32.Exception类有一个特殊的子类异常RuntimeException运行时异常,有一个子类ClassCastException如果在函数内容抛出该异常,函数上可以不用声明,编译一样通过。如果在函数上声明了该异常,调用者可以不用进行处理,编译一样通过。之所以不用在函数声明,是因为不需要让调用者处理。当RuntimeException发生时,希望程序停止。因为在运行时,出现了无法继续运算的情况,需要对代码进行修正。自定义异常时,如果该异常的发生,无法再继续进行运算,就让自定义异常继承RuntimeException。ArithmeticException就是它的一个子类。异常分两种:1.编译时被检测的异常。2.编译时不被检测的异常。RuntimeException总结RuntimeException代码区别:1.异常类继承RuntimeException。2.不需要在方法上声明throws该异常类。3.不需要使用trycatch也能编译通过,但程序会停掉。33.假如抛出异常A的方法,无法处理异常A,则可以抛出一个方法可以解决的异常B。比如服务器端出现异常A,此时客户端无法解决,抛出异常B进行处理。34.finally常见应用:finally在return之前执行。有一种情况finally不执行:System.exit(0);//jvm35.异常-处理的三种格式:1.try{}catch(){};2.try{}catch(){};3.try{}catct(){}finally{};36.异常-覆盖时的异常特点:Exception||----AException//父类方法抛出A||----BException//子类方法只能抛出A,B或者不抛。||----BException//原因:父类有处理A异常的方法,当抛出C异常//时父类方法是不能处理的。三点:a)子类在覆盖父类时,如果父类的方法抛出异常,那么子类的覆盖方法只能抛出父类方法异常的子集。b)如果父类方法抛出多个异常,那么子类在覆盖该方法时,只能抛出父类异常的子集。c)如果父类或者接口中的方法没有抛出异常,那么子类在覆盖方法时,也不能抛出异常。那么子类发生了C异常怎么办呢?不能抛,要在内部处理。trycatch。37.(类似return)结果:38.类类型数组,存放的是类的对象。39.package:包:1).对类文件进行分类管理;2)给类提供多层命名空间;3)写在程序文件的第一行;4).类名的全称是包名.类名;5).包也是一种封装形式。包名小写。类名单词首字母大写。生成包文件命令:当前文件生成javac-d.PackageDemo.javajavapack.PackageDemo直接javacpack.PackageDemo.java会提示找不到文件,所以自建文件夹pa
本文标题:毕向东Java自学笔记
链接地址:https://www.777doc.com/doc-5043207 .html