---------------------- android培训、java培训、期待与您交流! ----------------------

一丶Static关键字

1、static是一个修饰符,用于修饰成员(成员变量,成员函数);

2、成员被static修饰后,可以被对象调用,也可以直接被类名调用:类名.静态成员

3、栈内存,方法区(共享区),堆内存

4、特点:
         ①随着类的加载而加载,随着类的消失而消失,说明它的生命周期最长

②优先于对象存在。

③被所有对象共享
         static String country="CN";//静态成员变量(类变量),随着类的加载存在于方法区
                   String name;//成员变量(实例变量),随着对象的建立存在于堆内存中,随着对象的消失而消失

5、静态方法只能访问静态成员;非静态方法既可以访问静态成员也可以访问非静态成员

静态方法中不可以出现this,super关键字,以为静态优先于对象存在

6、什么时候使用静态。因为静态修饰的内容有成员变量和成员函数,所以从这两个方面考虑:
               ①什么时候定义静态变量(类变量):
                          当对象中出现共享数据时,该数据被静态所修饰,对象中的特有数据要定义成非静态存在于堆内存中。
               ②什么时候定义静态函数:
                          当功能内部没有访问到非静态数据(对象的特有数据,那么该功能可以定义成静态的

7、静态的应用示例代码:

/*每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用*/class Dmeo{public static void main(String[] args){int[] arr={3,4,1,8};/*int max=0;for(int x=1;x<arr.length;x++){if(arr[x]>arr[max])max=x;}*/int max=getMax[arr];System.out.println("max="+max);}public static int getMax(int[] arr){int max=0;for(int x=1;x<arr.length;x++){if(arr[x]>arr[max])max=x;}return arr[max];}}class Test{public static int getMax(int[] arr){int max=0;for(int x=1;x<arr.length;x++){if(arr[x]>arr[max])max=x;}return arr[max];}}//数组工具类/*我们发现ArrayTool对象并未封装特有的数据,操作数组的每一个方法都没有用到ArrayTool对象中的特有数据所以可以讲ArrayTool中方法都定义成static的,直接通过类名调用即可为了更为严谨,可以强制该类不能创建对象,则将构造函数私有化即可*/class ArrayTool{//获取最大值private ArrayTool(){};//私有化默认的构造函数public static int getMax(int[] arr){int max=0;for(int x=1;x<arr.length;x++){if(arr[x]>arr[max])max=x;}return arr[max];}//获取最小值public static int getMin(int[] arr){int min=0;for(int x=1;x<arr.length;x++){if(arr[x]<arr[min])min=x;}return arr[min];}//排序public static void selectSort(int[] arr){for(int x=0;x<arr.length-1;x++){for(int y=x+1;y<arr.length;y++){if(arr[x]>arr[y]){swap(arr,x,y);}}}}//冒泡排序public static void bubleSort(int[] arr){for(int x=0;x<arr.length-1;x++){for(int y=0;y<arr.length-x-1;y++){if(arr[y]>arr[y+1]){swap(arr,y,y+1);}}}}//交换位置,此功能没有必要提供,所以可以私有化private static void swap(int[] arr,int a,int b){int temp=arr[a];arr[a]=arr[b];arr[b]=temp;}//打印public static void printArray(int[] arr){System.out.print("[");for(int x=0;x<arr.length;x++){if(x!=arr.length-1)system.out.print(arr[x]+",");elseSystem.out.print(arr[x]+"]");}}}//测试功能class ArrayToolDmeo{public static void main(String[] args){int[] arr={3,1,87,32,8};ArrayToll tool=new ArrayToll();int max=tool.getMax(arr);System.out.println("max="+max);}}

9、静态代码块:

/*随着类的加载而执行,只执行一次,优先于主函数执行*/static{System.out.println("a");}  

二、final关键字

1、修饰符,可以修饰类,函数,变量。

2、被final修饰的类不可以被继承。可以避免被子类继承复写功能。

3、被final修饰的方法不可以被复写。

4、被final修饰的变量是一个常量只能赋值一次,既可以修饰成员变量,也可以修饰局部变量。
       当在描述事物时,一些数据的出现值是固定的,那么这时为了增强阅读性,都给这些值起个名字。而这些值不需要改变,所以          加上final修饰。
       常量:常量的书写规范所有字母都大写,如果由多个单词组成,单词间通过"_"连接。

5、内部类定义在类中的局部位置上时,只能访问该局部被final修饰的局部变量。

三、帮助文档的制作示例代码

/**这是一个可以对数组进行操作的工具类,该类中提供了:获取最值,排序等功能。@author 张三@version V1.1*/class ArrayTool{private ArrayTool(){};//私有化默认的构造函数/**获取一个整型数组中的最大值。@param arr 接收一个int类型的数组。@return 返回该数组中的最大值。*/public static int getMax(int[] arr){int max=0;for(int x=1;x<arr.length;x++){if(arr[x]>arr[max])max=x;}return arr[max];}/**获取一个整型数组中的最小值。@param arr 接收一个int类型的数组。@return 返回该数组中的最小值。*/public static int getMin(int[] arr){int min=0;for(int x=1;x<arr.length;x++){if(arr[x]<arr[min])min=x;}return arr[min];}/**给int数组进行选择排序。@param arr 接收一个int类型的数组。*/public static void selectSort(int[] arr){for(int x=0;x<arr.length-1;x++){for(int y=x+1;y<arr.length;y++){if(arr[x]>arr[y]){swap(arr,x,y);}}}}/**给int数组进行冒泡排序。@param arr 接收一个int类型的数组。*/public static void bubleSort(int[] arr){for(int x=0;x<arr.length-1;x++){for(int y=0;y<arr.length-x-1;y++){if(arr[y]>arr[y+1]){swap(arr,y,y+1);}}}}//交换位置,此功能没有必要提供,所以可以私有化/**给数组中元素进行位置的置换。@param arr 接收一个int类型的数组。@param a 要置换的位置。@param b 要置换的位置。*/private static void swap(int[] arr,int a,int b){int temp=arr[a];arr[a]=arr[b];arr[b]=temp;}/**用于打印数组中元素,打印形式是:[element1,element2......]*/public static void printArray(int[] arr){System.out.print("[");for(int x=0;x<arr.length;x++){if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.print(arr[x]+"]");}}}

--------------------- android培训、java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima

黑马程序员——static和final关键字相关推荐

  1. 黑马程序员——Java语言基础——关键字、表示符、常量、变量及数据的类型、运算符

    ---------------------------- android培训.java培训.期待与您交流! --------------------------------- Java是强类型的语言, ...

  2. 黑马程序员 static的类可以用类名直接调用,无需创建对象

    ---------------------- android培训.java培训.期待与您交流! ----------------------- class ToolDemo {public stati ...

  3. Java语法快速学习-黑马程序员(个人整理版本)

    Java入门基础视频教程,java零基础自学首选黑马程序员Java入门教程(含Java项目和Java真题)_哔哩哔哩_bilibili为了帮助广大对Java有兴趣和立志进入本行业的零基础学员,本套课程 ...

  4. 【黑马程序员】20天学会Java-基础阶段笔记

    视频地址: https://www.bilibili.com/video/BV1Cv411372m 此笔记是 P1 - P85 1. 开始 1.1 注释(理解) 注释是对代码的解释和说明文字,可以提高 ...

  5. 黑马程序员入学Java知识——精华总结

    黑马程序员入学Java知识--精华总结 J2SE部分,Java高新技术部分,7K面试题部分等黑马入学要求的知识点总结! 一.黑马程序员-java概述与基础知识 6 1.何为编程? 6 2.Java语言 ...

  6. 黑马程序员:Java基础总结----Java语言编程规范

       黑马程序员:Java基础总结        Java语言编程规范:参考自SUN公司文档  ASP.Net+Android+IO开发..Net培训.期待与您交流!  I.   排版规范 A.  规 ...

  7. JAVA基础语法笔记(黑马程序员系列)

    1. Java概述 1.1 Java语言发展史(了解) 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java语言是美国Sun公司(Stanford Uni ...

  8. JVM入门笔记-摘自黑马程序员

    JVM笔记 这是一篇JVM小白的入门笔记,适合刚接触JVM的伙伴们入门参考. 笔记是完全按照我看的视频来的,说实话内容不深很好理解,主要的作用就是把所有的知识点串起来让你不会迷茫,就像画画一样先描好轮 ...

  9. 黑马程序员-Java教程-10缓冲流、转换流、序列化流

    day10[缓冲流.转换流.序列化流.打印流] 主要内容 缓冲流 转换流 序列化流 打印流 教学目标 能够使用字节缓冲流读取数据到程序 能够使用字节缓冲流写出数据到文件 能够明确字符缓冲流的作用和基本 ...

最新文章

  1. Python学习之字典
  2. Kubernetes 网络概念及策略控制(叶磊)
  3. C++:线程操作之CRITICAL_SECTION用法的介绍和例子理解
  4. LVS(6)——NAT准备工作
  5. LSTM股票价格预测
  6. 算法设计与分析——回溯法——旅行售货员问题
  7. Google浏览器截长图 不需要借助任何插件!!!
  8. java程序日期转换_Java 日期转换详解及实例代码
  9. 【Win32 API学习】模拟键盘输入和鼠标输入
  10. DELPHI中操作ACCESS数据库
  11. 18650锂电池保护板接线图_锂电池保护板的原理介绍保护板的构成和主要作用
  12. oracle财务数据权限思考
  13. Spring Cloud【Finchley】实战-05配置中心的搭建(配合使用Eureka)和Config Server高可用
  14. VM虚拟机安装Linux系统
  15. 第三章 分类模型-随机森林知识点详细总结
  16. 电商新趋势来临!?解析Dtop 环球嘉年华电商是否值得加入!
  17. 小学计算机室培训心得,小学计算机培训心得体会范文
  18. 统一协同工作平台用户管理、单点登录以及任务集成接口说明
  19. php.ini在哪里 微赞_微赞秀HTML5移动场景制作平台系统v1.0.2
  20. # 科研牛人告诉研究生怎么看文献,怎么写论文csdn

热门文章

  1. 危害肠道健康的两大敌人:诺如病毒和轮状病毒
  2. Oracle,tnsping通的条件
  3. [ubuntu] 外挂硬盘
  4. 菜鸟学设计模式之一思想准备
  5. mybatis二级缓存架构原理
  6. 建筑工程量计算机构,一套完整的工程量计算实例含建筑结构图.doc
  7. 一键安装php环境 iis,Windows Server 2008(R2) 一键安装PHP环境(PHP5.3+FastCGI模式
  8. Docker镜像导出、删除、导入以及问题解决
  9. Beats:使用 Elastic Stack 记录 Golang 应用日志
  10. 自学Java多久才能找到一份15K的工作?干货都说了,能不能就业看你自己了!