当前位置: 首页 > news >正文

Java复习

CH1 Java Fundamentals

1.1 Java Features(java特色)

1.1 Simplicity: simple grammar, rich library  简单好用: 语法简单,库文件丰富

1.2 Pure OO: everything is object!  所有程序都是对象

1.3  Security: memory access, garbage collection, exception 安全:内存使用,垃圾收集,意外处理

1.4 Portability: Java Virtual Machine JVM

1.5 Interpreted execution: Bytecode

1.2 The Structure Of Java Programs :一共分为6部分

2.1 package declaration 包声明  (一是该类所属的包,二是该类import的包)

2.2 class declaration  类声明

2.3 variable declaratio  变量声明和初始化

2.4 constructor 构造函数

2.5 method  方法 

2.6 main method  主要方法

1.3 Java Primary Data Types

1.主要数据类型的值不是对象!

2.每一个主要数据类型都有一个相应的Wrapper (封装器)将其值封装为一个对象

注:“472”不是一个int对象,a的Compare函数不适用

1.4 Naming:开头(字母、下划线、$) + 其它(字母、数字、下划线、$)

name = First letter (letter、_、$) +The remaining part (digit 、letter 、underline‘_’ 、‘$’)

1.5 Java 操作符

5.1 Mathematical operator: +、- 、* 、/ 、%

5.2 Relational operator :> 、>= 、 < 、<= 、 == 、!= 、 

instanceOf (测试左边是否是右边类的实例)

5.3 Logical operator :&、|

5.4 Bitwise operator (移位操作):<<、<<

5.5 Assignment operator(赋值操作)

CH2 Java OOP

1.Class and Objects

1.1 关于内部类和static

用static修饰的代码块表示静态代码块,当Java虚拟机(JVM)加载类时,就会执行该代码块。

另外一个关键字final:可以用来修饰类、方法和变量,表明它们不能被继承或被修改。

1.1.1 static修饰的变量(可以根据类名直接访问)

一般在需要实现以下两个功能时使用静态变量:

1.在对象之间共享值时

2.方便访问变量时

1.1.2 static修饰的方法(可以通过类名直接调用)

        

因此静态方法:

1、不能使用this关键字

2、只能调用所属类的静态成员和静态方法.

Math类中的所有方法都是静态的,因为均可直接调用。

此外,一个类内部的方法一般都是非静态的。

1.1.3 static修饰的类(又称为静态内部类) 

1>只有成员内部类才能加 static 变成静态内部类,成员内部类不能存在任何static的变量和方法。

非静态内部类是跟外部类的实例绑定的。

2>成员内部类可以无条件访问外部类的所有成员属性和成员方法(包括 private 员和静态成员)

内部类和外部类的方法和变量同名时,使用如下方法访问外部类同名成员:

外部类 .this .成员变量

外部类 .this .成员方法

如果不加外部类.this. 则调用的是内部类变量和方法

3>一个类中可以有多个静态初始化块和多个普通初始化块;静态初始化块的执行要早于普通初始化

;同一个类型的初始化块的执行顺序取决于定义的先后顺序

1.2 Overload 重载(一个类内部同名但不同参数的函数称为重写)

重载只有一个要求,你得让编译器知道你用的是那么多重名函数中的哪一个!!

编译器通过什么来判断呢?只能通过函数中的参数呀。

1.3 Main method(主方法——程序的入口)

每个程序都有0个或者1个Main method:

1.4 Storge of Objects(对象的存储)

1>寄存器:

2>栈:对象地址、主要类型

3>堆:对象本身

4>方法区: 对象方法,静态数据

5>常量池:

6>内存:  流对象、持续对象

1.5 Access Control (使用权限管理)

2.Abstraction(类似C++中的模板)

2.1抽象类:

如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。

抽象类本身并不能被实例化,抽象类必须要继承后才能使用。

2.2 抽象方法:

只有方法名,没有方法体。因为可能每个子类的该方法体都不同。

声明抽象方法会造成以下两个结果:

  • 如果一个类包含抽象方法,那么该类必须是抽象类。
  • 任何子类必须重写父类的抽象方法,或者声明自身为抽象类。

3.Inheritance(继承)

The access right 只能缩小,不能放大

且在进行构造时,子类的构造函数可以构造父类的类

例:Animal a = new Cat(); // 向上转型

3.1 继承关键字 extended、implements

1>extended表示该继承是单继承:

 2>使用 implements 关键字可以变相的使java具有多继承的特性

3>java不支持多继承,但支持多重继承

4>super 与 this 关键字:

super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类

this关键字:指向自己的引用。

示例:

5>final 关键字

final 可以用来修饰变量(包括类属性、对象属性、局部变量和形参)、方法(包括类方法和对象方法)和类。

