2024年最新静态关键字及其在Java中的用法(Peter),Java开发了解这些自然无惧面试

最后

小编在这里分享些我自己平时的学习资料,由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

开源分享:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】

程序员代码面试指南 IT名企算法与数据结构题目最优解

这是” 本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一-痛点, 本书选取将近200道真实出现过的经典代码面试题,帮助广“大程序员的面试准备做到万无一失。 “刷”完本书后,你就是“题王”!

image.png

《TCP-IP协议组(第4版)》

本书是介绍TCP/IP协议族的经典图书的最新版本。本书自第1版出版以来,就广受读者欢迎。

本书最新版进行」护元,以体境计算机网络技不的最新发展,全书古有七大部分共30草和7个附录:第一部分介绍一些基本概念和基础底层技术:第二部分介绍网络层协议:第三部分介绍运输层协议;第四部分介绍应用层协议:第五部分介绍下一代协议,即IPv6协议:第六部分介绍网络安全问题:第七部分给出了7个附录。

image.png

Java开发手册(嵩山版)

这个不用多说了,阿里的开发手册,每次更新我都会看,这是8月初最新更新的**(嵩山版)**

image.png

MySQL 8从入门到精通

本书主要内容包括MySQL的安装与配置、数据库的创建、数据表的创建、数据类型和运算符、MySQL 函数、查询数据、数据表的操作(插入、更新与删除数据)、索引、存储过程和函数、视图、触发器、用户管理、数据备份与还原、MySQL 日志、性能优化、MySQL Repl ication、MySQL Workbench、 MySQL Utilities、 MySQL Proxy、PHP操作MySQL数据库和PDO数据库抽象类库等。最后通过3个综合案例的数据库设计,进步讲述 MySQL在实际工作中的应用。

image.png

Spring5高级编程(第5版)

本书涵盖Spring 5的所有内容,如果想要充分利用这一领先的企业级 Java应用程序开发框架的强大功能,本书是最全面的Spring参考和实用指南。

本书第5版涵盖核心的Spring及其与其他领先的Java技术(比如Hibemate JPA 2.Tls、Thymeleaf和WebSocket)的集成。本书的重点是介绍如何使用Java配置类、lambda 表达式、Spring Boot以及反应式编程。同时,将与企业级应用程序开发人员分享一些见解和实际经验,包括远程处理、事务、Web 和表示层,等等。

image.png

JAVA核心知识点+1000道 互联网Java工程师面试题

image.png

image.png

企业IT架构转型之道 阿里巴巴中台战略思想与架构实战

本书讲述了阿里巴巴的技术发展史,同时也是-部互联网技 术架构的实践与发展史。

image.png

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

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

该代码段将产生以下结果:

Number of student in the beginning: 0
Number of students (Using class name): 2
Number of students (Using first object): 2
Number of students (Using second object): 2

结果的第一行是0因为我们static在创建任何对象之前先打印出变量的值。之所以能够做到这一点,是因为就像我之前提到的那样,static即使我们没有任何对象,变量也会在内存中创建。在接下来的几行中,我们将创建两个对象,这些对象会将static变量的值增加到2。然后,我们分别static使用类名和两个对象引用再次打印出变量。Static变量可以通过类名或对象引用进行访问,但是在每种情况下我们都得到相同的结果,因为类变量只有一个实例,并且它们都指向该实例。为每个对象分别创建对象变量,但是static 变量仅创建一次,即使我们没有任何对象,它们也存在。

静态方法

现在让我们看一下如何static在方法中使用关键字。通常,当您需要调用方法时,只需创建一个对象并使用对象引用来调用该方法。但是,对于变量,可以创建独立于对象的方法。我们不需要创建对象来调用static方法。我们可以简单地使用类名来做到这一点。让我们看下面的代码:

package com.seckintozlu.article;

public class Student {

private String name; // Object variable
private int age; // Object variable
private String studentId; // Object variable
private static int numberOfStudents = 0; // Class variable

public Student(String name, int age, String studentId) {

this.name= name;
this.age= age;
this.studentId= studentId;

// Increase the number of students whenever an object is created
numberOfStudents ++;
}

public static int getNumberOfStudents () {
return numberOfStudents ;
}
}

该代码与上一Student类的区别只是一个新static方法。在第一个示例中,我们使用名称来引用public类变量numberOfStudents,但是这次我们制作了类变量private,并使用一种public static方法指向该变量。为了测试此代码,我们将使用以下代码:

