关键字private、static总结
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总结相关推荐
- JAVA SE、EE、ME,JRE、JDK,基本数据类型,访问修饰符、函数、封装的概念、UML类图、构造方法、this关键字、static关键字、方法重载、方法重写、包(packahe)
运行第一个JAVA程序: 这里使用的开发环境是eclipse,新建一个java工程,然后可以看到src这个是存放java代码的地方,然后在src文件右击新建一个class(类),然后可以看到下图,同样 ...
- Java提高篇 —— Java关键字之static的四种用法
一.前言 在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们先来了解一 ...
- [转载] Java static关键字与static{}语句块
参考链接: Java中的静态块static block 目录直通车 一. 类的加载特性与时机 1. 类加载的特性 2. 类加载的时机 二. static的三个常用 1. 修饰成员变量 2. 修饰成员方 ...
- Java关键字(三)——static
我们说Java是一种面向对象编程的语言,而对象是把数据及对数据的操作方法放在一起,作为一个相互依存的整体,对同类对象抽象出其共性,便是Java中的类,我们可以用类描述世间万物,也可以说万物皆对象.但是 ...
- Java static关键字与static{}语句块
目录直通车 一. 类的加载特性与时机 1. 类加载的特性 2. 类加载的时机 二. static的三个常用 1. 修饰成员变量 2. 修饰成员方法 3. 静态块(static{}) 一. 类的加载特性 ...
- 常见关键字总结:static,final,this,super
https://gitee.com/SnailClimb/JavaGuide/blob/master/docs/java/Basis/final.static.this.super.md final, ...
- private static final long serialVersionUID = 1L;详解
public class User implements Serializable {/*** serialVersionUID*/private static final long serialVe ...
- final关键字与static对比
final关键字与static对比 static关键字修饰变量时,会使该变量在类加载时就会被初始化,不会因为对象的创建再次被加载,当变量被static 修饰时就代表该变量只会被初始化一次 例如图中所示 ...
- php多线程 static变量,private static和public static的比较:多线程间
private static和public static的比较,区别在于修改的范围不同,但作用域都是全局的即整个进程内共享,与具体线程无关. 以下是测试代码: 声明静态内部变量的抽象类 package ...
- [C++] - private static成员函数
我们知道static成员函数不需要类创建具体的实例就可以调用,它有点类似于namespace将类和方法联系在一起.那么什么情况下会考虑将一个private的成员函数设置成static呢? 主要考虑两点 ...
最新文章
- asp网上书店系统_Asp.net Core启动流程讲解(一)
- STL_Hash_map
- linux打包文件命令行,Linux 命令行 | 打包和解包命令
- 2019一起走,健康幸运全都有
- JDK中DNS缓存的分析
- python字典有什么用_Python中的字典介绍
- pytorch FC_classification
- python tracer函数_Python流程控制常用工具和函数定义
- ASP.NET以编程的方式动态的添加Css引用
- 应用机器学习(五):支持向量机
- Spring MVC的流程
- MQTT keepalive和reconnect
- 联想成全球PC业至尊
- faststone capture使用长截图(滚动截图)功能教程
- 【Alpha版本】冲刺阶段 - Day7 - 靠泊
- EndeavourOS移动硬盘安装
- Unity ILRuntime的基本实现流程(0基础)
- 腾讯通 admin.php,配置RTX腾讯通升级使用SQL Server数据库
- 业财一体化管理,简化财务复核流程,提高工作效率
- VScode创建第一个C++项目