面向对象-static关键字实战案例

                             作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.static关键字概述

1>.static的功能

  static关键字用于修饰成员变量和成员函数。

2>.被static修饰后的成员变量和成员函数具备的特点

  ()随着类的加载而加载;
  ()优先于对象存在(因此静态方法中一般无法直接使用非静态修饰的成员变量);
  ()被所有对象所共享(即不在堆内存中存放);
  ()可以直接被类名调用;

3>.使用static关键字注意事项

  ()静态方法只能访问静态成员;
  ()静态方法中不可以写this,super关键字;
  ()主函数是静态的;
  ()静态关键字不能修饰局部变量;

4>.static的优缺点

  优点:  
    静态成员多了一种调用模式,可以直接被类名调用。也可以被对象调用。   缺点:
    静态方法只能访问静态成员,存在访问的局限性。

5>.静态变量和实例变量的区别

  所属不同:
    静态变量也称为类变量,可以直接被类调用,所属于类;
    非静态变量称为成员变量,或者实例变量,是被对象调用,所属于对象。   生命周期不同:
    静态变量随着类的加载而加载,也意味着随着类的消失而消失,生命周期最长;
    而实例变量随着对象的创建而加载,随着对象的消失而消失,即按照对象生命周期而存在。   存储JVM的位置不同:
    静态变量存储在方法区的静态区中;
    实例变量存在于所述的堆内存中;   数据共享权限不同:
    静态变量数据被所有的对象所共享;
    实例变量是对象中的特有数据

 6>.static的使用场景

  成员变量:
    当该成员变量所存储的数据,每一个对象都是一样的,这时没有必要把该数据存储到每一个对象中,只要让所有对象共享该数据即可,这时成员变量就需要被static修饰。   静态函数:
    当成员函数内并没有访问对象中特有的数据时,就可以将该方法定义成静态的;
    简单的说该函数如果访问了成员变量,该函数就是非静态的;
    该函数没有访问过成员变量,或者访问过静态的成员变量,那么为了程序的严重性,将盖房啊定义成静态的。因为该方法不需要对象存在就可以使用。

二.实现一个静态工具类的应用案例

1>.编写数组工具类

/**
* 实现数据排序并且打印的功能的数组工具类
* @author 尹正杰
*
*/
public class ArrayTools { /**
* @param arr :接收一个int类型的数组,按照从大到小的顺序对int类型的数组进行排序。
*/
public static void sort(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]) {
int temp = arr[x];
arr[x] = arr[y];
arr[y] = temp;
}
}
}
} /**
* 将int数组转换为字符串
*
* @param arr: 接收一个数组int类型的数组
* @return : 返回该数组对应的字符串格式,即[元素1,元素2,元素n,...]
*/
public static String arrayToString(int[] arr) { String res = "[";
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1) {
res = res + arr[i] + ",";
}else {
res = res + arr[i] + "]";
}
} return res;
}
}

2>.调用数组工具类

/**
*
* @author 尹正杰
*
*/
public class ArrayToolDemo { public static void main(String[] args) { //测试数组
int[] arr = {9,5,2,7}; System.out.println("排序之前:" + ArrayTools.arrayToString(arr)); ArrayTools.sort(arr); System.out.println("排序之后:" + ArrayTools.arrayToString(arr)); } }

