当前位置: 首页 > 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;可以使用不同类型的相机。以下是用…...

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路

进入2025年以来&#xff0c;尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断&#xff0c;但全球市场热度依然高涨&#xff0c;入局者持续增加。 以国内市场为例&#xff0c;天眼查专业版数据显示&#xff0c;截至5月底&#xff0c;我国现存在业、存续状态的机器人相关企…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935&#xff0c;SRS管理页面端口是8080&#xff0c;可…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...