private

private在英文中是私有的意思,在Java中它用来修饰成员变量,是成员变量私有化,下面先举个列子。

class Film{private String name;private int price;public void show(){System.out.println(name+"------"+price);}
}
public class CsdnPrivate {public static void main(String[] args) {Film s = new Film();s.name="动物世界";s.price=35;s.show();}
}

上面代码运行出来的结果是:

由运行结果看到private访问受控,所以private只能在本类中进行运用操作。

下面是正确操作的代码:

class Film{private String name;private int price;public Film(){}public String getName(){return name;}public void setName(String name){this.name=name;}public int getPrice(){return price;}public void setPrice(int price){this.price=price;}
}
public class CsdnPrivate {public static void main(String[] args) {Film s = new Film();s.setName("动物世界");s.setPrice(35);System.out.println(s.getName()+"-----"+s.getPrice());}
}


由上述代码可以看到使用了setXXX()/getXXX()来操作private修饰的成员变量,setXXX()方法是是带参的,将变量传进来,getXXX()将赋值了的变量传出来。因此private只能在本类中进行运用。

class Film{private String name;private int price;static String country;public Film(String name,int price){this.name=name;this.price=price;}public Film(String name,int price,String country){this.name=name;this.price=price;this.country=country;}public void show(){System.out.println(name+"----"+price+"----"+country);}
}
public class CsdnPrivate {public static void main(String[] args) {Film s1 = new Film("动物世界",35,"中国");s1.show();Film s2 = new Film("心理罪",30);s2.show();Film s3 = new Film("南极之恋",25);s3.show();}
}

当用private修饰成员变量时,也可以使用带参的构造方法。上面两种方法都可以使用。

static

static在英文中的意思是静止的,不变的。static修饰的变量成为静态变量。
下面是static修饰的变量的例子:

class Film{private String name;private int price;static String actor;public Film(String name,int price,String actor){this.name=name;this.price=price;this.actor=actor;}public void show(){System.out.println(name+"----"+price+"----"+actor);}
}
public class CsdnPrivate {public static void main(String[] args) {Film s1 = new Film("动物世界",35,"李易峰");s1.show();}
}


从上面的运行结果来看,static的作用相当于c语言中的全局变量,当给它赋值后,后面再出现它修饰的变量值一律为第一次赋的初值。

class Film{private String name;private int price;static String country;public Film(String name,int price){this.name=name;this.price=price;}public Film(String name,int price,String country){this.name=name;this.price=price;this.country=country;}public void show(){System.out.println(name+"----"+price+"----"+country);}
}
public class CsdnPrivate {public static void main(String[] args) {Film s1 = new Film("动物世界",35,"中国");s1.show();Film s2 = new Film("心理罪",30);s2.show();Film s3 = new Film("南极之恋",25);s3.show();System.out.println("-----------------------");Film s4 = new Film("暮光之城",28,"美国");s4.show();Film  s5 = new Film("超人总动员",38);s5.show();}
}


从上面结果看出当static修饰的成员变量变化时,后面出现的变量都发生了改变。

  在所有程序编译运行的过程中,变量都是由系统自动分配内存进行存储的。 在这个存储过程中,static所修饰的变量(也就是静态变量),它所被分配的空间是一直伴随程序运行的,空间将会保持到程序的结束关闭,才会被释放。换句话说:程序运行时,系统分配给静态变量的内存是一直存在的,除非程序被终止。根据这一点来看,假若在定义一个类的过程中,定义了一个static修饰的变量,那么这个类在被加载的同时,被static修饰的变量就存在于内存当中了,这样一来就独立于该类的所有对象,被该类所有对象共享,将对象相关的变成了类相关,所以静态变量也可以称之为类变量。假设一个类中某个属性被static所修饰,那么就可以通过”类名.属性名“来访问。

下面是static修饰的变量,通过类名.属性名来访问的例子。

class Arrary{static int a=10;static int b=20;int c;public static void add(){c=a+b;System.out.println(c);}}
public class StaticDemo {public static void main(String[] args) {Arrary.add();}
}


