对于指向的是数值,比较简单,只允许赋值一次。
但如果其指向的是对象的实例,则实例自己的属性依然可以改变。
看一下非final的图例
看一下final的图例
注意:即使指向的是对象,但有些对象自身是不可改变的,比如String,Integer等。
对于类的final修饰,代表其不可再被继承
方法的final修饰,代表此方法不可被Override
墨衍会员
·
AI 创作全网分发
墨衍智能分发
本文由作者通过墨衍一键同步至各平台
1分发平台
1.3k累计阅读
1.3k平均单平台
已同步平台
优快云
微信公众号
微博
知乎
掘金
百家号
博客园
抖音
小红书
你的文章也可以这样分发
墨衍会员 ¥399起/年,写一次发全网
我也要 →
码龄19年
LaravelFinalphp
关于Laravel Laravel是一个具有表达力,优雅语法的Web应用程序框架。 我们认为,发展必须是一种令人愉快的,富有创造力的经历,才能真正实现。 Laravel减轻了许多Web项目中使用的常见任务,从而减轻了开发过程中的痛苦,例如: 。 。 用于和存储的多个后端。 富有表现力,直观的 。 数据库不可知。 。 。 Laravel易于访问,功能强大,并提供大型,强大的应用程序所需的工具。 学习Laravel Laravel拥有所有现代Web应用程序框架中最广泛,最全面的和视频教程库,因此轻而易举地开始使用该框架。 如果您不想读书,可以使用Laracasts提供帮助。 Laracasts包含1500多个视频教程,涉及各种主题,包括Laravel,现代PHP,单元测试和JavaScript。 深入我们全面的视频库,提高您的技能。 Laravel赞助商 我们要感谢以下赞
一张图看懂final关键字
final的用法: 一:final修饰类 1.特点:没有继承他的子类,言外之意是没有类可以对他方法重写! 但是他可以对自己的父类方法重写! 二:final修饰方法 特点 : 1.final方法又叫最终方法,不能被子类方法重写! 2.final方法不能出现在abstract方法当中,因为abstract方法必须被子类方法重写 三:final修饰局部变量 特点: 1.一次赋值终身不变 不可变:基本数据类型中变量不可改变(自己实践...
FreeModbus V1.6主机模式实战:如何在STM32上实现Modbus RTU主从一体通信
本文详细介绍了如何在STM32平台上利用FreeModbus V1.6开源协议栈实现Modbus RTU主从一体通信。文章深入剖析了V1.6版本主机模式的架构设计,提供了从硬件配置、串口与定时器移植到FreeRTOS操作系统适配的完整实战指南,并分享了数据缓冲区管理、多线程协同及高级调试技巧,为构建稳定可靠的工业通信网关提供了系统化解决方案。
Java中的final修饰符
final修饰符的特点 它可以修饰类,可以修饰方法,可以修饰变量 final修饰的类是一个最终类,不可以被继承。 final修饰的方法不可以被覆盖。 final修饰的变量的是一个常量,只能被赋值一次。这个赋值指的是显示初始化赋值。 举例:final double PI = 3.14;说明:final修饰的常量定义一般都有规范书写,被final修饰的常量名称,所有字母都大
.NET MAUI跨平台串口通讯方案
MAUI跨平台串口通信架构设计采用分层模式,核心是共享业务逻辑层与平台特定实现。通过定义统一的ISerialPortService接口,实现了Windows、Android、iOS和macOS四大平台的串口通信功能。Windows平台使用System.IO.Ports类库,Android通过USB Host模式实现,iOS基于ExternalAccessory框架,macOS则采用IOKit。该设计支持串口连接管理、数据收发等核心功能,并通过事件机制实现异步通信。架构采用条件编译区分各平台实现,确保代码复用
内存|内存的概念、内存的作用、内存的物理结构及内存使用
内存是硬件,是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理。内存是与CPU沟通的桥梁,计算机中所有程序的运行都要依靠内存,内存对计算机的影响非常大。本文简单介绍了内存的概念、作用、物理结构以及使用,内存远不止如此,后续文章会逐步深入讲解。
final字段(重点)
在Java之中final被称为终结器,指完结,用于定义类、方法、常量。 1. 使用final定义的类不能有子类,太监类; 实例1:错误 2. 使用final定义的方法不能被子类所覆盖 实例2:错误 3. 使用final定义的变量就称为常量,常量必须使用final定义,而且声明时必须设置好内容 不能修改; 若在开发中使用了“public static fina
基于Transformers库的BERT模型:一个文本情感分类的实例解析
简介 本文来讲述BERT应用的一个例子,采用预训练好的BERT模型来进行演示。BERT的库来源于Transformers,这是一个由PyTorch编写的库,其集成了多个NLP领域SOTA的模型,比如bert、gpt-2、transformer xl等,并且可以自由选择已经预训练好的模型参数,我们可以基于这些参数进行进一步的训练调试。 Part 1: 利用BERT基于特征的方式进行建模 1、任务与数...
JAVA的对象和封装及static与final的用法(详解)
一:软件出现的目的 1:用计算机的语言描述现实世界 2:用计算机解决现实世界的问题 编程思维: 使用面向对象的思想(描述)面向对象的世界 (符合人类的思维习惯) 二:面向对象设计和开发程序的好处 1:符合人类的思维习惯 2:交流更加流畅 2:可维护性高(方便修改代码) 3: 提高设计和开发效率 三:面向对象的三大特性 1、封装性: 所谓封装,也就是把客观事物...
【电磁场与电磁波课程设计】基于HFSS的双频微带天线仿真及设计
第五代移动通信技术(5G)的商用已经近在眼前,作为移动通信中最为重要的功能组件,面向5G通信应用的手机天线与基站天线的技术研究与设计成为近年来的热点。随着移动通信中“跳频”“扩频”等通信技术发展,为了满足与多个终端的通信要求,实现多系统共用和收发共用等功能,这就要求天线在不同频段下工作。根据国家工信部的最新规定,5G移动通信的中频段被划定在3.3 GHz-3.5 GHz及4.8 GHz-5.0 GH,面向5G移动通信的天线应具有高增益、小型化、宽频段及高隔离度等技术特征,以满足5G通信的高传输速率、波束智能
基于Python的全卷积网络(FCN)实现路径损耗预测
本文提出一种基于全卷积网络(FCN)的无线信道路径损耗预测方法。通过合成数据生成模块构建包含房间布局和发射点坐标的训练数据集,采用双分支FCN架构融合空间特征与坐标信息,引入空间注意力机制增强关键区域提取。实验表明,该方法相比传统模型能更准确地预测复杂环境下的路径损耗,平均绝对误差降低约35%。系统支持端到端训练,可扩展融合多模态数据,为5G网络规划等应用提供高效预测工具。
UML 类图
UML 统一建模语言 是一种图形化的语言,是一种说明性的“语言”,而不是一种方法或程序。 类图主要是用来显示系统中的类、接口以及它们之间的静态结构和关系的一种静态模型。 一般被分为 结构建模图 和 行为建模图 类 一般 由三部分构成:最上层为类名,中间为属性, 最下层为方法。除类名外,其他都可以省略。 类名部分 可以用斜体字类名来表明抽象类,但因为不好辨别,所以更推荐在类名栏中用{abstra...
【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏5(附项目源码,完结)
本期是本项目的最后一篇,主要内容是配置环境、生成不同敌人、结束重开。
final关键字、包名、访问修饰符、多态
final关键字、包名、访问修饰符、多态的详细认识,附上代码
第一百三十九回 介绍三个BLE包
本章回中主要介绍了Flutter中BLE的概念和操作方法,主要介绍了三个BLE包的功能和差异,以方便大家在BLE操作中选择不同的包。
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
内存解析了解及final关键字的使用方法和权限修饰符
内存解析 我们既然学Java,那必须要了解内存解析,我们所写的文件,都存到了什么地方呢,是在虚拟机的内存上,我们内存有三个空间,一个叫栈,一个叫堆,一个叫方法区 栈放的使我们的执行代码,比如我们要执行到哪一行代码的时候,那一行代码就进栈,等这一行代码运行完后,就执行出栈,继续下一行代码的进栈和出栈 当然在我们运行的过程中,我们会加载一写方法和属性,属性呢,就加载在我们的堆里面,当我们new 对象的时候,会在堆里面开辟一个空间,里面放的是属性,而我们的方法都在方法区内,我们来看一下内存解析图 在我们new对
深度学习工具包 DeepLearningToolbox
深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[](https://bitdeli.com/free "Bitdeli Badge")
Java 三大核心修饰符详解
abstract、static、final 是 Java 面向对象体系中最核心的三个修饰符,贯穿类、方法、变量、代码块全场景,也是校招、社招高频面试题。本文基于完整课堂知识点,分模块拆解三者语法规则、底层内存原理、执行顺序、易错坑点,配套可运行示例代码,适合零基础入门与面试突击复习。Java 三大核心修饰符 abstract、static、final 超全详解(底层内存 + 面试考点 + 完整代码)abstract 可修饰类、方法,核心作用是约束子类必须重写功能,强制代码使用多态。
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
Java基础----类、变量修饰符、权限修饰符、构造方法、方法重写与重载、单例模式总结----含思维导图
一、类 1、四种权限修饰符 (1) Public:公共的,用public修饰的类可以被任何包以及任何包下的类进行访问。eclipse自动提示:绿色⚪ (2) Protected:受保护的,只能在同一个包中,同一个类以及不同包的子类进行访问。eclipse自动提示:黄色的菱形 (3) 不写:表示默认(default)的修饰符,只能被同一个包中的类进行访问。eclipse自动提示蓝色的三角形。 (4) Private:私有,只能在本类中进行访问。eclipse自动提示红色的正方形。 (5)
java基础教程:修饰符(7)
这一节的内容是修饰符和使用。分为访问控制符和非访问控制符。你准备好了吗?快上车!!!
static_final_代码块_枚举
static&final&代码块&枚举
图解java多线程设计模式-第二章 Immutable模式
以下内容是我在阅读《图解Java多线程设计模式》一书中的总结和思考 本章配图文字是:想破坏也破坏不了。 定义 实例对象的内部状态不会发生变化,也就是说不提供对外改变属性的方法(除了创建对象时初始化的方法外),那么这个类就是Immutable的,无需任何互斥操作都可以保证线程安全。 Immutable类的几个常见特征 声明为final类:这样是为了生成子类并修改属性值的一种措施...
Java面向对象笔记整理/图解快速回顾/图解快速入门(三)
本篇包含static关键字、代码块、单例模式、final、抽象类、接口和内部类的内容。 帮您快速入门、复习面向对象高级部分。
Java基础快速入门: 面向对象高级之继承、抽象类、代码块与final关键字
本文系统讲解了Java继承的相关知识,包括继承的基本概念、特点、成员访问规则、方法重写、权限修饰符以及构造方法的继承特点。主要内容如下: 继承基础:介绍继承的概念、语法格式,通过黑马信息管理系统案例展示如何通过继承提高代码复用性。 继承特点:Java支持单继承和多层继承,但不支持多继承。子类可访问父类非私有成员,遵循"就近原则"查找变量。 成员访问规则:详细讲解成员变量和成员方法的访问特点,包括this和super关键字的使用,以及方法重写的规则和应用场景。 高级特性:涵盖抽象类、final关键字、代码块等
264
245

被折叠的 条评论
为什么被折叠?



