您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > linux/Unix相关 > java基础2
Java基础二1、方法:[修饰符]返回值类型方法的名称([形参列表])[;][{……方法体}]Test5.javapublicclassTest5{publicstaticvoidmain(String[]args){//求(1,1000)区间内的偶数和。printSum(1,100);printSum(1,10000);printSum(25,500);}staticvoidprintSum(intstart,intend){intsum=0;for(inti=start;iend;i++){if(i%2==0){sum+=i;//sum=sum+i;}}System.out.println(sum(+start+,+end+)=+sum);}}注意:该方法是直接将求得的结果直接进行显示输出。有时候是这样的,调用者,求的结果之后,对结果可能有不同的操作。这时我们上面的程序就无法满足了。上面的方法是不需要返回值的,但是方法定义时需要返回值的类型,我们返回什么呢?返回void,void在java中就是上面都不返回,只是为了满足方法的定义。Test5.javapublicclassTest5{publicstaticvoidmain(String[]args){//求(1,1000)区间内的偶数和。printSum(1,100);printSum(1,10000);printSum(25,500);intsum=getSum(300,500);System.out.println(sum);System.out.println((sum%3)==0);}staticintgetSum(intstart,intend){intsum=0;for(inti=start;iend;i++){if(i%2==0){sum+=i;}}returnsum;}}当方法返回值不是void时,就需要借助return关键字进行数据的返回。2、方法的调用:1)非静态方法:Test6.javapublicclassTest6{publicstaticvoidmain(String[]args){show(12);}intshow(intvalue){System.out.println(value=+value);}}在静态的方法的上面文环境中无法掉用非静态方法。怎么样才能调用呢个?-|将非静态方法改为静态方法。-|通过对象来访问方法:Test6.javapublicclassTest6{publicstaticvoidmain(String[]args){Test6t6=newTest6();t6.show(12);}intshow(intvalue){System.out.println(value=+value);returnvalue+10;}}2)静态方法的调用:1)如果两个静态方法在同一个类的内部,一个调用两一个,可以直接写方法的名字。2)如果两个方法不在同一个类的内部,需要类名加“。”加方法名来访问。publicclassTest6{publicstaticvoidmain(String[]args){Test6t6=newTest6();t6.show(12);print();Test6.print();}intshow(intvalue){System.out.println(value=+value);returnvalue+10;}staticvoidprint(){System.out.print(哈哈,我是好人。);}}3、属性的默认初始化:数值型默认为0,boolean默认为false,字符型默认为“”,引用型默认为null。Person.javapublicclassPerson{Stringname;Stringsex;intage;Stringaddress;publicstaticvoidmain(String[]args){//newPerson(李向武).eat(newBaozi());Personp;p=newPerson();System.out.println(p.age);//oSystem.out.println(p.name);//null}}4、封装:1)将一段业务逻辑,即功能、算法;通过方法来实现,叫封装;2)将具有相同功能和属性的一类事物通过class关键字定义到{}之间叫封装;3)在描述一类事物时:将其属性私有化(private修饰),通过相应的getter、setter方法对属性进行读写操作,就叫封装,这样做是安全的。Person.javapublicclassPerson{privateStringname;privateStringsex;privateintage;privateStringaddress;//setterpublicvoidsetName(Stringn){name=n;}publicvoidsetSex(Strings){sex=s;}publicvoidsetAge(inta){age=a;}publicvoidsetAddress(Stringar){address=ar;}//getterpublicStringgetName(){retrunname;}publicStringgetSex(){returnsex;}publicintgetAge(){returnage;}publicStringgetAddress(){returnaddress;}}5、类、对象、类和对象之间的关系1)类:就是一种抽象的概念,如何来抽象的?具有相同功能和相同属性的一类事物。类是对象的集合。2)对象(就是具体事物):对象的构建应该以类为模板来定义。也就是实例化。对象就是类的一个具体的体现。3)类和对象的关系:类是对象的抽象,是对象的集合;对象是类的一个具体体现,也就是一个具体实例,也就是类中的一个子集。对象必须以类为模板来构建(实例化)。6、无参的构造方法:构造方法的方法名要类名完全一样,不需要返回值类型。Person.javapublicclassPerson{privateStringname;privateStringsex;privateintage;privateStringaddress;//setterpublicvoidsetName(Stringn){name=n;}publicvoidsetSex(Strings){sex=s;}publicvoidsetAge(inta){age=a;}publicvoidsetAddress(Stringar){address=ar;}//getterpublicStringgetName(){returnname;}publicStringgetSex(){returnsex;}publicintgetAge(){returnage;}publicStringgetAddress(){returnaddress;}publicstaticvoidmain(String[]args){//调用构造方法就是实例化对象,Personwhz=null;//whz=newPerson(王忠豪,男,23,湖南邵阳);whz=newPerson();}}编译:javacPerson.java会生成一个class:在Person.class文件里。因为Person.class是字节码文件,我们编程人员无法正常识别。但是我们可以借助java的反编译工具:javap.exe来反编译Person.class中的Person类。反编译Person类:javapPerson通过反编译的结果和我们自己编写的源程序进行对比,得出java的虚拟机会自动给我们的类添加一个无参的构造方法(当我们没有写构造方法时)。Person.javapublicclassPerson{privateStringname;privateStringsex;privateintage;privateStringaddress;//setterpublicvoidsetName(Stringn){name=n;}publicvoidsetSex(Strings){sex=s;}publicvoidsetAge(inta){age=a;}publicvoidsetAddress(Stringar){address=ar;}//getterpublicStringgetName(){returnname;}publicStringgetSex(){returnsex;}publicintgetAge(){returnage;}publicStringgetAddress(){returnaddress;}publicPerson(Stringn,Strings,inta,Stringar){name=n;sex=s;age=a;address=ar;}publicvoideat(Baozibz){System.out.println(name+在吃+bz+,他今年+age+岁!);}publicstaticvoidmain(String[]args){//调用构造方法就是实例化对象,Personwhz=null;whz=newPerson(王忠豪,男,23,湖南邵阳);//newPerson();//报错了。}}编译:javacPerson.java会生成一个Person类,保存在Person.class的文件中。反编译Person类:javapPerson通过反编译的结果和我们自己编写的源文件进行比较,得出:当我们自己受到写了构造方法时,系统不再会给我们的类添加无参的构造方法了。也就意味着,编译器在编译源文件时,是先检查该文件是否有构造方法,如果有,虚拟机就不会给添加构造方法,如果没有才添加构造方法,且这个添加的构造方法是没有参数,没有方法的具体实现的。7、方法的重载,动态绑定。Test.javaclassTest{staticintaddIntWithInt(inta,intb){intresult=0;result=a+b;returnresult;}staticfloataddIntWithFloat(inta,floatb){floatresult=0.0f;result=a+b;returnresult;}staticdoubleaddDoubleWithDouble(doublea,doubleb){doubleresult=0.0;result=a+b;returnresult;}publicstaticvoidmain(String[]args){System.out.println(addIntWithInt(1,2));System.out.println(addIntWithFloat(1,3.0f));}}通过上面的程序得出:方法的可读性虽然很高,但只是针对我们编程人员来说罢了。因为方法的名字里有很多专业术语,非专业人员无法正常使用以上方法。所以不好,就像计算器一样,加运算永远只有一个“+”操作,没有多个,这个使用会很简便。Test.javaclassTest{staticintadd(inta,intb){intresult=0;result=a+b;returnresult;}staticfloatadd(inta,floatb){floatresult=0.0f;result=a+b;returnresult;}staticdoubleadd(doublea,doubleb){doubleresult=0.0;result=a+b;returnresult;}publicstaticvoidmain(String[]args){System.out.println(add(1,2));System.out.println(add(1,3.0f));System.out.println(add(1.1,3.0));}}通过上
本文标题:java基础2
链接地址:https://www.777doc.com/doc-7028060 .html