面向对象-static关键字实战案例的更多相关文章

  1. 面向对象-接口(interface)实战案例

    面向对象-接口(interface)实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口(interface)概述 1>.接口的语法格式 接口时抽象类的一种特殊体 ...

  2. Java面向对象-static关键字、静态方法与普通方法、静态成员变量

    Java面向对象-static关键字.静态方法与普通方法 static关键字的基本作用:方便在没有创建对象的情况下来进行调用(方法/变量). 很显然,被static关键字修饰的方法或者变量不需要依赖于 ...

  3. Java基础语法 - 面向对象 - static 关键字

    使用static关键字修饰的变量.常量和方法分别被称作静态变量.静态常量和静态方法,也被称作类的静态成员 静态变量 使用static修饰过的类变量称为静态变量 该变量需要使用类名.变量名进行调用,不能 ...

  4. PHP面向对象static关键字

    1.静态属性用于保存类的公有数据 2.静态方法里面只能访问静态属性 3.静态成员不需要实例化就可以访问 4.类的内部可以通过self或者static关键字访问自身的静态成员 5.可以通过parent关 ...

  5. Java面向对象--static关键字

  6. (1)封装 (2)static关键字 (3)继承

    1.封装(重中之重)1.1 基本概念 通常情况下,可以在测试类中给成员变量进行赋值,当给定的数值合法但不合理时,无论是编译还是运行阶段都不会报错或给出提示,此时与现实生活不符. 为了避免上述问题的发生 ...

  7. Java static关键字特点

    一.特点 1.随着类的加载而加载2.优先于对象存在3.被类的所有对象共享4.可以通过类名调用 二.调用特征 静态方法: 成员变量:只能访问静态变量 成员方法:只能访问静态成员方法 非静态方法: 成员变 ...

  8. 2017.10.23 Java 面向对象深入学习---final 关键字、static关键字、匿名对象等

    今日内容介绍 1.final 关键字 2.static 关键字 3.匿名对象 4.内部类 5.包的声明与访问 6.访问修饰符 7.代码块 第一节课 01(面向对象)final关键字概念.avi 02: ...

  9. Java第7次作业:造人类(用private封装,用static关键字自己造重载输出方法)什么是面向对象程序设计?什么是类和对象?什么是无参有参构造方法 ?什么是封装?

    什么是面向对象程序设计? 我们称为OOP(Object  Oriented  Programming) 就是非结构化的程序设计 要使用类和对象的方法来进行编程 什么是类,什么是对象 类就是封装了属性和 ...

随机推荐

  1. android7.0关于TelephonyManager.getDeviceId()返回null的问题

    在android7.0的系统下发现TelephonyManager.getDeviceId()在权限允许的情况下取得返回值也为null,解决方法如下: public static String get ...

  2. Vue二次精度随笔(1)

    1.button.input标签的disabled属性 该标签可以控制按钮是否可用,如果他的值为以上几种的话,则他都不会在标签上渲染出这个属性,一旦这个属性出现的话,就说明他是禁用的 2.移除动态绑定 ...

  3. BUU easyre

    拖入ida中shift+F12查找字符串就可以看到flag

  4. [STL]string类型的getline函数

    3.cin.getline() 实际是cin.getline(接收字符串到m,接收个数n,结束字符).接收一个字符串,可以接收空格等,最后一个字符为‘\0’.结束符可以通过设置第三个参数自己设置,默认 ...

  5. Adapter之spinner

    前言: 在写代码当中有时候会用到下拉列表,下面我们讲一下spinner 正文: 因为比较简单,和之前的listView很像,所以直接上代码 <Spinner android:layout_wid ...

  6. 2.12 学习总结 之 表单校验插件validate

    一.说在前面 昨天 学习了ajax的相关知识 今天 学习表单校验插件validate, 并使用ajax 自定义校验规则 二.validate 插件 1.网络上有许多成熟的插件共使用者参考,插件就是将j ...

  7. express 配置 https 服务 ( 以阿里云服务器为例), 探索一周终于搞定

    首先最重要的是 你要明白 https接口的接收或者发送 的形式 是  https://域名:端口号   而不是 https://ip:端口号   一,首先,去阿里云注册免费ssl证书   1,在搜索框 ...

  8. [Codeforces #608 div2]1272B Blocks

    Description There are nnn blocks arranged in a row and numbered from left to right, starting from on ...

  9. 使用JavaScript实现一个简单的编译器

    在前端开发中也会或多或少接触到一些与编译相关的内容,常见的有 将ES6.7代码编译成ES5的代码 将SCSS.LESS代码转换成浏览器支持的CSS代码 通过uglifyjs.uglifycss等工具压 ...

  10. DataTable.Copy()

    DataTable dtpocopy = dtPO.Copy(); DataRow[] dr = dtpocopy .Select("客户名称='" + cusName + &qu ...