当前位置: 首页 > 编程日记 > 正文

java this final_Java this、final等关键字总结

this

关键字this引用对象自身。它也可以在构造方法内部用于调用同一个类的其他构造方法。

隐藏的静态变量可以通过”类.静态变量”来引用,而隐藏的实例变量就需要使用”this.实例变量”来引用。

调用一个重载的构造方法this引用是必须的。

this是个隐式参数,代表当前对象

publie class Student{

private String name;

public void setName(String name){

this.name=name; //this.name为当前对象的成员变量

} }

如果某个构造方法的第一个语句具有形式this( ••• ),那么这个构造方法将调用同一类中的其他构造方法。

注意:

在构造器中this(…)必须放在该构造器的第一行。

this不能出现在静态方法里面

super

super关键字代指父类,可以用于调用父类的普通方法和构造方法。

super()表示调用父类的构造器

super.方法来引用父类的方法

super()也和this()一样必须放在方法的第一句

super()和this()不能同时出现

super可以屏蔽子类属性和父类属性重名时带来的属性遮盖,super. 表示调用父类的方法或属性

在子类的构造器中如果没有指定调用父类的哪一个构造器,那么就会调用父类的无参构造器,即super()

注意:

父类的构造器不能被子类继承

方法和属性可以被继承,权限不限制能否继承过来,限制的是能否直接访问

先构造父类,后构造子类

instanceof

用法:引用 instanceof 类名

判断这个引用所指向的对象是否属于这个类。

用在强制转换之前,避免类型转换异常。

if(a instanceof Dog){

Dog d=(Dog)a;

}

implements

一个类实现一个接口必须实现接口中所有的方法,否则其为抽象类,并且在实现类中的方法要加上public(不能省略)。

类中的默认修饰符:default。

接口中的默认修饰符:public。

一个类除了继承另一个类外(只能继承一个类),还可以实现多个接口(接口之间用逗号分隔)。

static

把对象相关的变成类相关的,它可以修饰属性、方法、代码块和内部类.

static修饰属性(类变量):

那么这个属性就可以用” 类名.属性名 “来访问,也就是使这个属性成为本类的类变量,为本类对象所共享。

类加载的过程

类本身也是保存在文件中(字节码文件保存着类的信息)的,Java会通过I/O流把类的文件读入JVM(java虚拟机),这个过程称为类的 加载。

JVM会通过类路径(CLASSPATH)来找字节码文件。需要的时候才会进行类加载,生成对象时是先加载后构造

类变量,会在加载时自动初始化,初始化规则和实例变量相同。

注意:

类中的实例变量是在创建对象时被初始化的。

static修饰的属性,是在类加载时被创建并进行初始化,类加载的过程只进行一次,也就是类变量只会被创建一次。

static修饰方法(静态方法):

会使这个方法成为整个类所公有的方法,可以用” 类名.方法名 “访问。

static修饰的方法,不能直接访问本类中的非静态成员,但本类的非静态方法可以访问本类的静态成员。

在静态方法中不能出现this关键字。

父类中是静态方法,子类中不能覆盖为非静态方法,在符合覆盖规则的前提下,在父子类中,父类中的静态方法可以被子类中的静态方法覆盖,但是没有多态。(在使用对象调用静态方法时其实是调用编译时类型的静态方法)

java中的main方法必须写成static的原因:

在类加载时无法创建对象,而静态方法可以不通过对象调用,所以在类加载时就可以通过main方法入口来运行程序。

static修饰初始代码块:

这时这个初始代码块就叫做静态初始代码块,这个代码块只在类加载时被执行一次。

可以用静态初始代码块初始化一个类。

动态初始代码块,写在类体中的“{}”,这个代码块是在生成对象时运行,这种代码块叫动态初始代码

final

修饰符final:不允许改变,可以修饰变量、方法、类。

final修饰变量:

被fianl修饰的变量就会变成常量,一旦赋值不能改变

