面向对象3---static,制作帮助文档,代码块
来源:互联网 发布:设备管理器中没有端口 编辑:程序博客网 时间:2024/05/16 07:45
一.static关键字
- static关键字:可以修饰成员变量和成员方法,静态的,共享的
/* * 一个学生类: * 成员变量:name,age,country(来自同一个国家) * 成员方法:show() * **/class Student{ //成员变量 String name; int age; //String country; //将country设为静态 static String country; //两个参数的构造方法 public Student(String name,int age){ this.name = name; this.age = age; } //三个参数的构造方法 public Student(String name,int age,String country){ this.name = name; this.age = age; this.country = country; } //成员方法 public void show(){ System.out.println(name+","+age+","+country); }}public class Demo { public static void main(String[] args){ //每次创建对象的时候都要给country赋值,在堆内存消耗内存较大,因此将country设为static// Student s1 = new Student("王一",21,"中国");// Student s2 = new Student("王二",22,"中国");// Student s3 = new Student("王三",23,"中国"); //static静态的,共享的 Student s1 = new Student("王一",21,"中国"); Student s2 = new Student("王二",22); Student s3 = new Student("王三",23); s1.show(); s2.show(); s3.show(); System.out.println("---------------"); //country共享的,为最后一次赋的值 Student s4 = new Student("王一",21,"中国"); Student s5 = new Student("王二",22,"英国"); Student s6 = new Student("王三",23,"美国"); s4.show(); s5.show(); s6.show(); }}
2. static关键字的特点:
static随着类的加载而加载
优先于对象存在
使用对象名可以去访问成员变量,如果这个成员被static修饰,那么可以被类名直接调用
class Number{ int num1 = 10; static int num2 = 20; public static void show(){ System.out.println("show"); }}public class Demo1 { public static void main(String[] args){ //创建一个number类的对象 Number n = new Number(); //用对象名调用 System.out.println(n.num1+","+n.num2); n.show(); //用static修饰的成员可用类名调用 System.out.println(Number.num2); Number.show(); }}
3. static的注意事项
在静态方法中是没有this关键字(静态随着类的加载而加载,this代表当前类的对象,随着对象的创建而存在)
静态的成员:静态只能访问静态
静态成员变量:在静态成员方法中,只能访问静态的成员变量
静态成员方法:只能访问静态(成员方法/成员变量)
非静态成员方法:里面可以访问静态的成员
class Number1 { //非静态成员变量 int num1 = 10; //非静态成员变量 static int num2 = 20; //非静态成员方法 public void method1(){ System.out.println("1"); } //非静态的成员方法 public static void method2(){ System.out.println("2"); } //非静态成员方法 public void show1(){ System.out.println(num1);//隐藏了是访问该类对象的成员变量 System.out.println(this.num1);//明确了是访问该类对象的成员变量 System.out.println(num2);//访问静态成员变量 //调用静态/非静态的方法 method1(); method2(); System.out.println("------------"); } //静态的成员方法 public static void show2(){// System.out.println(num1);//报错,静态只能访问静态 System.out.println(num2);// method1();//报错,静态只能访问静态 method2(); System.out.println("------------"); }}public class Demo2{ public static void main(String[] args){ Number1 n = new Number1(); n.show1(); n.show2(); System.out.println(n.num1); System.out.println(n.num2); }}
二.制作帮助文档
制作文档说明书的步骤(用制作数组文档举例):
1. 定义一个数组工具类:ArrayTool(数组工具类中的注释:使用文档注释:解释每一个方法的参数是什么意思)
2. 定义一个测试类ArrayDemo
3. 编辑完这两个代码后新建文件夹,在其中建立两个文本文档,删去包名
4. 打开dos控制台—->切换到当前盘符—–>javadoc -d 目录名 -author -version ArrayTool.java
ArrayTool类:
/** * 数组的一个工具类 * @author app * @version V1.0 * */public class ArrayTool { /** * 工具类的无参构造方法 * */ //为了不让外界创建对象,将无参构造私有化,将其他方法用static修饰,直接使用类名调用 private ArrayTool(){ } /** * 数组的遍历方法 * @param arr:需要被遍历的数组 * */ public static void printArray(int[] arr){ System.out.print("["); for(int i = 0;i < arr.length;i ++){ if(i == arr.length-1){ System.out.println(arr[i]+"]"); }else{ System.out.print(arr[i]+","); } } } /** * 找出数组最大值的方法 * @param arr:需要输出最大值的数组 * @return max:数组的最大值 * */ public static int printMax(int[] arr){ int max = arr[0]; for(int i = 0;i < arr.length; i++){ if(max < arr[i]){ max = arr[i]; } } return max; }}
ArrayDemo类:
public class ArrayDemo { public static void main(String[] args){ int[] a = {10,10,30,40,50}; ArrayTool.printArray(a); System.out.println(ArrayTool.printMax(a)); }}
重新建立文件夹下的文本文档存储这两个类(注意删去这两个类的包名)
建立文档说明书文件夹,并在其下建立两个文本文档
输入dos命令:
在上述建立的文档说明书文件夹中生成目录文件夹
将目录文件夹下的ArrayTool.html用浏览器打开,即可看到制作好的文档说明书
三.代码块
- **代码块:**java中,用{}括起来的叫代码块
- 代码块的分类:
- 局部代码块:用来限定变量的生命周期,在main方法中出现
- 构造代码块:类中的成员位置,用来给对象的数据进行初始化.每次执行构造方法之前,要执行构造代码块
- 静态代码块:类中的成员位置,用static修饰代码块.
静态代码块的作用:静态随着类的加载而加载,给类进行初始化
- 静态代码块,构造代码块,构造方法,执行的顺序?
静态代码块—>构造代码块—>构造方法
分析:静态代码块:在类中只加载一次,随着类的加载而加载.构造代码块:每次在执行构造方法之前,先走构造代码块,随着对象的加载而加载.因此顺序是:静态代码块—>构造代码块—>构造方法
package 代码块;class Code{ //静态代码块 static{ int a = 1000; System.out.println(a); } //构造代码块 { int b = 100; System.out.println(b); } //无参构造 public Code(){ System.out.println("code"); } //有参构造 public Code(int c){ System.out.println("code.."); } //构造代码块 { int d = 10; System.out.println(d); } //静态代码块 static{ int e = 0; System.out.println(e); }}public class Demo1 { public static void main(String[] args){ //局部代码块 { int f = 1; System.out.println(f); }// System.out.println(f);//报错:局部变量限定变量的声明周期 { int g = 0; System.out.println(g); } System.out.println("-----------"); Code c1 = new Code(); System.out.println("-----------"); Code c2 = new Code(); System.out.println("-----------"); Code c3 = new Code(); }}
分析:
在main方法中按照顺序先执行两个局部代码块,输出1,0.
Code c1 = new Code();静态代码块随着类的加载而加载,先执行Code类中的静态代码块,按照顺序输出1000,0.再执行构造方法之前,先执行构造代码块,输出100,10.最后执行无参构造方法,输出code.
Code c2 = new Code();静态代码块只在类中加载一次.因此,执行构造方法之前,先执行构造代码块,输出100,10.最后执行无参构造方法,输出code.
Code c3 = new Code();静态代码块只在类中加载一次.因此,执行构造方法之前,先执行构造代码块,输出100,10.最后执行无参构造方法,输出code.
- 面向对象3---static,制作帮助文档,代码块
- Java基础---面向对象(面向对象,类,对象,匿名对象,封装,构造函数,构造代码块,this,static,main,帮助文档,静态代码块,单例)
- 黑马程序员------面向对象(No.3)(static、静态代码块、封装、说明文档制作、main函数)
- static关键字,main函数,帮助文档的制作,静态代码块,对象的初始化过程,单例设计模式
- 黑马程序员—— 4,二维数组,面向对象,制作帮助文档,静态代码块,构造代码块,构造函数,单例设计模式
- 8 面向对象(制作帮助文档,通过JDK提供的API学习了Math类,代码块,继承(继承子父成员访问特点,super关键字,方法重写))
- 面对对象2【static】【主函数】【静态应用】【Java帮助文档】【静态代码块】【对象初始化过程】
- java中的帮助文档制作与静态代码块
- 【JAVA】帮助文档的制作,静态代码块
- 【JavaSE学习笔记】面向对象_static关键字、代码块、API文档的使用与制作
- 6.2面向对象(Math类,成员方法,代码块,继承,制作文档说明书)
- 面向对象—05—制作帮助文档
- 第六天-面向对象(静态,帮助文档制作)
- day06static关键字,main函数,帮助文档的制作,静态代码块,对象的初始化过程,单例设计模式
- 帮助文档,代码块,继承
- 面向对象、代码块
- 面向对象 代码块
- 黑马程序员——Java基础----面向对象(static、main函数、帮助文档及运用)(3)
- redis、zookeeper分布式锁的实现
- springMVC对静态资源访问的处理
- DockerXScan——Docker镜像漏洞扫描器
- 命名空间namespace小结
- JVM高级特性与实践(三):垃圾收集算法 与 垃圾收集器实现
- 面向对象3---static,制作帮助文档,代码块
- 剑指offer--数组中出现次数超过一半的数
- Hadoop好友推荐系统-执行聚类算法
- 基于swpiper的资讯滚动走马灯做法
- Java JVM 工作原理详解
- 算法系列——Two Sum II
- MySQL5.7 添加用户、删除用户与授权
- Qt之正则表达式
- Java从入门到高手到放弃