最新浅谈java中static关键字修饰的几种用法,java项目面试实操

结语

小编也是很有感触,如果一直都是在中小公司,没有接触过大型的互联网架构设计的话,只靠自己看书去提升可能一辈子都很难达到高级架构师的技术和认知高度。向厉害的人去学习是最有效减少时间摸索、精力浪费的方式。

我们选择的这个行业就一直要持续的学习,又很吃青春饭。

虽然大家可能经常见到说程序员年薪几十万,但这样的人毕竟不是大部份,要么是有名校光环,要么是在阿里华为这样的大企业。年龄一大,更有可能被裁。

送给每一位想学习Java小伙伴,用来提升自己。

在这里插入图片描述

本文到这里就结束了,喜欢的朋友可以帮忙点赞和评论一下,感谢支持!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

1,修饰成员变量

类,里面有属性和方法

属性里面又分局部变量,实例变量和类变量

实例变量,在创建对象的时候分配空间初始化

类变量不再属于某一个对象,它属于全类公有;

实例变量和类变量区分主要看加不加static,统称变量

属性和方法合称为成员

所以这里我再次区分一下,

(1),static修饰变量时的用法:

static修饰的变量叫做类变量

//类变量不再属于某一个对象,它属于全类公有;

static int b = 20;

类变量是在类加载的时候初始化的;

什么是类加载:

所有数据都是存在虚拟机内存里面

jvm启动后,在程序之执行的过程中,肯定会用到很多的类

.class文件的读取过程只有一次,在第一次用到这个类的时候;这就是类的加载

类加载:当虚拟机第一次使用一个类时,需要通过Classpath找到这个类对应的.class文件

把这个文件中包含的类的信息读jvm并保存起来。

一般的说,一个类只会加载一次;

所有的类变量是在类加载的时候分配空间,并且初始化!

类加载的时机:

1,创建类的对象

2,访问类的静态成员

3,加载子类必须先加载父类

4,如果仅仅是声明类的引用,不会类加载;

(2)修饰成员方法

static的另一个作用,就是修饰成员方法。相比于修饰成员属性,修饰成员方法对于数据的存储上面并没有多大的变化,因为我们从上面可以看出,方法本来就是存放在类的定义当中的。static修饰成员方法最大的作用,就是可以使用"类名.方法名"的方式操作方法,避免了先要new出对象的繁琐和资源消耗,我们可能会经常在帮助类中看到它的使用:

**static修饰的静态方法:允许直接用类名调用

在静态方法中,只能访问类的静态成员**

  • 静态方法中不能直接访问本类非静态成员(方法和属性)

  • 非静态方法中可以去访问静态成员

  • 静态方法中不能使用this和super关键字

  • 静态方法可以被覆盖,但是只能被静态方法覆盖, 而且 没有多态

(3),初始代码块

静态初始代码块中的代码,在类加载的时候执行一次;

其中,

局部变量

构造方法

等都不能静态

(4)

父类的静态方法只能被子类的静态方法覆盖

为便于理解下面程序加了详细注释说明,每一种使用都有详细标注,相信把下面这个程序看懂就能理解static的具体用法了!

package test;

public class TestStatic{

/**

static 静态的

修饰的 1,属性

2,方法

3,初始代码块

*/

public static void main(String[] args) {

MyClass m1 = new MyClass();

MyClass m2 = new MyClass();

m1.a++;

m1.b++;

System.out.println(m1.a);//11

System.out.println(m1.b);//21

System.out.println(m2.a);//10

System.out.println(m2.b);//21

//类变量允许直接用类名访问,与对象无关

System.out.println(MyClass.b);//21

//静态方法:允许直接用类名调用

MyClass.print();

//如果不是静态方法,需要创建对象然后通过对象去调用

MyClass mc = new MyClass();

mc.prints();

System.out.println(“****************************”);

//静态初始代码块中的代码,只在类加载的时候执行一次;

/* 所以就算两次创建,也只会输出

hahahha

MyClass2()

MyClass2() */

new MyClass2();

new MyClass2();

//多态

Super s = new Sub();

//对一个引用,调用其静态方法,仅相当于对引用的引用类型调用静态方法

//例, s.method();等价于Super.method();

独家面经总结,超级精彩

本人面试腾讯,阿里,百度等企业总结下来的面试经历,都是真实的,分享给大家!

image

image

image

image

Java面试准备

准确的说这里又分为两部分:

  1. Java刷题
  2. 算法刷题

Java刷题:此份文档详细记录了千道面试题与详解;

image

image

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

[外链图片转存中…(img-Vi97OJGn-1715676138345)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值