常量可以在初始化时直接赋值,也可以在构造方法里赋值,只能在这两种方法里二选一,不能不为常量赋值

常量不会有默认初始值

锁定栈,使栈中的数据不可以改变

静态常量只能在初始化时直接赋值

final修饰方法:

被final修饰的方法将不能被其子类覆盖,保持方法的稳定不能被覆盖

final修饰类:

被final修饰的类将不能被继承

final类中的方法也都是final的

注意:

final不能用来修饰构造方法

abstract:

修饰符abstract:抽象的,定义框架不去实现,可以修饰类和方法

abstract修饰类:

会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型

抽象类就相当于一个类的半成品,需要子类继承并覆盖其中的抽象方法,这时子类才又创建实例的能力,如果子类没有实现父类的抽象方法,那么子类也要为抽象类。

abstract修饰方法:

会使这个方法变成抽象方法,也就是只有声明而没有实现,实现部分以”;”代替,需要子类继承实现。

抽象方法代表了某种标准,定义标准,定义功能,在子类中去实现功能

(子类继承了父类并需要给出从父类继承的抽象方法的实现)。

方法一时间想不到怎么被实现,或有意要子类去实现而定义某种标准,这个方法可以被定义为抽象。

注意:

有抽象方法的类一定是抽象类。但是抽象类中不一定都是抽象方法,也可以全是具体方法。

关键字

描述

int

32位整型数

boolean

布尔数据类型

float

32-bit单精度浮点数

long

64位整型数

short

16位数字

byte

8-bit 有符号数据类型

double

64-bit双精度浮点数

char

16-bit Unicode字符数据类型

abstract

抽象方法,抽象类的修饰符

extends

表示一个类是另一个类的子类

implements

表示一个类实现了接口

assert

断言条件是否满足

break

跳出循环或者label代码段

continue

不执行循环体剩余部分

case

switch语句的一个条件

catch

和try搭配扑捉异常信息

final

表示一个值在初始化之后就不能再改变了,表示方法不能被重写,或者一个类不能有子类

finally

try 语句不管是否发生异常都要执行的语句块

class

定义类

const

未使用

default

switch语句中的默认分支

enum

枚举类型

goto

未使用

if

条件语句

import

导入类

instanceof

测试一个对象是否是某个类的实例

interface

接口,一种抽象的类型,仅有方法和常量的定义

native

表示方法用非java代码实现

new

分配新的类实例

package

一系列相关类组成一个包

private

表示私有字段,或者方法等,只能从类内部访问

protected

表示字段只能通过类或者其子类访问,子类或者在同一个包内的其他类

public

表示共有属性或者方法

return

方法返回值

static

表示在类级别定义,所有实例共享的

strictfp

浮点数比较使用严格的规则

super

表示基类

switch

选择语句

synchronized

表示同一时间只能由一个线程访问的代码块

this

表示调用当前实例,或者调用另一个构造函数

throw

抛出异常

throws

定义方法可能抛出的异常

transient

修饰不要序列化的字段

try

表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码

void

标记方法不返回任何值

volatile

标记字段可能会被多个线程同时访问,而不做同步

希望本篇文章可以帮到大家

相关文章:

档案盒正面标签制作_2020昆明大学档案盒价格价格行情

2020昆明大学档案盒价格价格行情背景技术档案盒是企业、单位部门或财务部门整理和装订储存文件的不可缺少的办公用具,主要是对档案材料、财务凭证等进行收集、查找等。目前需要查找档案时需要将所有的档案材料取出,然后一一查找,工作效率低&a…

jQuery效果:隐藏、显示、切换、滑动、淡入淡出、动画