package com.seckintozlu.article;

public class Program {

public static void main(String args[]) {

System.out.println("Number of students in the beginning: " + Student.getNumberOfStudents());

// Create two student object
Student student1 = new Student(“Obi-Wan Kenobi”, 19, “2010001”);
Student student2 = new Student(“Anakin Skywalker”, 16, “2010002”);

int numberOfStudents = Student.getNumberOfStudents();
System.out.println("Number of students: " + numberOfStudents);
}
}

此代码将生成以下输出:

Number of students in the beginning: 0
Number of students: 2

由于getNumberOfStudentsmethod是static,因此可以在不从Student类创建对象的情况下调用它。如果您已经有一个从Student类创建的对象,则可以使用对象引用来调用getNumberOfStudents(或任何static方法),但是建议使用类名以提高可读性。同样,在访问static变量时,我们也可以使用对象引用,但这会使您的代码可读性降低。

关于static方法要了解的最重要的事情是:我们无法引用方法中的非static元素static。如果numberOfStudents示例中的字段不是static变量,则在编译时会收到错误消息。同样,我们不能staticstatic方法内调用非方法。让我们举个例子:

package com.seckintozlu.article;

public class Student{

private String name; // Object variable
private int age; // Object variable
private String studentId; // Object variable
private static int numberOfStudents = 0; // Class variable

public Student(String name, int age, String studentId) {

this.name = name;
this.age = age;
this.studentId = studentId;

// Increase the number of students whenever an object is created
numberOfStudents++;
}

public int findNumberOfStudents() {
return numberOfStudents;
}

public static int getNumberOfStudents() {
return findNumberOfStudents();
}
}

我们增加了一个新的非static命名方法findNumberOfStudentsStudent类。它仅返回numberOfStudents变量的值。请在这里注意:我们不能staticstatic方法中引用非元素。但是这里我们做相反的事情,我们正在以完全有效static的非static方法访问字段。但是,static getNumberOfStudents方法正在尝试调用findNumberOfStudentsnot static。根据static我们刚刚提到的访问规则,这是无效的。当我们尝试编译此类时,将得到如下错误:“ Cannot make a static reference to the non-static method findNumberOfStudents() from the type Student”如果我们尝试引用一个非static字段(例如“ name”),则会收到相同的错误消息。

让我尝试解释该规则背后的原因。我们知道static变量和方法与对象无关。这意味着即使没有创建对象,我们也可以调用static方法并为static变量赋值。但是,非static元素只能在创建对象时存在。基于此,如果我们尝试staticstatic方法内部引用一个非变量,那么我们如何知道我们正在引用哪个对象的字段?那时,可能根本没有任何对象。true当我们在static方法内部调用非方法时,也会使用此语句static。因此,我们只能staticstatic方法内部引用元素。但是,我们可以引用staticstatic方法中的元素,因为static 元素已经在任何对象之前创建。

当我们在尝试调用一个非static方法时收到错误消息时static,使另一个方法也static可以工作,但这可能不是一个好主意。如果最终创建了很多static 方法,请停下来想一想是否需要使用方法static。我们将在本文结尾处对此进行说明。现在,让我们看看static关键字的另一种用法。

静态代码块

Static代码时钟用于为static变量分配初始值。这些也称为“ static初始化器”。变量加载到存储器中Static后立即执行块static。JVM保证static在为该类创建的对象之前执行代码块。

package com.seckintozlu.article;
import java.util.Random;

public class StaticInitializer {

private static int array[];
private static int length = 10;

static {

array = new int[length];
Random rnd = new Random();

for(int i=0; i < length; i++)
array[i] = rnd.nextInt(100);
}
}

查看上面的代码,我们正在创建带有随机分配值的整数数组。使用static代码块,一旦创建了“ array”变量,数组就会被随机整数填充。还有一件事,我们也无法访问代码块static内的非元素static。由于static块很少被使用,我不想进一步详细介绍。

静态导入

我们已经知道我们static使用类名引用方法。例如,在Java中,包中的Mathjava.lang充满了static方法,我们需要使用调用这些方法Math.nameOfMethod()。使用static导入,我们只能通过使用方法名称来调用它们。让我们看看它的用法:

package com.seckintozlu.article;

import static java.lang.Math.*;

public class Program {

public static void main(String args[]) {

分享

1、算法大厂——字节跳动面试题

2、2000页互联网Java面试题大全

3、高阶必备,算法学习

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

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

6386)]

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值