首页 > 编程语言 >Java static详解

Java static详解

时间:2022-09-24 17:44:44浏览次数:54  
标签:Java 变量 对象 代码 静态 详解 static 方法

static的基本使用

使用之前先普及一下对象和类是啥

对象 定义:用来描述客观事物的一个实体,由一组属性和方法构成 ----------------人关注对象 ----------------人关注事务信息 是模子,确定对象将会拥有的特征(属性)和行为(方法) ----------------类是对象的类型 ----------------具有相同属性和方法的一组对象的集合 属性:对象具有的各种静态特征(“有什么”) 方法:对象具有的各种动态行为(“能做什么”)    

static可以修饰变量和方法,被他修饰的东西会先出现。

先创建一个Student类,将基本能用到的方法都生成一下

 

 

 这是我写的变量

可以发现,被static修饰的不管是被类名调用还是对象名调用都可以出现

 

 

 

 

而没有被static修饰的只能通过new对象来通过对象调用出现

static的基本特点

1.随着类的加载而加载

这个特点根据上面也可以看出来,类出现的时候他就出现了。

2.优先于对象存在

因为他随着类的加载就出现了,而对象是new以后才创建出来的,所以它优先于对象存在。

3.被类的所有对象共享

例如将上面student中的age赋值为18,身高high赋值为188;

 

 可以盲猜一下会输出什么

 

 那又是为什么会这样呢?

因为age是实例变量,每创建一次就是另外的一个,是独立的,你每次改都不会影响之前的。

而static修饰的东西是全局变量、共享(用的是同一个,就那一个)的,所以按最后一次修改的来。 4.可以通过类名调用 这个上面也说过了,建议返回去再看看 除此之外,用static肯定还有注意事项,什么情况下他有问题?

static的注意事项

在静态方法中不可以使用this关键字 这就不得不说到这个this是干嘛的,但是这是static专场,那就不多说了,浅提一下 this关键字总是指向调用该方法的对象。 根据this出现位置的不同,this作为对象的默认引用有两种情况: 1、 构造器中引用,this指的是该构造器正在初始化的对象。 2、 在普通方法中引用,this指的是调用该方法的对象。 this关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或Field this指向的是对象,static出现的时候类加载了,类加载的时候不一定有对象,所以静态方法里面访问非静态访问不到,需要new对象,下面这个注意事项原因本质也是一样的。 静态方法只能访问静态的成员变量和静态的成员方法

静态变量和成员变量的区别(建议背下来)

所属不同 静态变量属于类,所以也称为为类变量 成员变量属于对象,所以也称为实例变量(对象变量) 内存中位置不同 静态变量存储于方法区的静态区 成员变量存储于堆内存 内存出现时间不同 静态变量随着类的加载而加载,随着类的消失而消失(时间长,从头到尾) 成员变量随着对象的创建而存在,随着对象的消失而消失 调用不同 静态变量可以通过类名调用,也可以通过对象调用 成员变量只能通过对象名调用

代码块

定义 在Java中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块 局部代码块 在方法中出现;限定变量生命周期,及早释放,提高内存利用率 构造代码块(作用:只要你调用构造方法去new一个对象,就会先执行一次)在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行 静态代码块 在类中方法外出现,加了static修饰在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。   用一个经典题来看执行顺序的前后

 咱们再来浅猜一下这个执行出来的是什么

首先main方法是Java应用程序的入口方法,所以先从它开始看,但是静态代码块的特点就是最先执行,打印一次,所以先打印北大吴彦祖,然后执行main方法里面的,创建一个新对象就会先执行student类里面的静态代码块,只执行一次,其次是代码块,最后是构造方法,创建了俩个,执行俩次。

 所以呢,这个执行顺序就是静态代码块>构造代码块>构造方法

目前好像就学了这么多,以后有多的了再回来补,嘿嘿

标签:Java,变量,对象,代码,静态,详解,static,方法
From: https://www.cnblogs.com/sl-xuan77/p/16726076.html

相关文章

  • Java——static
     staticstatic静态的用于修饰成员变量和成员方法(没有被static修饰的变量同时也成为:实例变量。)特点随着类的加载而加载。优先于对象存在。被雷得所有对象共享。可......
  • java 实体类设置字段为NULL或者不返回某个字段注解
    注解:@JsonInclude(value=JsonInclude.Include.NON_NULL)返回的字段属性为null就不会展示给前端...可以放在类上,也可以放在字段上!@JsonInclude(value=JsonInclude.I......
  • Java基本语法 关键字、保留字和命名规则
    关键字●关键字(keyword)的定义和特点➢定义:被Java语言赋予了特殊含义,用做专门用途的字符串(单词)➢特点:关键字中所有字母都为小写保留字●Java保留字:现有Java版......
  • JavaScript Window Navigator
    window.navigator对象包含有关访问者浏览器的信息Window.Navigator次对象也可不写前缀navigator不应该用来检测浏览器的版本:navigator数据可被浏览器使用者更改一些......
  • JavaScript Window Location
    用于获取当前页面的地址(URL),并把浏览器重定向到新的页面WindowLocation此对象在编写时不写window前缀如:location.hostname返回web主机的域名location.pathname返回当......
  • vue 使用百度地图JavaScript API GL 组件
    <template><divclass="component"><el-cardclass="cardStyle"><!--ready,地图组件渲染完毕时触发,返回一个百度地图的核心类和地图实例--><baidu-map......
  • JavaScript Window History
    window.history对象包含浏览器的历史WindowHistory该对象在编写时可以不写window前缀访问对象的方法做出了限制:history.back()——与浏览器点击后退按钮相同history......
  • java中static详解
    Java中static(随着类的出现而出现):适用范围:可以修饰变量和方法静态(static)修饰如下:    a.变量:称为类变量、静态变量    b.方法:称为类方法、静态......
  • 四 Java数组
    Java数组数组的定义数组是相同类型数据的有序集合。数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成。其中,每一个数据称作一个数组元素,每个数组元......
  • http协议详解:HTTP报文、请求方法、HTTP状态码
    简介HTTP协议,即超文本传输协议(Hypertexttransferprotocol)。是一种详细规定了浏览器和万维网(WWW=WorldWideWeb)服务器之间互相通信的规则,通过因特网传送万维网文......