java第五章:面向对象(oop)之 static关键字

java程序在执行过程中,类,对象以及它们成员加载、初始化的顺序如下: 1、首先加载要创建对象的类及其直接与间接父类。 2、在类被加载的同时会将静态成员进行加载,主要包括静态成员变量的初始化,静态语句块的执行,在加载时按代码的先后顺序进行。 3、需要的类加载完成后,开始创建对象,首先会加载非静态的成员,主要包括非静态成员变量的初始化,非静态语句块的执行,在加载时按代码的先后顺序进行。 4、最后执行构造器,构造器执行完毕,对象生成。上面四段话意思就是静态变量(全局变量)创建时间要早于new对象(成员变量)的时间。所以静态的方法,不能访问非静态的属性和方法;反之,非静态的方法可以访问静态的属性和方法;

static 关键字:可以修饰方法(静态方法)或者成员变量(全局变量),不能用来修饰局部变量(只能用final修饰)全局变量和成员变量的区别:1.在内存中的保存位置不同:成员变量保存在堆中,全局变量保存在方法区;2.保存份数不同:成员变量,每new出来一份都要分配空间,保存多份;全局变量只保存一份;3.创建时间不同:成员变量,new的时候,才创建;全局变量,类加载时就创建;4.访问方式不用: 成员变量,用对象名.属性,对象名.方法名();,可以使用this关键字;全局变量,推荐 用类名.属性,类名.方法名();当然也可以用对象名.属性,对象名.方法名(),可以使用this关键字;

(普通)代码块:单独在{}中写的代码;new的时候,才会被执行,不new不执行,new几次执行几次; 执行顺序在构造器之前

(static)代码块:static{} 类加载的时候就会被执行,不new也执行。只会执行1次。
 执行顺序:静态代码块>普通代码块>构造器>普通方法或静态方法;
静态的方法或者代码块,只能访问静态的成员变量,不能访问非静态的属性和方法;反之,非静态的方法或者代码块可以访问的静态或非静态属性和方法;
 
时间: 2024-10-13 12:34:18

java第五章:面向对象(oop)之 static关键字的相关文章

java基础(五章)

java基础(五章) 一.        调试 步骤1:设置断点(不能在空白处设置断点) 步骤2:启动调试 步骤3:调试代码(F6单步跳过)笔记本Fn+F6(F5) 步骤4:结束调试 掌握调试的好处? l  很清晰的看到,代码执行的顺序 l  快速定位到异常代码出现的位置,并帮助修改或改进代码 二.     while循环 1.循环的优点? 减少重复代码的编写:程序会更加的简洁 2.语法 while(表达式){ // 1.表达式是[循环条件],结果必须是boolean类型 //2.{}中的代码,

“全栈2019”Java第五章:IntelliJ IDEA代码自动提示

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第五章:IntelliJ IDEA代码自动提示 下一章 "全栈2019"Java第六章:注释 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习小组&quo

java第五章:面向对象(oop)

方法重写/覆写(Override) 特点: 1一般发生在父子类间,子类重写父类中的方法,方法的返回值类型,方法名,形参列表都要与父类一样, 子类权限修饰符>=父类的权限修饰符 2.一旦重写了父类的方法,子类创建对象后,调用子类重写后的方法: [email protected]:重写的注解,标注当前方法为重写父类的方法,必须满足重写规则: 方法重载和重写的区别: 1.重载发生在同一个类中,主要提供同名不同参的方法:重写发生在父子类之间,主要为了结合多态使用,提高程序的扩展性和可维护性 2.重载,方

Thinking In Java第五章学习笔记

第五章:初始化与清理 初始化和清理是涉及程序安全的两个问题.Java构造器用于新建对象时的初始化,而垃圾回收器则进行清理. 构造器的名称必须与类名一样,虽然构造器是一种特殊的方法,但是每个方法首字母小写的编码风格并不适合用于构造器. 构造器是没有返回值的,但是new表达式却返回了对新建对象的引用. 方法重载是构造器所必须的.每个重载方法都必须独一无二的参数列表.甚至参数顺序的不同,也足以区分两个方法.不过一般不建议这么做,因为这会使代码难以维护.当传入的数据类型小于方法中声明的形式参数类型,实际

重新认识java(五) ---- 面向对象之多态(向上转型与向下转型)

多态,大概每个人都知道.但是,又有几个人真的理解什么是多态.多态有哪些细节呢?如果你看到这篇文章的名字,脑海中对多态没有一个清晰的概念,不妨点进来看看,也许会有收获. 什么是多态 简单的理解多态 多态,简而言之就是同一个行为具有多个不同表现形式或形态的能力.比如说,有一杯水,我不知道它是温的.冰的还是烫的,但是我一摸我就知道了.我摸水杯这个动作,对于不同温度的水,就会得到不同的结果.这就是多态. 那么,java中是怎么体现多态呢?我们来直接看代码: public class Water { pu

第五章.面向对象(上)

类:可被认为是一种自定义的数据类型,可使用类来定义变量,所有使用类定义的变量都是引用变量,所有的类是引用类型. Java程序使用类的构造器来创建该类的对象. Java支持面向对象的三大特征:封装.继承.多态: java提供了private.protected.public访问控制修饰符来实现封装,提供extends关键字让子类继承父类,有了继承就有了多态. 构造器用于对类的实例进行初始化操作,构造器支持重载,若多个重载构造器里包含了相同的初始化代码,可以把这些初始化代码放置在普通初始化块里完成,

第五章 面向对象

1.简述面向对象和面向过程的区别和联系? 两者都是软件开发思想,先有面向过程,后有面向对象.在大型项目中,针对面向过程的不足推出了面向对象开发思想.比喻面向过程是蛋炒饭,面向对象是盖浇饭.盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性.饭不满意就换饭,菜不满意换菜.用软件工程的专业术语就是“可维护性”比较好,“饭” 和“菜”的耦合度比较低.区别编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类.属性及其方法,然后通过实例化类.执行方法来完成功能.封装性:都

Java基础-学习笔记(九)——static关键字

1.静态成员变量 程序中的类,只是在描述其对象的属性和成员,并没有产生实际对象,只有通过new关键字才能产生出对象,这时系统才会分配内存空间给对象,其方法才能供外部调用. 每生成一个对象,都会在内存中给它分配一个单独的空间,有时候我们希望无论产生多少对象,某些某些特定的数据在内存空间里只有一份,我们只需要在这种数据面前加上statice关键字即可.静态变量在某种程度下与其他语言中的全局变量比较类似.并且,我们可以不需要产生实例对象,直接使用类名来调用,如下代码所示 1 class Chinese

Java入门到精通——基础篇之static关键字

一.概述 static 关键字是声明静态变量,静态方法用的.static的含义是属于类且不属于类对象的变量和函数. 二.static的产生. 在创建对象的时候除非用new创建那个类的对象,否则实际上并没有获得任何对象只有当执行new来创建对象时数据存储空间才被分配,其方法才供外界调用.但是有两种情况上述方法时无法解决的 第一种只想为某特定域分配单一存储空间而不去考虑究竟要创建多少对象,甚至不需要创建任何对象. 第二种希望某个方法(变量)不予包含它的类的人很对象关联在一起.也就是没有创建对象,也能