类与对象(二)
来源:互联网 发布:linux能运行在arm上吗 编辑:程序博客网 时间:2024/05/21 11:22
静态代码块只会被执行一次,它在Java虚拟机加载类时执行,如果类中包含多个静态块,则按从上往下顺序执行
一:静态变量
什么是静态变量
态变量是指被static修饰的变量
静态变量属于某个类,被所有实例共享
可以通过类名访问或者通过实例名访问
使用静态变量
static类型变量名
class Monkey {//声明静态变量static int count=0;}class Test {public static void main(String[] args) {for(int i=0;i<3;i++){Monkey m=new Monkey();m.count=m.count+1;}//通过类名访问静态变量System.out.println(Monkey.count);}
静态变量与非静态变量的区别
class SaticVar {//实例变量int a=1;//静态变量static int b=1;}
class Test {public static void main(String[] args) {StaticVar s1=new StaticVar();s1.a++;s1.b++;System.out.println("实例变量a="+ s1.a);System.out.println("静态变量b="+StaticVar.b);StaticVar s2=new StaticVar();s2.a++;s2.b++;System.out.println("实例变量a="+ s2.a);System.out.println("静态变量b="+ s2.b);}}
静态变量在内存中只有一个内存空间,在加载类的过程中完成静态变量的内存分配,可以直接通过类名来访问
实例变量每创建一个实例,就会为实例变量分配一次内存,各个对象访问自己的变量。
静态变量可以被类名或实例对象访问,而实例变量只能被实例对象访问
二:静态方法
静态方法:被static修饰的方法称为静态方法或类方法
static[修饰符]返回值类型 方法名(类型 参数1,类型 参数2…){
方法体
}
class Monkey {//静态方法static void play(){System.out.println("会玩金箍棒!");}}
class Test {public static void main(String[] args) {//示例化10个对象for(int i=1;i<=10;i++){Monkey houge=new Monkey();//通过类名调用静态方法Monkey.play();}}}
<p><span style="color:black;">静态方法只能访问静态变量,不能访问实例变量,因为加载静态方法时,实例变量</span></p><p><span style="color:black;">还没有分配内存空间。</span></p>
三:静态代码块
静态代码块不存在于任何方法体中。
class StaticBlock {static{ System.out.println(“我是静态代码块");}}
静态代码块只会被执行一次,它在Java虚拟机加载类时执行,
如果类中包含多个静态块,则按从上往下顺序执行
类中不同部分执行顺序
class Order {int a=1;static int b=1;{System.out.println("实例变量a="+a);System.out.println("代码块执行!");}static {System.out.println("静态变量b="+b);System.out.println("静态代码块执行!");}Order(){ System.out.println("构造方法执行"); }}
<pre class="java" name="code">class Test {public static void main(String[] args) {Order order=new Order();}}
编译后得出结论:
静态变量初始化→静态代码块→初始化静态方法→初始化实例变量→代码块→构造方法
四:常量
变量的生命周期
Java中有3种变量,分别为类变量、实例变量和某个方法中临时定义的局部变量。不同的变量的生命周期不同
class Cycle { int var1 = 1; static int var2 = 2; public int add(){ int var3 = var1 + var2; return var3; }}class Test {public static void main(String[] args) {Cycle c=new Cycle(); c.add();}}
var 1,2,3分别代表
实例变量、静态变量、局部变量
final变量final变量
class FinalVar {final int MAX_VALUE=20;final int MIN_VALUE;MAX_VALUE=30;static final double PI=3.1415926;PI=3.1415;}
final int MAX_VALUE=20;对的
final int MIN_VALUE;错误定义时候必须初始化
MAX_VALUE=30;错误,不能重复赋值
staticfinal double PI=3.1415926 正确
PI=3.1415;错误 静态实例变量不能重复赋值
使用final修饰的变量表示取值不会改变的常量
final修饰的实例变量的值不能改变,这就意味着在实例化具有final变量的多个对象时,每个对象都会有相同的final变量值。这种实例变量反而使用静态变量会更符合设计规则,因此经常将final变量同时定义成为静态的(static final)。
Final变量的特征
final修饰符可以修饰静态变量、实例变量和局部变量,分别表示静态常量、实例常量和局部常量
final类型的变量必须显式地初始化,否则将导致编译错误
final变量只能被赋值一次
在定义final常量时,一般以大写字母命名,且多个单词之间以“_”符号隔开
五:包
一个文件夹里面不能放入同样名字的资源文件,java也是如此,去了更好的更合理的去分配资源,于是包出现了。
Java的常用包
JDK提供的Java常用包
java.lang包:系统类(System)、整数类(Integer)和字符串类(String)等
java.io包:文件输入流类(FileInputStream类)、文件输出流类(FileOutputStream)等
njava.util包:提供日期类(Date)、集合类(Collection)等实用类
如果一个类访问了来自另一个包(除java.lang)中的类,则首先必须通过import语句引入该类
import com.xxx.edu.server.Teacher;
在一个Java源文件中,只允许有一个package语句,而且必须位于源文件的第一句
0 0
- 类与对象(二)
- 类与对象二
- 实验四 类与对象(二)
- Scala类与对象(二)
- 类与对象基础知识(二)
- Java类与对象(二)
- 类与对象二(基础)
- javascript 类与对象(二)
- Java学习笔记(二) 类与对象的介绍
- C++入门笔记(二)类与对象
- 黑马程序员-OC笔记(二)类、对象与方法
- 菜鸟进军c++(二)--类与对象
- Java基础之(二) 类与对象
- PHP进阶(二)——类与对象
- c++实战开发详解(二)类与对象
- Java基础(二)类与对象相关
- Java中类与对象(二):构造方法
- java基础知识--类与对象、继承(二)
- KEPServerEx OPC 读取西门子 PLC S7200 SMART的数据
- 2015年北京大学软件工程学科优秀大学生夏令营上机考试---A:整数序列的元素最大跨度值
- [算法专题] 深度优先搜索&回溯剪枝
- Mysql 数据库 表 字段字符集修改
- 微信本地调试、ngrok、tunnel
- 类与对象(二)
- HDU 4741
- 南邮 OJ 2076 天神小学
- 剑指offer刷题之java实现的二维数组中的查找
- 3087POJ
- [算法专题] 深度优先搜索&回溯剪枝
- 寻找一个二维数组鞍点的算法实现
- 关于StringBuffer.setLength和trimToSize
- [算法专题] 深度优先搜索&回溯剪枝