使用 final 关键字声明类,就是把类定义定义为最终类,不能被继承,或者用于修饰方法,该方法不能被子类重写,或用于修饰变量,该变量不可被修改

声明类:

注: final 定义的类,其中的属性、方法不是 final 的。

6>构造器Constructor

子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。

如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

示例:

7>@Override

子类对父类方法内容的重新定义。

若想要在子类中调用父类中的被重写方法,只能使用super关键字进行调用

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

示例:

4.Polymorphism(多态)

4.1 多态是同一个行为具有多个不同表现形式或形态的能力。

现实中,比如我们按下 F1 键这个动作:

  • 如果当前在 Flash 界面下弹出的就是 AS 3 的帮助文档;
  • 如果当前在 Word 下弹出的就是 Word 帮助;
  • 在 Windows 下弹出的就是 Windows 帮助和支持。

同一个事件发生在不同的对象上会产生不同的结果。

4.2多态存在的三个必要条件

  • 继承
  • 重写
  • 父类引用指向子类对象:Parent p = new Child();

5、接口

除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

5.1 接口定义

一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

  1. 不能实例化
  2. 没有构造方法

5.2 接口声明

  1. 方法默认public abstract修饰:接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
  2. 变量默认public static final修饰:子类修改了值会影响到其他所有子类,因此就不应该允许子类修改这个值,所以也必须定义为final。如果不是 static 的,这个变量来自哪一个接口就会产生歧义,所以实现类使用接口中的变量必须通过接口名指定,也就只能定为 static 

5.3 接口实现

当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。

类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。

5.4 接口继承

一个接口能继承另一个接口,和类之间的继承方式比较相似。接口的继承使用extends关键字,子接口继承父接口的方法。

相关文章:

Java复习

CH1 Java Fundamentals 1.1 Java Features&#xff08;java特色&#xff09; 1.1 Simplicity: simple grammar, rich library 简单好用&#xff1a; 语法简单&#xff0c;库文件丰富 1.2 Pure OO: everything is object! 所有程序都是对象 1.3 Security: memory access,…...

腾讯云微服务11月产品月报 | TSE 云原生 API 网关支持 WAF 对象接入

2023年 11月动态 TSE 云原生 API 网关 1、支持使用私有 DNS 解析 服务来源支持私有 DNS 解析器&#xff0c;用户可以添加自己的 DNS 解析器地址进行私有域名解析&#xff0c;适用于服务配置了私有域名的用户。 2、支持 WAF 对象接入 云原生 API 网关对接 Web 安全防火墙&…...

性能优化-待处理

1 性能优化-循环展开...

Linux: sysctl: network: ip_no_pmtu_disc,容易搞混的参数名称

这个参数的迷惑性在于双重否定,字面意思是关闭PMTU发现的功能。如果设置为1,代表关闭;如果是0,代表不关闭pmtu发现的功能。所以说明里,有disable/enable,就容易搞混。所以要甄别网上的某些博客的说明,不要被误导。 ip_no_pmtu_disc - INTEGER Disable Path MTU Discover…...

关于“Python”的核心知识点整理大全26

目录 10.3.9 决定报告哪些错误 10.4 存储数据 10.4.1 使用 json.dump()和 json.load() number_writer.py number_reader.py 10.4.2 保存和读取用户生成的数据 对于用户生成的数据&#xff0c;使用json保存它们大有裨益&#xff0c;因为如果不以某种方式进行存储&#xf…...

Axure中继器完成表格的增删改查的自定义元件(三列表格与十列表格)

目录 一、中继器 1.1 定义 1.2 特点 1.3 适用场景 二、三列表格增删改查 2.1 实现思路 2.2 效果演示 三、十列表格增删改查 3.1 实现思路 3.2 效果演示 一、中继器 1.1 定义 在Axure中&#xff0c;"中继器"通常指的是界面设计中的一个元素&#xff0c;用…...

刚clone下来的项目如何上传到新的仓库

查看当前项目的git信息 git remote -v 查看git目录上传到哪个路径下 拉下的项目如何上传到新的仓库 git clone xxxcd xxxrm -r .git 删除原有的git信息&#xff0c;有问题一直回车git init 初始化gitgit add . git commit -m ‘xxx’git remote add origin 远程库地址&#…...

面试题总结(十五)【ARMstm32】【华清远见西安中心】

ARM Cortex-M,Cortex-R,Cortex-A的区别和差异是什么&#xff1f; ARM Cortex-M&#xff0c;Cortex-R和Cortex-A是ARM架构下的不同处理器系列&#xff0c;针对不同的应用领域和需求进行了优化和设计。它们之间的区别和差异主要体现在以下几个方面&#xff1a; 1. 应用领域&#…...

助听器概述