由上面的运行错误可知static修饰的方法里引用的变量也必须是静态的。
所以 int c要改为static int c。

关键字private、static总结相关推荐

  1. JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)

    运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...

  2. Java提高篇 —— Java关键字之static的四种用法

    一.前言 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一 ...

  3. [转载] Java static关键字与static{}语句块

    参考链接: Java中的静态块static block 目录直通车 一. 类的加载特性与时机 1. 类加载的特性 2. 类加载的时机 二. static的三个常用 1. 修饰成员变量 2. 修饰成员方 ...

  4. Java关键字(三)——static

    我们说Java是一种面向对象编程的语言,而对象是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,对同类对象抽象出其共性,便是Java中的类,我们可以用类描述世间万物,也可以说万物皆对象.但是 ...

  5. Java static关键字与static{}语句块

    目录直通车 一. 类的加载特性与时机 1. 类加载的特性 2. 类加载的时机 二. static的三个常用 1. 修饰成员变量 2. 修饰成员方法 3. 静态块(static{}) 一. 类的加载特性 ...

  6. 常见关键字总结:static,final,this,super

    https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/java/Basis/final.static.this.super.md final, ...

  7. private static final long serialVersionUID = 1L;详解

    public class User implements Serializable {/*** serialVersionUID*/private static final long serialVe ...

  8. final关键字与static对比

    final关键字与static对比 static关键字修饰变量时,会使该变量在类加载时就会被初始化,不会因为对象的创建再次被加载,当变量被static 修饰时就代表该变量只会被初始化一次 例如图中所示 ...

  9. php多线程 static变量,private static和public static的比较:多线程间

    private static和public static的比较,区别在于修改的范围不同,但作用域都是全局的即整个进程内共享,与具体线程无关. 以下是测试代码: 声明静态内部变量的抽象类 package ...

  10. [C++] - private static成员函数

    我们知道static成员函数不需要类创建具体的实例就可以调用,它有点类似于namespace将类和方法联系在一起.那么什么情况下会考虑将一个private的成员函数设置成static呢? 主要考虑两点 ...

最新文章

  1. asp网上书店系统_Asp.net Core启动流程讲解(一)
  2. STL_Hash_map
  3. linux打包文件命令行,Linux 命令行 | 打包和解包命令
  4. 2019一起走,健康幸运全都有
  5. JDK中DNS缓存的分析
  6. python字典有什么用_Python中的字典介绍
  7. pytorch FC_classification
  8. python tracer函数_Python流程控制常用工具和函数定义
  9. ASP.NET以编程的方式动态的添加Css引用
  10. 应用机器学习(五):支持向量机
  11. Spring MVC的流程
  12. MQTT keepalive和reconnect
  13. 联想成全球PC业至尊
  14. faststone capture使用长截图(滚动截图)功能教程
  15. 【Alpha版本】冲刺阶段 - Day7 - 靠泊
  16. EndeavourOS移动硬盘安装
  17. Unity ILRuntime的基本实现流程(0基础)
  18. 腾讯通 admin.php,配置RTX腾讯通升级使用SQL Server数据库
  19. 业财一体化管理,简化财务复核流程,提高工作效率
  20. VScode创建第一个C++项目

热门文章

  1. bluefish4框架平台
  2. 韩国本土IP原生IP站群天堂W奥丁游戏香港站群CN2路线大带宽
  3. 基于【NPU+AI ISP】多媒体SoC方案开发硬件边缘计算_AI 摄像机产品
  4. 实时报价查询系统C++编程实现(阿里面试题改编)
  5. Level Shift
  6. 哲学宗师 -- 柏拉图
  7. ThreadLocal使用场景
  8. GEEer成长日记六:Sentinel-2计算逐日NDVI时间序列
  9. sqlalchemy 常用数据类型有哪些?
  10. 局域网访问虚拟机里的应用,以可道云 kod为例