在Java中修饰符较多,在这里简单说一说几个访问修饰符的选择使用,和可选修饰符static的使用。

一.访问修饰符:这是Java里用来控制访问类及类的方法、变量的访问权限,从而达到只暴露接口,来隐藏内部实现的细节,访问控制符分4种级别(仅仅适用于类及类的成员修饰  private、默认、protected、public),接下来用一个表的形式简要介绍它们的选用:

     本  类 同  包 不同包
子  类 非 子 类 子  类 非 子 类
private √ × × × ×
默认 √ √ √ × ×
protected √ √ √ √ ×
public √ √ √ √ √

  说明:在表格当中里面    √  表示用此修饰符修饰可以被访问的范围;

                ×  表示用此修饰符修饰不可以被访问到的范围;

二.可选修饰符static的使用:

  1.static修饰属性(变量):

  使用(例:public  static  String  name;) 不使用(例:public   String  name;)
语法上 可以用使用对象加点进行访问,但更多的是类名直接访问。 该属性必须用对象加点进行访问。
内存上 该属性是没有放在对象上的,而是存在数据段的静态区且全类共享一个。 该属性放在每个对象身上的(每个对象有一个自己的name属性)
语法上 该属性跟类有关而跟对象无关。 该属性是属于某个对象的
变量产生时间 是在加载类的时候。 是在new对象的时候产生的
常量属性 不用考虑直接设计为:public  static  final........; -----------------------------------------
属性类型 静态属性、类属性 普通属性、非静态属性

  2.static修饰方法:

  使用 不使用
语法上 虽然可以用对象进行调用,但更多是用类名直接调用 必须使用对象进行调用
操作上 静态方法只能操作静态静态属性及其他调用其他静态方法,不能使用this/super 既可以操作静态属性也可操作非静态属性;既可以操作静态方法也可以操作非静态方法
加载上 static方法优先被加载 非静态的方法被后加载
使用上 某个方法与对象无关只与类有关,才设计选用static, 如果某个方法与某个对象有关,就只能设计为非static的
设计上 如果方法是工具类的工具方法应该设计为static, 如果方法的实现部分需要操作跟对象有关的属性或其他方法,那么该方法就应该设计为非static的

  3.机制上:static方法优先加载,所以不能操作非静态的内容。

  4.static的共性:

    ①凡是static的都跟对象有关,都类级别的。

    ②凡是static的在加载期会有特殊处理

    ③构造方法不能使用static

    ④static修饰的在加载时产生在数据段的静态区内

访问修饰符与可选修饰符static的使用的更多相关文章

  1. 【Java】基础:常见修饰符(权限修饰符以及abstract、static、final等)与变量的描述

    1. 修饰符 public.protected.private.default abstract.static.final. abstract:抽象类.抽象方法 static:静态变量.静态方法.静态 ...

  2. Java 占位符使用 和 修饰符

    Java中占位符的使用 String类的format()方法 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法, ...

  3. java中的类修饰符、成员变量修饰符、方法修饰符。

    类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类. abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现. fin ...

  4. 学习C#修饰符:类修饰符和成员修饰符

    C#修饰符之类修饰符:public.internal. partial.abstract.sealed.static C#修饰符之成员修饰符:public.protected.private.inte ...

  5. 2016 2 - 23 arc中的所有权修饰符(_strong修饰符与_weak修饰符)

    一 _strong修饰符 1._strong修饰符是id类型和对象类型默认的所有权修饰符.如下: id obj = [[NSObject alloc] init];//在没用明确变量所有权修饰符时,会 ...

  6. 30 面向对象编程 抽象类 abstract 修饰符可以用来修饰方法也可以修饰类

    抽象类 概念 abstract 修饰符可以用来修饰方法也可以修饰类, 如果修饰方法,那么该方法就是抽象方法: 如果修饰类,那么该类就是抽象类. 抽象类中可以没有抽象方法,但是有抽象方法的类一定要声明为 ...

  7. java中普通的顶级类是不能使用static关键字修饰的。只有内部类可以使用static修饰,也可以不使用staitc关键字修饰。

    java中普通的顶级类是不能使用static关键字修饰的.只有内部类可以使用static修饰,也可以不使用staitc关键字修饰. java中的类可以是static吗?答案是可以.在java中我们可以 ...

  8. (转)USB的描述符及各种描述符之间的依赖关系

    全文链接:http://justmei.blog.163.com/blog/static/11609985320102421659260/?latestBlog 1 推荐 [原创] USB入门系列之七 ...

  9. 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例

    [源码下载] 背水一战 Windows 10 (9) - 资源: 资源限定符概述, 资源限定符示例 作者:webabcd 介绍背水一战 Windows 10 之 资源 资源限定符概述 资源限定符示例 ...

随机推荐

  1. cocos2d-x 小技巧

    1.字符串 与 数据结构互转 CCPoint: CCPointFromString(); {x, y} CCSize: CCSizeFromString(); {w, h} CCRect: CCSiz ...

  2. 【转】那些不能错过的Xcode插件 -- 不错不错

    原文网址:http://www.cocoachina.com/industry/20130918/7022.html 古人云“工欲善其事必先利其器”,打造一个强大的开发环境,是立即提升自身战斗力的绝佳 ...

  3. jsoup使用选择器语法来查找元素

    问题 你想使用类似于CSS或jQuery的语法来查找和操作元素. 方法 可以使用Element.select(String selector) 和 Elements.select(String sel ...

  4. Android-根据ImageView的大小来压缩Bitmap,避免OOM

    本文转自:http://www.cnblogs.com/tianzhijiexian/p/4254110.html Bitmap是引起OOM的罪魁祸首之一,当我们从网络上下载图片的时候无法知道网络图片 ...

  5. Mybaits+SpringMVC项目(含代码生成工具源码)

       大家下载下来修改数据库配置应该就能运行起来,里面有一个SM的简单案例了,还有说明文件. 运行效果    工具类可以生成Springmvc+mybatis的相关类和配置文件,并具有增删查改的功能, ...

  6. “FormCRUD.csProj.FormMain.Name”隐藏了继承的成员“System.Windows.Forms.Control.Name”。如果是有意隐藏,请使用关键字 new。

    一旦运行就显示:“FormCRUD.csProj.FormMain.Name”隐藏了继承的成员“System.Windows.Forms.Control.Name”.如果是有意隐藏,请使用关键字 ne ...

  7. HDU 5122 K.Bro Sorting

    K.Bro Sorting Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Tot ...

  8. 多线程下OpenCV操作的问题

    问题:在OpenCV中,使用cvCaptureFromAVI打开一个视频文件后,并使用cvReleaseCapture释放关闭它后.再开启一个线程使用cvCaptureFromAVI打开一个视频文件, ...

  9. [GRYZ2015]Graph

    题目描述 给出 N 个点,M 条边的有向图,对于每个点 v,求 A(v) 表示从点 v 出发,能到达的编号最大的点. 输入格式 第 1 行,2 个整数 N,M. 接下来 M 行,每行 2 个整数 Ui ...

  10. android studio 中获取sha1

    使用keytool 一.配置环境变量 由于要用到keytool工具,而keytool是jdk里的一个工具,首先将jdk/bin所在的目录加到环境变量的PATH中 看我的keytool所在位置 将所在路 ...