面向对象-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. 「CF10D」LCIS

    传送门 Luogu 解题思路 首先考虑怎么求方案,这样才可能会输出方案. 考虑 \(\text{DP}\). 设 \(f[i][j]\) 表示在 \(a\) 序列中选择一个 \([1...i]\) 的 ...

  2. Hive的原生部署方式

    一.Hive的部署 1.官方文档 https://cwiki.apache.org/confluence/display/Hive/GettingStarted 2.前提条件 需要安装JDK1.7之上 ...

  3. MySQL存储过程例子

    -- 索引 INDEXCREATE INDEX idx_sname ON student( sname(4)); ALTER TABLE teacher add index idx_tname(tna ...

  4. LINQ---查询变量

    LINQ查询可以返回两种类型的结果----枚举和标量(scalar)的单一值 namespace ConsoleApplication46 { class Program { static void ...

  5. 题解 nflsoj550 【六校联合训练 省选 #9】序列

    题目链接 以下把值域(题面里的\(lim\))记做\(m\). 考虑求\(k\)的答案.考虑每个位置对答案的贡献,枚举位置\(i\),再枚举\(a[i]\)的值\(x\).设: \[ F(k)=\su ...

  6. HTML学习第七天(一)

    HTML学习第七天(一) aside元素用来表示当前或文章的附属信息部分,它可以包含与当前页面或主要内容的相关引用.侧边栏.广告.导航条,以及其他类似的有区别于主要内容的部分 <!DOCTYPE ...

  7. eos 智能合约开发体验

    eos编译安装 eos 特性 数据存储 eos投票智能合约开发 eos投票智能合约部署测试 注意避坑 eos编译安装 ERROR: Could not find a package configura ...

  8. Docker + Maven + Docker-compose

    前言: docker:容器化管理 maven:支持docker-maven的插件,通过 mvn clean -Dmaven.test.skip package dockerfile:build 打包命 ...

  9. 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程重要

    前言 SSM(Spring+SpringMVC+Mybatis)是目前较为主流的企业级架构方案,不知道大家有没有留意,在我们看招聘信息的时候,经常会看到这一点,需要具备SSH框架的技能:而且在大部分教 ...

  10. Program-Language

    1. 主流编程语言 2. 编程语言分类     2.1 编译or解释     2.2 按照客观系统的描述可分为两类     2.3 按照编程范型可分为 3. 语言范式 Paradigm 4. 计算机语 ...