jQuery效果 隐藏、显示、切换、滑动、淡入淡出、以及动画1、隐藏与显示(改变&#xff1a;display&#xff1a;none;) hide()——隐藏 show()——显示toggle()方法&#xff1a;可以使用它来切换hide()与show()方法 eg1&#xff1a;显示 <style type"text/css"> …

《C和指针》pdf

下载地址&#xff1a;网盘下载 本书提供与C语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨&#xff0c;帮助程序员把指针的强大功能融入到自己的程序中去。 全书共18章&#xff0c;覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、…

linux 用户java_linux之用户管理

linux是多用户多任务的系统。每个用户都有一个账户。账户不能重复&#xff0c;密码允许重复。成功验证&#xff0c;则进入系统和自己的主目录(也就是家目录里面)。用户-----用户账号&#xff0c;添加、删除、修改以及用户密码管理。用户组------用户组管理。注意三个文件/etc/p…

k均值聚类图像分割matlab代码_用K均值聚类法为人类拍摄的首张黑洞照片进行分割...

众所周知&#xff0c;人类最近拍摄了首张黑洞照片。网友们纷纷表示&#xff0c;这明明就是一个甜甜圈嘛&#xff01;以前以为黑洞是这个世界上最最高冷的存在&#xff0c;而此刻突然现出真身&#xff0c;形象却是如此的人畜无害&#xff01;不但如此&#xff0c;还勾起了网友的…

else 策略模式去掉if_设计模式(三)——简单的状态模式代替if-else

博主将会针对Java面试题写一组文章&#xff0c;包括J2ee&#xff0c;SQL&#xff0c;主流Web框架&#xff0c;中间件等面试过程中面试官经常问的问题&#xff0c;欢迎大家关注。一起学习&#xff0c;一起成长。前言大多数开发人员现在还在使用if else的过程结构&#xff0c;曾看…

bzoj 3598 [ Scoi 2014 ] 方伯伯的商场之旅 ——数位DP

题目&#xff1a;https://www.lydsy.com/JudgeOnline/problem.php?id3598 数位DP...东看西看&#xff1a;http://www.cnblogs.com/Artanis/p/3751644.html https://www.cnblogs.com/MashiroSky/p/6399095.html 好巧妙的思路啊&#xff01;这样统计的东西就变得很简单了&#x…

OSI模型第四层传输层--TCP协议

1.传输层2个协议tcp和udp 2.tcp的可靠性&#xff08;挂号信&#xff09;。 面向链接的:类似寄挂号信&#xff0c;对方收到了并且能够确认。所以也是可靠的传输。 最大报文传输&#xff1a;两端可以协商传输报文大小。&#xff08;协商一个报文的大小&#xff09; 传输确认机制&…

evt参数是干啥用的_http连接池中非常关键的两个参数,到底是干啥用的?

作者简介&#xff1a;大厂一线资深开发。从crud开发到资深开发&#xff0c;再到研究员兼技术经理。《资深开发讲技术》 从一线实战中总结有故事&#xff0c;有背景的案例&#xff0c;希望带给大家一系列技术盛宴。求关注&#xff0c;欢迎技术交流。友情提醒&#xff0c;往期的文…

java 匿名类调用方法_java – 从匿名类调用新定义的方法

好问题.答案是否你不能直接调用date.someMethod();我们先来了解这是什么.Date date new Date() { ... };以上是延续Date类的匿名(没有名称)子类.当你看到代码,Runnable r new Runnable() {public void run() {}};这意味着您已经定义了正在实现(不扩展)Runnable接口的匿名(没有…

传图识字有次数限制吗_5岁娃识字3000?别羡慕!过早逼娃认字,后果很严重

在开始科普前&#xff0c;先祝大家“新年快乐”&#xff01;2021年&#xff0c;科大大也会用更优质的育儿科普知识&#xff0c;回馈科粉们的支持和喜爱。话说回来&#xff0c;大家有什么新年flag呢&#xff1f;科大大发现&#xff0c;家长们比起给自己立flag&#xff0c;更愿意…

3des java 库_java 3DES 加密

public class DESCode {private String algorithm "DESede/CBC/PKCS7Padding";//加密方法&#xff0f;运算模式&#xff0f;填充模式private String charset "UTF-8";//编码private Cipher encCipher;//加密cipherprivate Cipher decCipher;//解密cipher…

[JSOI2008]魔兽地图

树上背包 题目传送门 首先&#xff0c;有没有哪位dalao 愿意告诉我为什么合成高级装备不需要附加金币&#xff0c;&#xff0c; 好吧&#xff0c;这个不重要 明确表示装备合成路线可以用一棵树来表示。一颗&#xff1f;傻乎乎的在下之前每次就只dp一棵树&#xff0c;不出意外的…

重大要素改变中的机会选择包括_财务人员专业胜任能力要素及框架

陈珏莹【本文导图】专业胜任能力要素框架的思维导图【概要】专业胜任能力要素构成了能力框架&#xff0c;因此&#xff0c;在构建各层次财务人才专业胜任能力框架之前要先界定能力要素。本文按照专业知识、职业技能和职业价值观三大部分简单介绍了各能力要素的概念。一个测评财…

tomcat部署 修改域名和访问域名时去掉项目名

修改域名和访问域名时去掉项目名 1、修改端口为80端口 因为80端口是为HTTP&#xff08;HyperText Transport Protocol)即超文本传输协议开放的&#xff0c;浏览网页服务默认的端口号都是80&#xff0c;因此只需输入网址&#xff08;或IP地址&#xff09;即可。 打开tomcat安装目…

插入始终是1_40分!1分钟4次!大JB太硬了!

不得不说&#xff0c;巴爵士对赛事的预测还是稳如死狗昨儿他在节目中表示&#xff1a;热火赢不了雄鹿不过&#xff0c;话说出来可能就后悔了&#xff0c;表示如果爪机对血布能占上风&#xff0c;雄鹿还是有点麻烦。真的&#xff0c;巴爵士不再是我们印象中的那个自信的巴毒奶老…

一维卷积filter_从零开始学Pytorch(七)之卷积神经网络

卷积神经网络基础我们介绍卷积神经网络的卷积层和池化层&#xff0c;并解释填充、步幅、输入通道和输出通道的含义。import torch from torch.autograd import Variable aVariable(torch.FloatTensor([[2.,4.]]),requires_gradTrue) btorch.zeros(1,2) b[0,0]a[0,0]**2a[0,1] b…

nodejs配置nginx 以后链接mongodb数据库

服务器 &#xff1a;windows server2008 R2 反向代理 &#xff1a;nginx 1.15.1 for window 64位 数据库&#xff1a;mongodb 4 64位 使用框架express 首先下载nodejs 在官网或者中文网下载都可以 https://nodejs.org/zh-cn/ 然后将写好的项目打包成zip 上传 一定要带上 pac…

android切图尺寸_安卓设计尺寸规范

画布尺寸&#xff1a;如果想一稿适配ios&#xff0c;那就新建7201280 分辨率72&#xff0c;像素/英寸。如果单独设计安卓MD新规范的&#xff0c;那就新建10801920 分辨率72&#xff0c;像素/英寸。单位和度量 Units and measurementsdpi 屏幕宽度(或高度)像素 / 屏幕宽度(或高…

Vue.js使用前

下载安装 node,npm,git 安装cnpm 淘宝cnpm镜像https://npm.taobao.org/&#xff0c;-g表示进行全局安装 npm install -g cnpm --registryhttps://registry.npm.taobao.org # 全局安装 vue-cli$ npm install --global vue-cli# 创建一个基于 webpack 模板的新项目$ vue init web…

无法解析 list 中的方法 iterator_Python-list中的append()和extend()方法区别

一、append()和extend()方法都是用来添加数据到list末尾的&#xff0c;两者的区别&#xff1a;append()添加的时候会把添加的数据当成一个整体进行添加&#xff0c;允许添加任意类型的数据extend()添加的时候会把添加的数据迭代进行添加&#xff0c;只允许添加可迭代对象数据&a…

牛客网多校训练第一场 B - Symmetric Matrix(dp)

链接&#xff1a; https://www.nowcoder.com/acm/contest/139/B 题意&#xff1a; 求满足以下条件的n*n矩阵A的数量模m&#xff1a;A(i,j) ∈ {0,1,2}, 1≤i,j≤n.A(i,j) A(j,i), 1≤i,j≤n.A(i,1) A(i,2) ... A(i,n) 2, 1≤i≤n.A(1,1) A(2,2) ... A(n,n) 0.其中1≤n…

接口访问次数_系统运行缓慢,CPU 100%,Full GC次数过多,这一招帮你全搞定

处理过线上问题的同学基本上都会遇到系统突然运行缓慢&#xff0c;CPU 100%&#xff0c;以及Full GC次数过多的问题。当然&#xff0c;这些问题的最终导致的直观现象就是系统运行缓慢&#xff0c;并且有大量的报警。本文主要针对系统运行缓慢这一问题&#xff0c;提供该问题的排…

python3-pwntools教程_python的pwntools工具的日常使用

1.安装操作系统&#xff1a;ubuntu16.04环境准备&#xff1a;pythonpiplibssl-devlibffi-devpwntools安装&#xff1a;sudo apt-get install libffi-devsudo apt-get install libssl-devsudo apt-get install pythonsudo apt-get install python-pipsudo pip install pwntoolsp…

Spring MVC 返回json数据 报406错误 问题解决方案

将jackson jar包改为jackson-databind-2.5.0.jar jackson-core-2.5.0.jar jackson-annotations-2.5.0.jar&#xff08;这个版本的jackson 测试返回json格式的数据百分百没问题&#xff0c;其他版本的不稳定&#xff0c;所以选用这个版本的Jackson&#xff09;ResponseBody 然…

c# 读hex_c#十六进制到位转换(c# hex to bit conversion)

c&#xff03;十六进制到位转换(c# hex to bit conversion)我试图将64位数字的十六进制表示(例如字符串"FFFFFFFFF" )转换为二进制表示( "11111..." )。我试过了string result Convert.ToString(Convert.ToUInt64(value, 16), 2);但是这会导致一个令人困惑…

pip install lxml失败原因

python3 是用 VC 14 编译的, python27 是 VC 9 编译的, 安装 python3 的包需要编译的也是要 VC 14 以上支持的. VC 14 &#xff08;2015&#xff09;下载地址&#xff1a; https://www.microsoft.com/zh-cn/download/confirmation.aspx?id48145&6B49FDFB-8E5B-4B07-BC31-1…

go语言服务器连接mysql_go语言原生连接数据库

go操作mysqldatabase/sql原生支持连接池&#xff0c;是并发安全的这个标准库没有具体实现&#xff0c;只是列出了一些需要第三方库实现的具体内容下载驱动go get -u github.com/go-sql-driver/mysql连接数据库package mainimport ("database/sql""fmt"_ &q…

2017《面向对象程序设计》寒假作业一

1、你有什么技能比大多人&#xff08;超过70%以上&#xff09;更好&#xff1f; 我看电影比一般人多一点点&#xff1b;我听英文歌比一般人多一点点&#xff1b;我有一把尤克里里和一个滑板。我有很多爱好&#xff0c;但都没能发展成我的特长&#xff0c;它们给我的生活增添了情…

gis中的加权求和工具在哪里_ArcGIS教程:加权总和的工作原理

使用加权总和工具可以对多个输入进行加权及组合&#xff0c;以创建整合式分析。它可以轻松地将多个栅格输入(代表多种因素)与组合权重或相对重要性相结合&#xff0c;在这一方面它与加权叠加工具很相似。这两种工具有两个主要区别&#xff1a;加权总和工具不能将重分类值重设为…