Java 中的 static 使用之静态方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java中的static使用之静态方法与静态变量一样,我们也可以使用static修饰方法,称为静态方法或类方法。其实之前我们一直写的main方法就是静态方法。静态方法的使用如:需要注意:1、静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员。如:如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量。如:、在普通成员方法中,则可以直接访问同类的非静态变量和静态变量,如下所示:3、静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法。如:ava中的static使用之静态初始化块Java中可以通过初始化块进行数据赋值。如:在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用static修饰初始化块,就称为静态初始化块。需要特别注意:静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。我们来看一段代码:运行结果:通过输出结果,我们可以看到,程序运行时静态初始化块最先被执行,然后执行普通初始化块,最后才执行构造方法。由于静态初始化块只在类加载时执行一次,所以当再次创建对象hello2时并未执行静态初始化块。封装1、概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问2、好处a:只能通过规定的方法访问数据b:隐藏类的实例细节,方便修改和实现。什么是Java中的内部类问:什么是内部类呢?答:内部类(InnerClass)就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。问:那为什么要将一个类定义在另一个类里面呢?清清爽爽的独立的一个类多好啊!!答:内部类的主要作用如下:1.内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类2.内部类的方法可以直接访问外部类的所有数据,包括私有的数据3.内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便问:内部类有几种呢?答:内部类可分为以下几种:o成员内部类o静态内部类o方法内部类o匿名内部类Java中的成员内部类内部类中最常见的就是成员内部类,也称为普通内部类。我们来看如下代码:运行结果为:从上面的代码中我们可以看到,成员内部类的使用方法:1、Inner类定义在Outer类的内部,相当于Outer类的一个成员变量的位置,Inner类可以使用任意访问控制符,如public、protected、private等2、Inner类中定义的test()方法可以直接访问Outer类中的数据,而不受访问控制符的影响,如直接访问Outer类中的私有属性a3、定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去new一个内部类对象,即:内部类对象名=外部类对象.new内部类();4、编译上面的程序后,会发现产生了两个.class文件其中,第二个是外部类的.class文件,第一个是内部类的.class文件,即成员内部类的.class文件总是这样:外部类名$内部类名.class1、外部类是不能直接使用内部类的成员和方法滴可先创建内部类的对象,然后通过内部类的对象来访问其成员变量和方法。、如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用this关键字。如:运行结果:Java中的静态内部类静态内部类是static修饰的内部类,这种内部类的特点是:1、静态内部类不能直接访问外部类的非静态成员,但可以通过new外部类().成员的方式访问2、如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员3、创建静态内部类的对象时,不需要外部类的对象,可以直接创建内部类对象名=new内部类();运行结果:publicstaticclassSInner{//内部类中的变量scoreintscore=91;publicvoidshow(){System.out.println(访问外部类中的score:+HelloWorld.score);System.out.println(访问内部类中的score:+score);}}//测试静态内部类publicstaticvoidmain(String[]args){//直接创建内部类的SInnersi=newSInner();//调用show方法si.show();}}e.printStackTrace();打印异常:Scanner是SDK1.5新增的一个类,可是使用该类创建一个对象.Scannerreader=newScanner(System.in);然后reader对象调用下列方法(函数),读取用户在命令行输入的各种数据类型:next.Byte(),nextDouble(),nextFloat,nextInt(),nextLin(),nextLong(),nextShot()上述方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.例如,拥护在键盘输入12.34,hasNextFloat()的值是true,而hasNextInt()的值是false.NextLine()等待用户输入一个文本行并且回车,该方法得到一个String类型的数据。下面是一个实例:importjava.util.*;publicclassExample{publicstaticvoidmain(Stringargs[]){System.out.println(请输入若干个数,每输入一个数用回车确认);System.out.println(最后输入一个非数字结束输入操作);Scannerreader=newScanner(System.in);doublesum=0;intm=0;while(reader.hasNextDouble()){doublex=reader.nextDouble();m=m+1;sum=sum+x;}System.out.printf(%d个数的和为%f/n,m,sum);System.out.printf(%d个数的平均值是%f/n,m,sum/m);}}Java中String类的常用方法ⅠString类提供了许多用来处理字符串的方法,例如,获取字符串长度、对字符串进行截取、将字符串转换为大写或小写、字符串分割等,下面我们就来领略它的强大之处吧。String类的常用方法:结合代码来熟悉一下方法的使用:运行结果:友情提示:1.字符串str中字符的索引从0开始,范围为0到str.length()-12.使用indexOf进行字符或字符串查找时,如果匹配返回位置索引;如果没有匹配结果,返回-13.使用substring(beginIndex,endIndex)进行字符串截取时,包括beginIndex位置的字符,不包括endIndex位置的字符Java当中的线程方法一、使用extends继承来实现;方法二、使用接口实现接口来完成:三和上面对比加入synchronizes(this){}(一)、一、抽象类生来就是当爹的:二、抽象函数可以被继承但是子类必须复写父类的抽象函数;】三、抽象类可以有构造函数,构造函数可以再子类的构造函数中用super()方法调用。This的用法;Stringname;Intage;Stringaddress;//this.name的name代表成员变量,=后面的参数代表的是参数name;This的用法二、调用本类中的构造函数或函数包一:如果一个类不是public则无法再外部包中使用它,如果他是public则可以用(包名)(.)(类名)调用它如果一个类是public如果想在别的包中调用这个类的变量和函数,则需要把函数和变量声明为publicPrivate只能在当前这个类中使用;Default什么都不写就是defaultProtected权限首先拥有和default一样的功能,但是该权限只能修饰成员变量和成员函数,如果其他包中的类继承另一个包中的类如果成员变量和成员函数式protected,则可以访问;IO接口字节流importjava.io.*;classTest1{publicstaticvoidmain(Stringargs[]){FileInputStreamfil=null;FileOutputStreamfos=null;try{fil=newFileInputStream(D:/work/src/from.txt);fos=newFileOutputStream(D:/work/src/gg.txt);byte[]buffer=newbyte[1024];while(true){inthh=fil.read(buffer,0,buffer.length);if(hh==-1){break;}fos.write(buffer,0,hh);}}catch(Exceptione){System.out.println(e);}finally{try{}catch(Exceptione){System.out.println(e);}}}}字符流importjava.io.*;classTest2{publicstaticvoidmain(Stringargs[]){FileReaderp=null;BufferedReadera=null;try{p=newFileReader(D:/work/src/hh.txt);a=newBufferedReader(p);Stringline=null;while(true){line=a.readLine();if(line==null){break;}System.out.println(line);}}catch(Exceptione){System.out.println(e);}finally{try{p.close();a.close();}catch(Exceptione){System.out.println(e);}}}}

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功