助听器概述 什么是助听器&#xff1f; 助听器是一种放置在耳内或耳后的小型电子设备。助听器可以放大声音&#xff0c;使听力损失的人能够提高他们的听力和言语理解能力。 今天有许多不同类型的助听器&#xff0c;包括处方助听器和非处方 &#xff08;OTC&#xff09; 助听器…...

学习k8s

学习k8s 我为什么要用k8s 和其他部署方式的区别是什么? 传统部署方式 java --> package --> 放到服务器上 --> Tomcat 如果是同时进行写操作,会存在并发问题. 用户 --网络带宽–> 服务器 -->服务 同一个服务器上,多个服务: 网络资源的占用 内存的占用 cpu的占…...

iOS 将sdk更新到最新并为未添加版本号的三方库增加版本号

1、更新cocoapod sudo gem install cocoapods2、更新sdk pod update3、查看最新版本号 # 查看最新版本号 cat Podfile.lock4、增加版本号 将查询到的版本号添加到pod中 pod MJRefresh, 3.7.6...

Appium —— 初识移动APP自动化测试框架Appium

说到移动APP自动化测试&#xff0c;代表性的测试框架非Appium莫属&#xff0c;从今天开始我们将从APP结构解析、Appium框架学习、安卓/iOS自动化测试实战、自动遍历回归测试、自动化测试平台及持续集成&#xff0c;多个维度一起由浅入深的学废Appium 今天我们先来初步认识Appi…...

自助式可视化开发,ETLCloud的集成之路

自助式可视化开发 自助式可视化开发是指利用可视化工具和平台&#xff0c;使非技术人员能够自主创建、定制和部署数据分析和应用程序的过程。 传统上&#xff0c;数据分析和应用程序开发需要专业的编程和开发技能。但是&#xff0c;自助式可视化开发工具的出现&#xff0c;使…...

diffu-Distributed inference with multiple GPUs

pytorch的ddp...

在Python中使用Kafka帮助我们处理数据

Kafka是一个分布式的流数据平台&#xff0c;它可以快速地处理大量的实时数据。Python是一种广泛使用的编程语言&#xff0c;它具有易学易用、高效、灵活等特点。在Python中使用Kafka可以帮助我们更好地处理大量的数据。本文将介绍如何在Python中使用Kafka简单案例。 一、安装K…...

进程和线程和协程区别

目录 一、进程和线程 二、线程上下文切换 三、线程与协程区别 一、进程和线程 线程是可以由调度程序对立管理的最小程序指令集&#xff0c;而进程是程序运行的实例。 大多情况下&#xff0c;线程是进程的组成部分&#xff0c;一个进程中可以存在多个线程&#xff0c;这些线…...

银行测试:第三方支付平台业务流,功能/性能/安全测试方法

1、第三方支付平台的功能和结构特点 在信用方面&#xff0c;第三方支付平台作为中介&#xff0c;在网上交易的商家和消费者之间作一个信用的中转&#xff0c;通过改造支付流程来约束双方的行为&#xff0c;从而在一定程度上缓解彼此对双方信用的猜疑&#xff0c;增加对网上购物…...

神经网络可以计算任何函数的可视化证明

神经网络可以计算任何函数的可视化证明 对于神经网络&#xff0c;一个显著的事实就是它可以计算任何函数。 如下&#xff1a;不管该函数如何&#xff0c;总有神经网络能够对任何可能的输入x&#xff0c;输出值f&#xff08;x&#xff09; 即使函数有很多输入和输出&#xff0…...

SQL进阶理论篇(十三):数据库的查询优化器是什么?

文章目录 简介什么是查询优化器查询优化器的两种优化方式总结参考文献 简介 事务可以让数据库在增删改查的过程中&#xff0c;保证数据的正确性和安全性&#xff0c;而索引可以帮数据库提升数据的查找效率。查询优化器&#xff0c;则是帮助我们获取更高的SQL查询性能。 本节我…...

视觉SLAM中的相机分类及用途

视觉SLAM&#xff08;Simultaneous Localization and Mapping&#xff09;算法主要用于机器人和自动导航系统中&#xff0c;用于同时进行定位和建立环境地图。这种算法依赖于相机来捕捉环境数据。根据视觉SLAM的具体需求和应用场景&#xff0c;可以使用不同类型的相机。以下是用…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

[论文阅读]TrustRAG: Enhancing Robustness and Trustworthiness in RAG

TrustRAG: Enhancing Robustness and Trustworthiness in RAG [2501.00879] TrustRAG: Enhancing Robustness and Trustworthiness in Retrieval-Augmented Generation 代码&#xff1a;HuichiZhou/TrustRAG: Code for "TrustRAG: Enhancing Robustness and Trustworthin…...