Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
jbt-zh
提交
4abf8b8f
J
jbt-zh
项目概览
OpenDocCN
/
jbt-zh
8 个月 前同步成功
通知
0
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jbt-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4abf8b8f
编写于
6月 23, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-06-23 12:46:32
上级
53be9774
变更
29
隐藏空白更改
内联
并排
Showing
29 changed file
with
79 addition
and
79 deletion
+79
-79
docs/10.md
docs/10.md
+1
-1
docs/108.md
docs/108.md
+1
-1
docs/13.md
docs/13.md
+3
-3
docs/131.md
docs/131.md
+1
-1
docs/156.md
docs/156.md
+1
-1
docs/16.md
docs/16.md
+2
-2
docs/163.md
docs/163.md
+2
-2
docs/166.md
docs/166.md
+18
-18
docs/17.md
docs/17.md
+1
-1
docs/178.md
docs/178.md
+1
-1
docs/189.md
docs/189.md
+1
-1
docs/23.md
docs/23.md
+1
-1
docs/25.md
docs/25.md
+1
-1
docs/27.md
docs/27.md
+1
-1
docs/29.md
docs/29.md
+5
-5
docs/31.md
docs/31.md
+2
-2
docs/33.md
docs/33.md
+2
-2
docs/35.md
docs/35.md
+7
-7
docs/36.md
docs/36.md
+10
-10
docs/37.md
docs/37.md
+8
-8
docs/38.md
docs/38.md
+1
-1
docs/41.md
docs/41.md
+1
-1
docs/46.md
docs/46.md
+1
-1
docs/59.md
docs/59.md
+1
-1
docs/62.md
docs/62.md
+1
-1
docs/64.md
docs/64.md
+1
-1
docs/65.md
docs/65.md
+1
-1
docs/84.md
docs/84.md
+1
-1
docs/9.md
docs/9.md
+2
-2
未找到文件。
docs/10.md
浏览文件 @
4abf8b8f
...
...
@@ -20,7 +20,7 @@
## 创建一个包
现在,我们将为我们的 Java 项目创建一个程序包。
**包**
用于避免
*命名冲突*
,以便
*控制访问*
(访问修饰符)和
*
来
捆绑相关类型*
的组。
现在,我们将为我们的 Java 项目创建一个程序包。
**包**
用于避免
*命名冲突*
,以便
*控制访问*
(访问修饰符)和
*捆绑相关类型*
的组。
要创建包,请在 Java 项目(
`JBTProject`
)中选择
`src`
文件夹,右键单击该文件夹并选择“
**新建 -> 包**
”。
...
...
docs/108.md
浏览文件 @
4abf8b8f
...
...
@@ -98,7 +98,7 @@ public class FirstJunitTest {
![
JUnit import packages
](
img/ce8da4202841e9f631539ef66816bcfb.png
)
在这三个注释下的
**方法**
是
*公开的*
,返回类型为
*void*
。 在
*junit.framework.TestCase*
类下,我们有
**setUp()**
和
**tearDown()**
方法。 最佳实践是
重写
这些方法,以分别编写初始化代码和清除代码。 这不仅可以防止内存泄漏,还可以使代码更易于阅读。 JUnit 首先调用 setUp()方法,然后调用 test 方法,最后调用 tearDown()方法。 对于附加到@Test 的每个测试方法,都会发生这种情况。
在这三个注释下的
**方法**
是
*公开的*
,返回类型为
*void*
。 在
*junit.framework.TestCase*
类下,我们有
**setUp()**
和
**tearDown()**
方法。 最佳实践是
覆盖
这些方法,以分别编写初始化代码和清除代码。 这不仅可以防止内存泄漏,还可以使代码更易于阅读。 JUnit 首先调用 setUp()方法,然后调用 test 方法,最后调用 tearDown()方法。 对于附加到@Test 的每个测试方法,都会发生这种情况。
#### 要运行测试,
...
...
docs/13.md
浏览文件 @
4abf8b8f
...
...
@@ -34,7 +34,7 @@
#### 最终变量:
当变量设置为 final 时,其值
*不能*
更改
为
。 最终变量就像常量。
当变量设置为 final 时,其值
*不能*
更改。 最终变量就像常量。
**示例**
:
`public static final int i = 10;`
...
...
@@ -92,7 +92,7 @@
`Strictfp`
非访问修饰符强制浮点或浮点操作遵守 IEEE 754 标准。
**注意**
:
`Strictfp`
非访问修饰符
*无法
将
*
应用于变量。
**注意**
:
`Strictfp`
非访问修饰符
*无法*
应用于变量。
## 备忘单
...
...
@@ -100,7 +100,7 @@
*
静态关键字可以应用于
**变量**
和
**方法**
。
*
静态变量是那些不与任何实例关联但与类关联的变量,这意味着所有实例都将访问该变量的同一单个副本。
*
局部变量
*不能*
声明为
`static`
。
*
*
静态关键字也可以应用于*
方法
*
。 它们将适用于所有实例,并且它们将不依赖于实例创建。
*
静态关键字也可以应用于
*方法*
。 它们将适用于所有实例,并且它们将不依赖于实例创建。
*
最终修饰符可以应用于
*方法*
和
*变量*
。
*
`Final`
是唯一可用于局部变量的修饰符。
*
一旦声明为
`final`
,则变量的值无法更改。
...
...
docs/131.md
浏览文件 @
4abf8b8f
...
...
@@ -55,4 +55,4 @@ Apache ANT 具有强大的功能,足以超越“谢谢”的门槛! 我们
![
sample build.xml
](
data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20839%20425'%3E%3C/svg%3E
)
<noscript><img
alt=
"sample build.xml"
class=
"alignnone size-full wp-image-12640"
height=
"425"
src=
"img/28116bee6867f10c68cb8a7b00821a1e.png"
width=
"839"
/><p>
让我们一次将构建文件提取一个标签。
</p><p><strong>
项目
</strong>
:这具有三个属性。
</p><ol><li>
名称 – 项目名称
</li><li>
default – 如果未提供任何内容,则应执行的默认目标
</li><li>
baseDir – 从中计算文件中相对路径的基本目录。 “。” 指执行的当前目录
</li></ol><p><strong>
目标
</strong>
:如示例构建文件中所示,一个项目可以具有一个或多个目标。 目标是一组任务。 我们可以选择希望 ANT 执行的目标,并用逗号分隔它们的名称。 如果未指定目标,则将执行默认目标。
</p><p>
这里要注意的重要属性是“依赖”。 这指定了它所依赖的目标名称。 例如,编译目标将仅在其依赖的初始化目标执行后执行。 因此,depends 属性指定执行目标的顺序。
</p><p><strong>
任务
</strong>
:这是一段可以执行的代码。 每个任务可以具有一个或多个属性作为键值对。
</p><p>
句法:
</p><p>
<
<em>
名称
</em>
<em>
attribute1
</em>
=”
<em>
value1
</em>
”
<em>
attribute2
</em>
=”
<em>
value2
</em>
”…/
>
</p><p><em>
名称
</em>
是任务的名称,
<em>
属性 N
</em>
和
<em>
valueN
</em>
分别是属性名称和值名称。
</p><p>
这是现成的
<a
href=
"https://ant.apache.org/manual/tasklist.html"
>
内置任务
</a>
的长长列表。 我们也可以编写自己的任务。 (还记得吗?都是用 Java 编写的)。
</p><p>
您一定想知道,为什么要深入研究构建文件,而不是立即安装并开始执行操作! 传递这么多 ANT 知识是有原因的。 随着我们在旅途中的进一步发展,您将对此表示赞赏。 请稍等...
</p><p>
现在开始营业!
</p><p><strong>
步骤 1
</strong>
:转到“ https://ant.apache.org/bindownload.cgi”,然后单击“ apache-ant-1.10.2-bin.zip”以在下面下载.zip 文件 “蚂蚁的当前版本”。
</p><p><img
alt=
"Download link"
class=
"alignnone size-full wp-image-12641"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/04/1_downloadLink.jpg"
height=
"98"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20572%2098'%3E%3C/svg%3E"
width=
"572"
/></p><noscript><img
alt=
"Download link"
class=
"alignnone size-full wp-image-12641"
height=
"98"
src=
"img/14970a7f07b1ccaa7596be317ad9fa33.png"
width=
"572"
/><p><strong>
步骤 2:
</strong>
下载.zip 存档后,将所有文件提取到本地计算机上的目录中。
</p><p><strong>
步骤 3
</strong>
:如下设置环境变量 ANT_HOME 和 Path,
</p><p>
右键点击“计算机”-
>
属性-
>
高级系统设置-
>
“高级”标签-
>
环境变量-
>
在系统变量下单击“新建”。
</p><p>
ANT_HOME 设置为提取 Apache ANT 文件的文件夹的路径。
</p><p><img
alt=
"System variable settings"
class=
"alignnone size-full wp-image-12642"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/04/2_SystemVariable.jpg"
height=
"162"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20376%20162'%3E%3C/svg%3E"
width=
"376"
/></p><noscript><img
alt=
"System variable settings"
class=
"alignnone size-full wp-image-12642"
height=
"162"
src=
"img/ba0bc910e93456af8ef5bbf18bafd97b.png"
width=
"376"
/><p>
类似地,编辑 Path 变量以包含%ANT_HOME%
\
bin。
</p><p><strong>
步骤 4
</strong>
:通过在“命令提示符”中键入以下命令来验证是否已安装 Apache ANT
</p><p><em>
蚂蚁版本
</em></p><p><img
alt=
"ANT version check in cmd"
class=
"alignnone size-full wp-image-12643"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/04/3_CmdVersionCheck.jpg"
height=
"86"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20354%2086'%3E%3C/svg%3E"
width=
"354"
/></p><noscript><img
alt=
"ANT version check in cmd"
class=
"alignnone size-full wp-image-12643"
height=
"86"
src=
"img/418f05483293c425772a4636e1d0364c.png"
width=
"354"
/><p><strong>
步骤 5:
</strong>
下一个任务是打开 Eclipse IDE,
</p><li>
右键单击 Java 项目-
>
导出
</li><li>
在“常规”下,选择“蚂蚁构建文件”,然后点击“下一步”
</li><li>
确保已选择所需的项目
</li><li>
取消选中“创建目标以使用 Eclipse 编译器编译项目”,以删除对 Eclipse 的任何依赖
</li><p><img
alt=
"Generating ANT buildfile"
class=
"alignnone size-full wp-image-12638"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/04/4_Buildfiles-1.jpg"
height=
"407"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20509%20407'%3E%3C/svg%3E"
width=
"509"
/></p><noscript><img
alt=
"Generating ANT buildfile"
class=
"alignnone size-full wp-image-12638"
height=
"407"
src=
"img/f6b7286b63d7900c3782225e686a6833.png"
width=
"509"
/><p>
单击“完成”以查看自动生成的 eclipse 文件。
</p><p>
就是这样! 您已经准备好将所有项目作为 ANT 构建运行。 这很简单,不是吗?
</p><p><strong>
<em>
即时贴:
</em>
</strong>
<em>
Eclipse 与 ANT 集成在一起。 为了确保 Eclipse 的“蚂蚁之家”指向最新版本的 ANT,请单击 Windows-
>
首选项-
>
Ant-
>
运行时。 点击“类路径”标签。 展开“蚂蚁房屋入境”并验证路径。 如果指向的是其他版本,请单击“蚂蚁之家”并浏览用于提取 Apache ANT 文件的文件夹的位置。
</em></p><p>
在我们的下一篇文章中,让我们做到这一点,并在 ANT 目标的帮助下生成 JUnit 报告。
</p><p>
安装愉快!
</p><div
class=
"sticky-nav"
style=
"font-size: 15px;"
><div
class=
"sticky-nav-image"
></div><div
class=
"sticky-nav-holder"
><div
class=
"sticky-nav_item"
><h6
class=
"heading-sm"
>
下一篇文章
</h6></div><h5
class=
"sticky-nav_heading "
style=
"font-size: 15px;"
><a
href=
"https://javabeginnerstutorial.com/selenium/10b-advanced-webdriver-generating-junit-reports/"
title=
"10b. Advanced WebDriver – Generating JUnit Report"
>
10b。 高级 WebDriver – 生成 JUnit 报告
</a></h5></div></div>
</body>
</html></noscript>
\ No newline at end of file
<noscript><img
alt=
"sample build.xml"
class=
"alignnone size-full wp-image-12640"
height=
"425"
src=
"img/28116bee6867f10c68cb8a7b00821a1e.png"
width=
"839"
/><p>
让我们一次将构建文件提取一个标签。
</p><p><strong>
项目
</strong>
:这具有三个属性。
</p><ol><li>
名称 – 项目名称
</li><li>
default – 如果未提供任何内容,则应执行的默认目标
</li><li>
baseDir – 从中计算文件中相对路径的基本目录。 “。” 指执行的当前目录
</li></ol><p><strong>
目标
</strong>
:如示例构建文件中所示,一个项目可以具有一个或多个目标。 目标是一组任务。 我们可以选择希望 ANT 执行的目标,并用逗号分隔它们的名称。 如果未指定目标,则将执行默认目标。
</p><p>
这里要注意的重要属性是“依赖”。 这指定了它所依赖的目标名称。 例如,编译目标将仅在其依赖的初始化目标执行后执行。 因此,depends 属性指定执行目标的顺序。
</p><p><strong>
任务
</strong>
:这是一段可以执行的代码。 每个任务可以具有一个或多个属性作为键值对。
</p><p>
句法:
</p><p>
<
<em>
名称
</em>
<em>
attribute1
</em>
=”
<em>
value1
</em>
”
<em>
attribute2
</em>
=”
<em>
value2
</em>
”…/
>
</p><p><em>
名称
</em>
是任务的名称,
<em>
属性 N
</em>
和
<em>
valueN
</em>
分别是属性名称和值名称。
</p><p>
这是现成的
<a
href=
"https://ant.apache.org/manual/tasklist.html"
>
内置任务
</a>
的长长列表。 我们也可以编写自己的任务。 (还记得吗?都是用 Java 编写的)。
</p><p>
您一定想知道,为什么要深入研究构建文件,而不是立即安装并开始执行操作! 传递这么多 ANT 知识是有原因的。 随着我们在旅途中的进一步发展,您将对此表示赞赏。 请稍等...
</p><p>
现在开始营业!
</p><p><strong>
步骤 1
</strong>
:转到“ https://ant.apache.org/bindownload.cgi”,然后单击“ apache-ant-1.10.2-bin.zip”以在下面下载.zip 文件 “蚂蚁的当前版本”。
</p><p><img
alt=
"Download link"
class=
"alignnone size-full wp-image-12641"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/04/1_downloadLink.jpg"
height=
"98"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20572%2098'%3E%3C/svg%3E"
width=
"572"
/></p><noscript><img
alt=
"Download link"
class=
"alignnone size-full wp-image-12641"
height=
"98"
src=
"img/14970a7f07b1ccaa7596be317ad9fa33.png"
width=
"572"
/><p><strong>
步骤 2:
</strong>
下载.zip 存档后,将所有文件提取到本地计算机上的目录中。
</p><p><strong>
步骤 3
</strong>
:如下设置环境变量 ANT_HOME 和 Path,
</p><p>
右键点击“计算机”-
>
属性-
>
高级系统设置-
>
“高级”标签-
>
环境变量-
>
在系统变量下单击“新建”。
</p><p>
ANT_HOME 设置为提取 Apache ANT 文件的文件夹的路径。
</p><p><img
alt=
"System variable settings"
class=
"alignnone size-full wp-image-12642"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/04/2_SystemVariable.jpg"
height=
"162"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20376%20162'%3E%3C/svg%3E"
width=
"376"
/></p><noscript><img
alt=
"System variable settings"
class=
"alignnone size-full wp-image-12642"
height=
"162"
src=
"img/ba0bc910e93456af8ef5bbf18bafd97b.png"
width=
"376"
/><p>
类似地,编辑 Path 变量以包含% ANT_HOME%
\
bin。
</p><p><strong>
步骤 4
</strong>
:通过在“命令提示符”中键入以下命令来验证是否已安装 Apache ANT
</p><p><em>
蚂蚁版本
</em></p><p><img
alt=
"ANT version check in cmd"
class=
"alignnone size-full wp-image-12643"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/04/3_CmdVersionCheck.jpg"
height=
"86"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20354%2086'%3E%3C/svg%3E"
width=
"354"
/></p><noscript><img
alt=
"ANT version check in cmd"
class=
"alignnone size-full wp-image-12643"
height=
"86"
src=
"img/418f05483293c425772a4636e1d0364c.png"
width=
"354"
/><p><strong>
步骤 5:
</strong>
下一个任务是打开 Eclipse IDE,
</p><li>
右键单击 Java 项目-
>
导出
</li><li>
在“常规”下,选择“蚂蚁构建文件”,然后点击“下一步”
</li><li>
确保已选择所需的项目
</li><li>
取消选中“创建目标以使用 Eclipse 编译器编译项目”,以删除对 Eclipse 的任何依赖
</li><p><img
alt=
"Generating ANT buildfile"
class=
"alignnone size-full wp-image-12638"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/04/4_Buildfiles-1.jpg"
height=
"407"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20509%20407'%3E%3C/svg%3E"
width=
"509"
/></p><noscript><img
alt=
"Generating ANT buildfile"
class=
"alignnone size-full wp-image-12638"
height=
"407"
src=
"img/f6b7286b63d7900c3782225e686a6833.png"
width=
"509"
/><p>
单击“完成”以查看自动生成的 eclipse 文件。
</p><p>
就是这样! 您已经准备好将所有项目作为 ANT 构建运行。 这很简单,不是吗?
</p><p><strong>
<em>
即时贴:
</em>
</strong>
<em>
Eclipse 与 ANT 集成在一起。 为了确保 Eclipse 的“蚂蚁之家”指向最新版本的 ANT,请单击 Windows-
>
首选项-
>
Ant-
>
运行时。 点击“类路径”标签。 展开“蚂蚁房屋入境”并验证路径。 如果指向的是其他版本,请单击“蚂蚁之家”并浏览用于提取 Apache ANT 文件的文件夹的位置。
</em></p><p>
在我们的下一篇文章中,让我们做到这一点,并在 ANT 目标的帮助下生成 JUnit 报告。
</p><p>
安装愉快!
</p><div
class=
"sticky-nav"
style=
"font-size: 15px;"
><div
class=
"sticky-nav-image"
></div><div
class=
"sticky-nav-holder"
><div
class=
"sticky-nav_item"
><h6
class=
"heading-sm"
>
下一篇文章
</h6></div><h5
class=
"sticky-nav_heading "
style=
"font-size: 15px;"
><a
href=
"https://javabeginnerstutorial.com/selenium/10b-advanced-webdriver-generating-junit-reports/"
title=
"10b. Advanced WebDriver – Generating JUnit Report"
>
10b。 高级 WebDriver – 生成 JUnit 报告
</a></h5></div></div>
</body>
</html></noscript>
\ No newline at end of file
docs/156.md
浏览文件 @
4abf8b8f
...
...
@@ -125,4 +125,4 @@ new Vue({
![
mouseover event
](
data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20450%20255'%3E%3C/svg%3E
)
<noscript><img
alt=
"mouseover event"
class=
"alignnone size-full wp-image-14144"
height=
"255"
src=
"img/a1c490148c18e07a6f32b328ddfde462.png"
width=
"450"
/><p>
我们还没有完成!
</p><h2>
使用事件对象
</h2><p>
还记得 JavaScript 世界中的
<a
href=
"https://www.w3schools.com/jsref/obj_event.asp"
>
本机事件对象
</a>
吗? 触发事件时,将创建 Event 对象,并将其自动传递给使用
<code>
v-on
</code>
指令调用的任何方法。 再次感谢 Vue! 让我们看一些例子来了解这一点。
</p><p>
Event 对象具有“
<code>
target
</code>
”方法,该方法返回触发事件的元素,并与
<code>
element.tagName
</code>
属性一起使用返回元素的 HTML 标记名称。
</p><p><strong>
Index.html (code snippet)
</strong></p><pre><code
class=
"language-html"
>
<
div
>
<
!-- Listening to mouse events --
>
<
button v-on:mouseover="showRole"
>
Hover over me!
<
/button
>
{{ role }}
<
p
>
{{ "Tag Name:" + tagName }}
<
/p
>
<
/div
>
</code></pre><p><strong>
Index.js
</strong></p><pre><code
class=
"language-javascript"
>
new Vue({ el: "#app", data: { role: "", tagName: "" }, // define all custom methods within the 'methods' object methods: { showRole() { // 'this' keyword refers to the current Vue instance this.role = "developer"; this.tagName = event.target.tagName; } } });
</code></pre><p>
使用
<code>
event.target
</code>
将返回“
<code>
[object HTMLButtonElement]
</code>
”,而
<code>
event.target.tagName
</code>
将返回“
<code>
BUTTON
</code>
”。
</p><p><img
alt=
"Event object"
class=
"alignnone size-full wp-image-14143"
data-lazy-sizes=
"(max-width: 402px) 100vw, 402px"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj.jpg"
data-lazy-srcset=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj.jpg 402w, https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj-300x190.jpg 300w"
height=
"255"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20402%20255'%3E%3C/svg%3E"
width=
"402"
/></p><noscript><img
alt=
"Event object"
class=
"alignnone size-full wp-image-14143"
height=
"255"
sizes=
"(max-width: 402px) 100vw, 402px"
src=
"img/f8145617a1b29741272a1a997f640584.png"
srcset=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj.jpg 402w, https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj-300x190.jpg 300w"
width=
"402"
/><h2>
与 Event 对象一起传递参数
</h2><p>
到目前为止,我们肯定知道两件事,
</p><ol><li>
将创建
<code>
Event
</code>
对象,并将其自动传递给触发事件时正在调用的方法。
</li><li>
只需在方法名称后面的括号内指定参数,即可将参数传递给这些方法非常容易。
</li></ol><p>
如果我们想使用此自动创建的
<code>
Event
</code>
对象将自己的参数
<em>
<strong>
沿
</strong>
</em>
传递,该怎么办? 我们也可以这样做吗?
</p><p>
答案是肯定的! 绝对没错!!
</p><p>
这里要记住的重点是
<em>
<strong>
的命名
</strong>
</em>
。 Vue 将原始 DOM 事件存储在名为“
<code>
$event
</code>
”的变量中。 注意不要重写或拼写错误,因为它是 Vue.js 使用的受保护名称,以了解这不是自定义参数,而是
<code>
Event
</code>
对象本身。
</p><p>
让我们对代码进行这些更改。
</p><p><strong>
Index.html (code snippet)
</strong></p><pre><code
class=
"language-html"
>
<
button v-on:mouseover="showRole('developer', $event)"
>
Hover over me!
<
/button
>
{{ role }}
<
p
>
{{ "Tag Name:" + tagName }}
<
/p
>
</code></pre><p><strong>
Index.js(代码段)
</strong></p><pre><code
class=
"language-javascript"
>
showRole(customRole, event) { // 'this' keyword refers to the current Vue instance this.role = customRole; this.tagName = event.target.tagName; }
</code></pre><p>
在总结之前,这里是供您欣赏的完整代码!
</p><p><strong>
Index.html
</strong></p><pre><code
class=
"language-html"
>
<
!DOCTYPE html
>
<
html
>
<
head
>
<
title
>
Hello Vue!
<
/title
>
<
!-- including Vue with development version CDN --
>
<
script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"
><
/script
>
<
/head
>
<
body
>
<
div id="app"
>
<
h2
>
Welcome
<
/h2
>
<
!-- Using key modifiers with keyboard events --
>
<
button v-on:keyup.enter="greet"
>
greet
<
/button
>
<
hr/
>
<
div
>
<
!-- Passing arguments along with original DOM event --
>
<
button v-on:mouseover="showRole('developer', $event)"
>
Hover over me!
<
/button
>
{{ role }}
<
p
>
{{ "Tag Name:" + tagName }}
<
/p
>
<
/div
>
<
/div
>
<
!-- including index.js file --
>
<
script src="index.js"
><
/script
>
<
/body
>
<
/html
>
</code></pre><p><strong>
Index.js
</strong></p><pre><code
class=
"language-javascript"
>
new Vue({ el: "#app", data: { role: "", tagName: "" }, // define all custom methods within the 'methods' object methods: { greet() { alert("Hi"); }, showRole(customRole, event) { // 'this' keyword refers to the current Vue instance this.role = customRole; this.tagName = event.target.tagName; } } });
</code></pre><p>
因此,我们现在可以将自定义参数与带有
<code>
$event
</code>
变量的自动创建的
<code>
Event
</code>
对象一起传递。 上面讨论的所有代码以及注释都可以在
<a
href=
"https://github.com/JBTAdmin/vuejs"
>
GitHub 存储库
</a>
中找到。
</p><p>
这使我们到了本主题的结尾。 祝您有美好的一天!
</p><div
class=
"sticky-nav"
style=
"font-size: 15px;"
><div
class=
"sticky-nav-image"
></div><div
class=
"sticky-nav-holder"
><div
class=
"sticky-nav_item"
><h6
class=
"heading-sm"
>
下一篇文章
</h6></div><h5
class=
"sticky-nav_heading "
style=
"font-size: 15px;"
><a
href=
"https://javabeginnerstutorial.com/vue-js/13-shorthands-for-v-bind-and-v-on/"
title=
"13\. Let’s use shorthands"
>
13.让我们使用速记
</a></h5></div></div>
</body>
</html></noscript>
\ No newline at end of file
<noscript><img
alt=
"mouseover event"
class=
"alignnone size-full wp-image-14144"
height=
"255"
src=
"img/a1c490148c18e07a6f32b328ddfde462.png"
width=
"450"
/><p>
我们还没有完成!
</p><h2>
使用事件对象
</h2><p>
还记得 JavaScript 世界中的
<a
href=
"https://www.w3schools.com/jsref/obj_event.asp"
>
本机事件对象
</a>
吗? 触发事件时,将创建 Event 对象,并将其自动传递给使用
<code>
v-on
</code>
指令调用的任何方法。 再次感谢 Vue! 让我们看一些例子来了解这一点。
</p><p>
Event 对象具有“
<code>
target
</code>
”方法,该方法返回触发事件的元素,并与
<code>
element.tagName
</code>
属性一起使用返回元素的 HTML 标记名称。
</p><p><strong>
Index.html (code snippet)
</strong></p><pre><code
class=
"language-html"
>
<
div
>
<
!-- Listening to mouse events --
>
<
button v-on:mouseover="showRole"
>
Hover over me!
<
/button
>
{{ role }}
<
p
>
{{ "Tag Name:" + tagName }}
<
/p
>
<
/div
>
</code></pre><p><strong>
Index.js
</strong></p><pre><code
class=
"language-javascript"
>
new Vue({ el: "#app", data: { role: "", tagName: "" }, // define all custom methods within the 'methods' object methods: { showRole() { // 'this' keyword refers to the current Vue instance this.role = "developer"; this.tagName = event.target.tagName; } } });
</code></pre><p>
使用
<code>
event.target
</code>
将返回“
<code>
[object HTMLButtonElement]
</code>
”,而
<code>
event.target.tagName
</code>
将返回“
<code>
BUTTON
</code>
”。
</p><p><img
alt=
"Event object"
class=
"alignnone size-full wp-image-14143"
data-lazy-sizes=
"(max-width: 402px) 100vw, 402px"
data-lazy-src=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj.jpg"
data-lazy-srcset=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj.jpg 402w, https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj-300x190.jpg 300w"
height=
"255"
src=
"data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20402%20255'%3E%3C/svg%3E"
width=
"402"
/></p><noscript><img
alt=
"Event object"
class=
"alignnone size-full wp-image-14143"
height=
"255"
sizes=
"(max-width: 402px) 100vw, 402px"
src=
"img/f8145617a1b29741272a1a997f640584.png"
srcset=
"https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj.jpg 402w, https://javabeginnerstutorial.com/wp-content/uploads/2018/12/5_p2-event-obj-300x190.jpg 300w"
width=
"402"
/><h2>
与 Event 对象一起传递参数
</h2><p>
到目前为止,我们肯定知道两件事,
</p><ol><li>
将创建
<code>
Event
</code>
对象,并将其自动传递给触发事件时正在调用的方法。
</li><li>
只需在方法名称后面的括号内指定参数,即可将参数传递给这些方法非常容易。
</li></ol><p>
如果我们想使用此自动创建的
<code>
Event
</code>
对象将自己的参数
<em>
<strong>
沿
</strong>
</em>
传递,该怎么办? 我们也可以这样做吗?
</p><p>
答案是肯定的! 绝对没错!!
</p><p>
这里要记住的重点是
<em>
<strong>
的命名
</strong>
</em>
。 Vue 将原始 DOM 事件存储在名为“
<code>
$event
</code>
”的变量中。 注意不要覆盖或拼写错误,因为它是 Vue.js 使用的受保护名称,以了解这不是自定义参数,而是
<code>
Event
</code>
对象本身。
</p><p>
让我们对代码进行这些更改。
</p><p><strong>
Index.html (code snippet)
</strong></p><pre><code
class=
"language-html"
>
<
button v-on:mouseover="showRole('developer', $event)"
>
Hover over me!
<
/button
>
{{ role }}
<
p
>
{{ "Tag Name:" + tagName }}
<
/p
>
</code></pre><p><strong>
Index.js(代码段)
</strong></p><pre><code
class=
"language-javascript"
>
showRole(customRole, event) { // 'this' keyword refers to the current Vue instance this.role = customRole; this.tagName = event.target.tagName; }
</code></pre><p>
在总结之前,这里是供您欣赏的完整代码!
</p><p><strong>
Index.html
</strong></p><pre><code
class=
"language-html"
>
<
!DOCTYPE html
>
<
html
>
<
head
>
<
title
>
Hello Vue!
<
/title
>
<
!-- including Vue with development version CDN --
>
<
script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"
><
/script
>
<
/head
>
<
body
>
<
div id="app"
>
<
h2
>
Welcome
<
/h2
>
<
!-- Using key modifiers with keyboard events --
>
<
button v-on:keyup.enter="greet"
>
greet
<
/button
>
<
hr/
>
<
div
>
<
!-- Passing arguments along with original DOM event --
>
<
button v-on:mouseover="showRole('developer', $event)"
>
Hover over me!
<
/button
>
{{ role }}
<
p
>
{{ "Tag Name:" + tagName }}
<
/p
>
<
/div
>
<
/div
>
<
!-- including index.js file --
>
<
script src="index.js"
><
/script
>
<
/body
>
<
/html
>
</code></pre><p><strong>
Index.js
</strong></p><pre><code
class=
"language-javascript"
>
new Vue({ el: "#app", data: { role: "", tagName: "" }, // define all custom methods within the 'methods' object methods: { greet() { alert("Hi"); }, showRole(customRole, event) { // 'this' keyword refers to the current Vue instance this.role = customRole; this.tagName = event.target.tagName; } } });
</code></pre><p>
因此,我们现在可以将自定义参数与带有
<code>
$event
</code>
变量的自动创建的
<code>
Event
</code>
对象一起传递。 上面讨论的所有代码以及注释都可以在
<a
href=
"https://github.com/JBTAdmin/vuejs"
>
GitHub 存储库
</a>
中找到。
</p><p>
这使我们到了本主题的结尾。 祝您有美好的一天!
</p><div
class=
"sticky-nav"
style=
"font-size: 15px;"
><div
class=
"sticky-nav-image"
></div><div
class=
"sticky-nav-holder"
><div
class=
"sticky-nav_item"
><h6
class=
"heading-sm"
>
下一篇文章
</h6></div><h5
class=
"sticky-nav_heading "
style=
"font-size: 15px;"
><a
href=
"https://javabeginnerstutorial.com/vue-js/13-shorthands-for-v-bind-and-v-on/"
title=
"13\. Let’s use shorthands"
>
13.让我们使用速记
</a></h5></div></div>
</body>
</html></noscript>
\ No newline at end of file
docs/16.md
浏览文件 @
4abf8b8f
...
...
@@ -126,9 +126,9 @@ String is not Hi
* * *
###
如果其他 If
语句
###
`if-else if`
语句
`if-else if`
语句由多个
`if`
条件和
`else`
语句组成。 如果
*条件*
为真,则将执行随附的代码。 如果
*如果条件*
为假,则它将检查下一个
`if`
条件。如果条件为下一个下一个
*,则将执行附带的代码,否则将执行代码的`else`部分。 `If Else If
`语句仅将*
**布尔表达式**
*
视为有效条件。
`if-else if`
语句由多个
`if`
条件和
`else`
语句组成。 如果
*条件*
为真,则将执行随附的代码。 如果
`if`
条件为假,则它将检查下一个
`if`
条件。如果下一个条件为真,则将执行附带的代码,否则将执行代码的
`else`
部分。
`If Else If
`
语句仅将
***布尔表达式**
*
视为有效条件。
> 与其他语言不同,Java 不接受数字作为条件运算符。 它仅将*布尔表达式*视为返回`TRUE`或`FALSE`的条件。
>
...
...
docs/163.md
浏览文件 @
4abf8b8f
...
...
@@ -48,7 +48,7 @@ else:
a
=
42
```
如您所见,Python 代码更具可读性(尽管我也是一个有良好基础的 Java 开发人员,但我认为这是我的看法,因此我可以
重写
前面的示例以使其可读)。 如果您有
***缩进行(请仔细查看 python 代码中的缩进)**
*
,则表示它属于同一执行组。 例如,在 Java 中,它将不会:
如您所见,Python 代码更具可读性(尽管我也是一个有良好基础的 Java 开发人员,但我认为这是我的看法,因此我可以
覆盖
前面的示例以使其可读)。 如果您有
***缩进行(请仔细查看 python 代码中的缩进)**
*
,则表示它属于同一执行组。 例如,在 Java 中,它将不会:
```
java
if
(
a
==
42
)
...
...
@@ -106,7 +106,7 @@ IndentationError:unindent 与任何外部缩进级别都不匹配
标识符是用于标识变量,类,函数,模块或其他对象的名称。
在 Python 中,您可以以字母(大写或小写无关紧要)或下划线(_)开头,并在其后跟随零个或多个字母,数字和下划线。 标识符名称中不允许使用标点符号(例如@,$和
%
)。
在 Python 中,您可以以字母(大写或小写无关紧要)或下划线(_)开头,并在其后跟随零个或多个字母,数字和下划线。 标识符名称中不允许使用标点符号(例如@,$和
%
)。
该语言区分大小写,这意味着您可以拥有一个名为 my_variable 的变量和另一个名为 My_variable 的变量,它们将被视为不同的变量。 因此
**要小心**
,因为这在开发时也会引起问题。
...
...
docs/166.md
浏览文件 @
4abf8b8f
...
...
@@ -151,7 +151,7 @@ Spam, Spam, Spam, Spaaam!
### 字符串格式
字符串格式化在 Python 中很酷。 格式有两种版本:带
%
符号(类似于 C 的 printf 方法)和字符串本身的 format()方法。 但是,在大多数情况下,我将同时介绍这两种版本,第二种版本更好,更易于使用。
字符串格式化在 Python 中很酷。 格式有两种版本:带
%
符号(类似于 C 的 printf 方法)和字符串本身的 format()方法。 但是,在大多数情况下,我将同时介绍这两种版本,第二种版本更好,更易于使用。
让我们直接进入细节。
...
...
@@ -166,9 +166,9 @@ Spam, Spam, Spam, Spaaam!
'
My
name
is
Bob
and
I
am
31
years
young
!
'
```
如您所见,两个格式化选项之间没有太大区别。 但是,如果您查看第一个版本,则可以看到变量使用的占位符(
%s 和%
d)与第二个版本中的占位符不同。
如您所见,两个格式化选项之间没有太大区别。 但是,如果您查看第一个版本,则可以看到变量使用的占位符(
% s 和%
d)与第二个版本中的占位符不同。
关键是对于
%
格式,您必须告诉参数的类型以根据结果字符串中的格式启用 python。 这也意味着如果要多次打印变量,则必须重复变量。
关键是对于
%
格式,您必须告诉参数的类型以根据结果字符串中的格式启用 python。 这也意味着如果要多次打印变量,则必须重复变量。
格式函数与参数索引一起使用,并根据类型确定格式。 因此,您不必明确提及参数的类型。 如果您提供的参数数量与占位符相同,则可以保留参数索引。
...
...
@@ -185,21 +185,21 @@ IndexError: tuple index out of range
'
My
name
is
Bob
and
I
am
31
years
young
and
I
have
read
31
books
!
'
```
取决于您以后使用哪种格式,但是在本系列文章中,我将坚持使用格式功能。 但是,如果您更喜欢
%
,这里有一些字符以及它们在 format-string 中的作用:
*
**
%
c**
:字符
*
**
%
s**
:格式化前通过 str()进行字符串转换
*
**
%
i**
:带符号的十进制整数
*
**
%
d**
:带符号的十进制整数
*
**
%
u**
:无符号十进制整数
*
**
%
o**
:弱八进制
*
**
%
x**
:十六进制整数(小写字母)
*
**
%
X**
:十六进制整数(大写字母)
*
**
%
e**
:指数符号(小写的“ e”)
*
**
%
E**
:指数表示法(大写的“ E”)
*
**
%
f**
:浮点实数
*
**
%g**
:%f 和%
e 中的较短者
*
**
%G**
:%f 和%
E 中的较短者
取决于您以后使用哪种格式,但是在本系列文章中,我将坚持使用格式功能。 但是,如果您更喜欢
%
,这里有一些字符以及它们在 format-string 中的作用:
*
**
%
c**
:字符
*
**
%
s**
:格式化前通过 str()进行字符串转换
*
**
%
i**
:带符号的十进制整数
*
**
%
d**
:带符号的十进制整数
*
**
%
u**
:无符号十进制整数
*
**
%
o**
:弱八进制
*
**
%
x**
:十六进制整数(小写字母)
*
**
%
X**
:十六进制整数(大写字母)
*
**
%
e**
:指数符号(小写的“ e”)
*
**
%
E**
:指数表示法(大写的“ E”)
*
**
%
f**
:浮点实数
*
**
% g**
:% f 和%
e 中的较短者
*
**
% G**
:% f 和%
E 中的较短者
### 参考文献
...
...
docs/17.md
浏览文件 @
4abf8b8f
...
...
@@ -79,7 +79,7 @@ class JBTClass {
## 使用克隆
我们还可以使用
`CloneO()`
方法创建现有对象的
*
的
副本*
。
我们还可以使用
`CloneO()`
方法创建现有对象的
*副本*
。
```
java
/*
...
...
docs/178.md
浏览文件 @
4abf8b8f
...
...
@@ -350,7 +350,7 @@ for result in (apply_processing to(item) for item in iterable):
#### 实践中的生成器表达式
这是上一本书的清单示例,使用表格 2 进行了
重写
:
这是上一本书的清单示例,使用表格 2 进行了
覆盖
:
```
java
#
Example:
Generator
Expressions
...
...
docs/189.md
浏览文件 @
4abf8b8f
...
...
@@ -12,7 +12,7 @@
为此,您可以创建自己的自定义解决方案或使用 Hibernate Envers,它是 Hibernate 核心的一部分,提供了开箱即用的功能。
仅提及一个场景:您是汽车零售应用的开发人员。 有人出售一辆豪华轿车的正常价格要低 80
%
的汽车,却没人知道谁改变了价格。 最后,您会感到内 gui,因为您没有监视,因此必须在很短的时间内解决此问题。
仅提及一个场景:您是汽车零售应用的开发人员。 有人出售一辆豪华轿车的正常价格要低 80
%
的汽车,却没人知道谁改变了价格。 最后,您会感到内 gui,因为您没有监视,因此必须在很短的时间内解决此问题。
如果听起来很绝望,并且您想袖手旁观,请继续阅读。
...
...
docs/23.md
浏览文件 @
4abf8b8f
...
...
@@ -34,7 +34,7 @@ var : Name of the variable
## Java 中的变量类型
Java 中的变量可以在代码中的任何位置定义(
*在类
*
旁,
*
在方法旁或作为方法参数*
),并且可以具有不同的修饰符。 根据这些条件,Java 中的变量可以分为四类。
Java 中的变量可以在代码中的任何位置定义(
*在类
旁,
在方法旁或作为方法参数*
),并且可以具有不同的修饰符。 根据这些条件,Java 中的变量可以分为四类。
*
实例变量
*
静态变量
...
...
docs/25.md
浏览文件 @
4abf8b8f
...
...
@@ -36,7 +36,7 @@ private int pageNumber;
*
*实例变量*
无法具有
`strictfp`
修饰符。
*
*实例变量*
无法具有
`native`
修饰符。
*
*实例变量*
不能具有
`static`
修饰符,因为它会变为类级别的变量。
*
实例变量将获得默认值,这意味着无需初始化即可使用实例变量。 对于
*局部变量
,情况并非如此。*
*
实例变量将获得默认值,这意味着无需初始化即可使用实例变量。 对于
*局部变量
*
,情况并非如此。
| 实例变量类型 | 默认值 |
| 布尔值 | 假 |
...
...
docs/27.md
浏览文件 @
4abf8b8f
...
...
@@ -62,7 +62,7 @@ public void setCount(int count)
}
```
此关键字是解决歧义所必需的。 如果没有
**这个**
,编译器将无法知道我们是否要为其自身分配
*计数*
方法参数值。 如果删除
**这个**
关键字,则仍然会收到编译警告。
`this`
关键字是解决歧义所必需的。 如果没有
`this`
,编译器将无法知道我们是否要为其自身分配
*计数*
方法参数值。 如果删除
`this`
关键字,则仍然会收到编译警告。
## 超类场遮蔽
...
...
docs/29.md
浏览文件 @
4abf8b8f
...
...
@@ -4,18 +4,18 @@
Java for 循环和增强的 for 循环是一种控制流语句,它提供了一种紧凑的方法来迭代
**值**
范围。 循环的 重复遍历代码,直到满足特定条件为止。
在此期间,Java
为
*循环*
添加了不同类型的
*。*
在此期间,Java
`for`
*循环*
具有不同类型。
*
for 循环
*
增强了 for 循环或 foreach
## for 循环
for 循环是 3 个表达式的组合,需要理解才能有效地
将其
***用于循环**
*
。
for 循环是 3 个表达式的组合,需要理解才能有效地
使用
`for`
循环
。
*
*初始化*
表达式初始化循环; 它会在循环开始时执行一次。
*
*初始化*
表达式初始化循环; 它会在循环开始时执行一次。
*
*终止表达式*
用于停止循环。 每次迭代都会对它进行评估,并且当
*终止*
表达式的评估结果为
`false`
时,循环终止。
*
通过循环的每次迭代后,将调用
*
增量*
/ decrement
表达式。
*
通过循环的每次迭代后,将调用
*
递增/递减*
表达式。
### 循环的*语法*
...
...
@@ -173,5 +173,5 @@ are Current Index: 3
you
?
Current
Index:
4
```
可以在
[
的此处找到
](
https://github.com/JBTAdmin/java-tutorial/blob/master/for_loop.java
)[
的代码 *,用于循环* 和 *,用于循环* 。
]
(https://github.com/JBTAdmin/java-tutorial/blob/master/for_loop.java)
可以在
[
此处
](
https://github.com/JBTAdmin/java-tutorial/blob/master/for_loop.java
)
找到
`for`
循环的代码。
docs/31.md
浏览文件 @
4abf8b8f
...
...
@@ -28,8 +28,8 @@ IO 异常。
### 非受检异常
1.
***非受检异常**
*
是 *
RuntimeException
*
及其任何*
子类
*
。
2.
编译器不会强制程序员捕获非受检异常或在
throws
子句中声明它。
1.
***非受检异常**
*
是`RuntimeException`
及其任何*
子类
*
。
2.
编译器不会强制程序员捕获非受检异常或在
`throws`
子句中声明它。
3.
程序员甚至可能不知道会引发异常。
4.
受检异常必须在编译时捕获。
5.
运行时异常不是必需的。
...
...
docs/33.md
浏览文件 @
4abf8b8f
...
...
@@ -114,9 +114,9 @@ returning from finally block
### Explanation
对于方法调用,
*riskyAction*
(“ hello”)
:try 块成功并打印“ try 块中的 hello”。 由于它具有 return 语句,因此控制权转移到 finally 块。 finally 块还具有一个 return 语句,该语句将覆盖 try 块中的语句,因此该方法将返回“ finally 块返回”并打印到控制台。
对于方法调用,
`riskyAction("hello")`
:try 块成功并打印“ try 块中的 hello”。 由于它具有 return 语句,因此控制权转移到 finally 块。 finally 块还具有一个 return 语句,该语句将覆盖 try 块中的语句,因此该方法将返回“ finally 块返回”并打印到控制台。
对于
*riskyAction*
(“ howdy”)
:try 块引发异常,该异常在 catch 块中处理,该异常打印“ catch 块中的 howdy”。 就像我们在 try 块成功的情况下看到的一样,finally 块的 return 语句也覆盖 catch 块中的 return 语句。 结果,该方法返回“从 finally 块返回”并打印到控制台。
对于
`riskyAction("howdy")`
:try 块引发异常,该异常在 catch 块中处理,该异常打印“ catch 块中的 howdy”。 就像我们在 try 块成功的情况下看到的一样,finally 块的 return 语句也覆盖 catch 块中的 return 语句。 结果,该方法返回“从 finally 块返回”并打印到控制台。
**注意**
:由于无论是否发生异常,finally 块总是被执行,因此,如果它具有 return 语句,则可以预期到意外的结果,并且可能变得难以调试。
**作为一种好的做法,最好避免在 finally 块中编写 return 语句。**
...
...
docs/35.md
浏览文件 @
4abf8b8f
...
...
@@ -56,7 +56,7 @@
*
重载的方法
***可能**
*抛出不同的异常,*
**更宽或更窄的**
*
没有限制。
*
**超类**
中的方法也可以在子类中重载。
*
多态适用于覆盖和重载。
*
基于
**
参考
类型**
,确定在
***编译时间**
*
上确定将调用哪个重载方法。
*
基于
**
引用
类型**
,确定在
***编译时间**
*
上确定将调用哪个重载方法。
方法重载示例
...
...
@@ -106,11 +106,11 @@ public class MethodOverloading {
*
使用相同的方法名称但使用
*不同的参数*
称为重载。
*
**
*构造器**
*
也可以重载
*
**
构造器**
也可以重载
*
重载的方法必须设置
*不同的*
参数。
*
重载方法
***可能**
* 具有不同的返回类型 *
**。**
*
*
重载的方法
***可能**
* 具有*
不同的访问修饰符。
*
*
重载的方法
***可能会**
* 抛出不同的异常 *
**更宽或更窄的**
*
没有限制
*
重载方法
**可能**
具有不同的返回类型。
*
重载的方法
**可能**
具有
*不同的访问修饰符*
。
*
重载的方法
**可能会**
抛出不同的异常,
**更宽或更窄的**
没有限制。
*
**超类**
中的方法也可以在子类中重载。
*
多态适用于覆盖不超载
*
基于
**参考类型**
,确定在
***编译时间**
*
上确定将调用哪个重载方法。
\ No newline at end of file
*
多态适用于覆盖和重载。
*
基于
**引用类型**
,确定在
**编译时**
确定将调用哪个重载方法。
\ No newline at end of file
docs/36.md
浏览文件 @
4abf8b8f
...
...
@@ -2,7 +2,7 @@
> 原文: [https://javabeginnerstutorial.com/core-java-tutorial/java-overriding/](https://javabeginnerstutorial.com/core-java-tutorial/java-overriding/)
从其
**超类**
继承该方法的类可以选择
**覆盖**
它。 覆盖的好处是可以定义特定于特定类的行为的能力。 对于具体的子类,如果在层次结构中没有其他超类实现抽象类中定义的所有方法,则将其强制实现。 覆盖有时称为
*运行时绑定*
。 这意味着将调用哪个
重写
方法将由引用类型而不是实例类型确定。
从其
**超类**
继承该方法的类可以选择
**覆盖**
它。 覆盖的好处是可以定义特定于特定类的行为的能力。 对于具体的子类,如果在层次结构中没有其他超类实现抽象类中定义的所有方法,则将其强制实现。 覆盖有时称为
*运行时绑定*
。 这意味着将调用哪个
覆盖
方法将由引用类型而不是实例类型确定。
* * *
...
...
@@ -31,17 +31,17 @@ System.out.println("Show method of Sub class");
## 方法替代规则
*
覆盖方法
*不能
使
*
具有比被覆盖的方法更多的
*限制性访问修饰符*
,但可以更少。
*
覆盖方法
*不能*
具有比被覆盖的方法更多的
*限制性访问修饰符*
,但可以更少。
*
参数列表必须与覆盖的方法完全匹配,如果不匹配,则很可能是您正在重载该方法。
*
返回类型必须与在
Superclass 中的重写
方法中声明的返回类型相同或为该子类型的子类型。
*
覆盖方法
*可以*
抛出任何
*非受检异常(运行时)*
,但是它可以抛出比被覆盖方法声明的范围更广或更新的检查异常,但不能抛出更少或狭窄的
检查 例外
。
*
*不能覆盖最终的
*
方法
*。*
*
*静态*
方法
*无法覆盖*
。 静态方法看起来可以覆盖,但它是隐藏的。
*
如果
*方法无法继承,则无法
重写*
。
**
*
返回类型必须与在
超类中的覆盖
方法中声明的返回类型相同或为该子类型的子类型。
*
覆盖方法
*可以*
抛出任何
*非受检异常(运行时)*
,但是它可以抛出比被覆盖方法声明的范围更广或更新的检查异常,但不能抛出更少或狭窄的
异常检查
。
*
*不能覆盖最终的
方法*
。
*
*静态*
方法
*无法覆盖*
。 静态方法看起来可以覆盖,但它是隐藏的。
*
如果
*方法无法继承,则无法
覆盖*
。
## 从超类调用 Overridden 方法
如果要在执行子类方法之前调用超类的
重写
方法,该怎么办。 您可以使用 SUPER 关键字。
如果要在执行子类方法之前调用超类的
覆盖
方法,该怎么办。 您可以使用 SUPER 关键字。
```
java
public
class
SubClass
extends
superclass
{
...
...
@@ -102,9 +102,9 @@ class superclass {
## 备忘单
*
*不能
重写
构造器*
。
*
*不能
覆盖
构造器*
。
*
覆盖方法必须具有相同的参数集。
*
重写
的方法必须具有相同的返回类型。 这些返回类型也可以是子类(
***协变返回**
*
)。
*
覆盖
的方法必须具有相同的返回类型。 这些返回类型也可以是子类(
***协变返回**
*
)。
*
覆盖的方法
**无法**
具有更严格的访问修饰符。
*
覆盖的方法
**无法**
抛出
*新的或更广泛的*
异常(
***受检**
*
)。 看下面的例子
*
覆盖的方法
**可以引发**
任何
*非受检异常*
。
...
...
docs/37.md
浏览文件 @
4abf8b8f
...
...
@@ -49,22 +49,22 @@ Java 8 引入了默认方法的概念。 现在,如果接口不是抽象的,
接口需要遵循一些规则。
*
所有接口方法都是
*隐式公开和抽象*
。 即使您使用关键字,也不会产生问题,如第二个 Method 声明中所见。 (在 Java 8 之前)
*
接口只能声明
*常量*
。 实例变量是不允许的。 这意味着接口内的所有变量必须是公开的,静态的,最终的。 接口内的变量是
*隐式公开静态最终*
。
*
所有接口方法都是
*隐式公开抽象*
的
。 即使您使用关键字,也不会产生问题,如第二个 Method 声明中所见。 (在 Java 8 之前)
*
接口只能声明
*常量*
。 实例变量是不允许的。 这意味着接口内的所有变量必须是公开的,静态的,最终的。 接口内的变量是
*隐式公开静态最终*
的
。
*
接口方法不能为
*静态*
。 (在 Java 8 之前)
*
接口方法不能是
*final,strictfp 或本机*
。
*
该接口可以
*扩展*
一个或多个其他接口。 注意:该接口只能扩展另一个接口。
*
接口方法不能是
`final`
,
`strictfp`
或
`native`
。
*
该接口可以
*扩展*
一个或多个其他接口。 注意:该接口只能扩展另一个接口。
## 接口声明规则(JAVA 8)
接口逻辑在 Java 8 中已更改。因此,上述某些逻辑不适用于 Java 8 之后的接口。
*
所有接口方法都可以具有
“抽象”,“静态”或“默认”
修饰符。
*
如果对方法使用
static 或 default
修饰符,则接口方法可以具有主体。
*
所有接口方法都可以具有
`abstract`
,
`static`
或默认
修饰符。
*
如果对方法使用
`static`
或
`default`
修饰符,则接口方法可以具有主体。
## 接口与抽象类
*接口*
就像
具有
*100%抽象类*
一样。 接口不能具有
*非抽象方法*
,而抽象类则可以。 一个类可以实现多个接口,而只能扩展一个类。 由于抽象类属于类的层次结构,因此它们可以扩展其他类,而接口只能扩展接口。
*接口*
就像
*100% 抽象类*
一样。 接口不能具有
*非抽象方法*
,而抽象类则可以。 一个类可以实现多个接口,而只能扩展一个类。 由于抽象类属于类的层次结构,因此它们可以扩展其他类,而接口只能扩展接口。
## 在类中使用接口
...
...
@@ -154,7 +154,7 @@ abstract class InterfaceExampleThree implements interfaceTwo {
### 重点
*
接口是 100
%
抽象类(
***隐式**
*
)。 在 Java 8 之后,它不成立。
*
接口是 100
%
抽象类(
***隐式**
*
)。 在 Java 8 之后,它不成立。
*
接口可以由任何继承树中的任何类实现。
*
接口中的所有方法都是抽象的。 (在 Java 8 中为 abstract / static / default)
*
接口可以具有
**常量**
,这些常量是公开的,静态的和最终的(
***隐式**
*
)。
...
...
docs/38.md
浏览文件 @
4abf8b8f
...
...
@@ -24,7 +24,7 @@ Java 继承定义了超类及其子类之间的 is-a 关系。 这意味着只
*
父类的所有
**公开变量**
将由子类继承。
*
所有子类将仅继承
*同一包中的所有默认变量*
。 包之外的子类将不会继承任何默认成员。
*
**私有成员**
无法由子类继承,因为它们对子类不可见,因此,子类可以使用相同的名称创建 Method 或属性,而不会出现任何问题。
*
*
所有子类都将继承
*同一包或外部包*
(
**与默认设置不同**
)中的受保护变量。
*
所有子类都将继承
*同一包或外部包*
(
**与默认设置不同**
)中的受保护变量。
*
未继承的方法
**不能被覆盖**
。 因此,覆盖的规则无法应用于这些方法。 但是方法仍然可以在子类中定义,尽管这些方法将不会被覆盖。 相反,它代表一个新的方法。
*
静态方法或变量不参与继承。
*
即使静态方法或变量不参与继承且不能被覆盖,也可以在子类中重新定义它们。 重新定义不称为覆盖,而是隐藏。
...
...
docs/41.md
浏览文件 @
4abf8b8f
...
...
@@ -12,7 +12,7 @@
*
*方法*
*
*变量*
*
*
类嵌套在另一个类*
中
*
*
嵌套在另一个类中的类*
*
*初始化块*
## 不适用于
...
...
docs/46.md
浏览文件 @
4abf8b8f
...
...
@@ -17,7 +17,7 @@ Java HashMap 是基于 HashTable 的 Map 实现。 这就是为什么面试官
## 创建 HashMap
在创建 HashMap 时未定义任何参数时,将使用默认的初始容量(16)和默认的负载系数(0.75)。 该 HashMap 最多可以包含 16 个元素,并且在插入第 13 个元素时会调整 HashMap 的大小。 这是因为负载系数为 75
%
(。75),并且在添加第 13 个元素(12 + 1)时将超过此阈值。
在创建 HashMap 时未定义任何参数时,将使用默认的初始容量(16)和默认的负载系数(0.75)。 该 HashMap 最多可以包含 16 个元素,并且在插入第 13 个元素时会调整 HashMap 的大小。 这是因为负载系数为 75
%
(。75),并且在添加第 13 个元素(12 + 1)时将超过此阈值。
您还可以提供初始容量和 loadFactor。 但是初始容量不能超过最大容量(2 功率 30),并且负载系数不能为零或负数。
...
...
docs/59.md
浏览文件 @
4abf8b8f
...
...
@@ -155,7 +155,7 @@ private Workday(String representation) {
枚举字段很好,但是如何访问该字段? 我告诉过您,新的表示形式是表示该枚举的值,但是当前我们无法在枚举本身之外访问该属性。
除此之外,还有一个基本方法可用于所有枚举:name()以字符串形式返回当前值的名称。 这意味着在基本情况下,您可以使用此方法显示枚举的值(例如,在 UI 或日志条目中)。
**当然**
也存在 toString()函数,但是有时开发人员会
重写
它,以使其对程序员更友好(或用户友好?)显示。 作为最佳实践,如果要显示枚举的名称,建议您使用 name()方法而不是 toString()。
除此之外,还有一个基本方法可用于所有枚举:name()以字符串形式返回当前值的名称。 这意味着在基本情况下,您可以使用此方法显示枚举的值(例如,在 UI 或日志条目中)。
**当然**
也存在 toString()函数,但是有时开发人员会
覆盖
它,以使其对程序员更友好(或用户友好?)显示。 作为最佳实践,如果要显示枚举的名称,建议您使用 name()方法而不是 toString()。
要从上面更改表示示例(当我们遍历 values()时),只需编写一个函数,该函数将返回新的变量表示并在迭代中使用它:
...
...
docs/62.md
浏览文件 @
4abf8b8f
...
...
@@ -99,7 +99,7 @@ Thread bat = new Thread(r);
将相同的目标分配给多个线程意味着多个执行线程将运行同一作业(并且同一作业将执行多次)。
> Thread 类本身实现了 Runnable。 (毕竟,它有一个我们要
重写
的 run()方法。)这意味着您可以将 Thread 传递给另一个 Thread 的构造器。
> Thread 类本身实现了 Runnable。 (毕竟,它有一个我们要
覆盖
的 run()方法。)这意味着您可以将 Thread 传递给另一个 Thread 的构造器。
## Thread 类中的重载构造器:
...
...
docs/64.md
浏览文件 @
4abf8b8f
...
...
@@ -101,7 +101,7 @@ interface NoParameterInterface {
### 单参数 Lambda 表达式
您已经看到了不带参数的 Lambda 表达式示例。 我们来看一个带有单个参数的 Lambda 表达式示例。 为此,创建一个名为
**SingleParameter**
的类,并将以下代码粘贴在那里。
您已经看到了不带参数的 Lambda 表达式示例。 我们来看一个带有单个参数的 Lambda 表达式示例。 为此,创建一个名为
`SingleParameter`
的类,并将以下代码粘贴在那里。
```
java
public
class
SingleParameter
{
...
...
docs/65.md
浏览文件 @
4abf8b8f
...
...
@@ -52,7 +52,7 @@ lambda 表达式的关键是->箭头符号。
*
return 语句是可选的
*
表达式主体周围的花括号是可选的—如果表达式主体包含单个语句
因为我们的简单表达式符合上述所有四个要点,所以我们可以像这样
重写
lambda 表达式:
因为我们的简单表达式符合上述所有四个要点,所以我们可以像这样
覆盖
lambda 表达式:
```
java
x
->
x
*
x
;
...
...
docs/84.md
浏览文件 @
4abf8b8f
...
...
@@ -16,7 +16,7 @@
[
![Firefox_Download
](
img/02bd3a668c1d9c0d492b54ad13fd2d3f.png
)
[]
(https://javabeginnerstutorial.com/wp-content/uploads/2016/08/Download-Firefox.jpg)
下载设置文件后,它看起来像这样。
![
Firefox .exe file
](
img/914298339f17ebc56235411b9a2315e1.png
)
因此,继续并单击 exe 文件。 提取达到 100
%
后,将弹出 Mozilla Firefox 安装向导。 点击“下一步”按钮。
因此,继续并单击 exe 文件。 提取达到 100
%
后,将弹出 Mozilla Firefox 安装向导。 点击“下一步”按钮。
![
Firefox Setup Wizard 1
](
img/e632b3b7f694e709b33bf13c183582d5.png
)
您可以很好地使用标准作为设置类型。 完全留给您方便。 我选择“标准”,然后单击“下一步”。
![
Firefox Setup Wizard 2
](
img/3d3159103f060a91c2039d00e300f47c.png
)
...
...
docs/9.md
浏览文件 @
4abf8b8f
...
...
@@ -39,7 +39,7 @@ public class ConstructorExample {
构造器的语法不同于下面描述的方法。
*
构造器不能具有非访问修饰符,而方法可以。
*
构造器不能具有返回类型(
*包括
void*
),而方法需要它。
*
构造器不能具有返回类型(
*包括
`void`*
),而方法需要它。
*
构造器名称必须与类名称相同,而方法不受限制。
*
根据 Java 命名约定,方法名称应为驼峰式,而构造方法名称应以大写字母开头。
...
...
@@ -113,7 +113,7 @@ Inside Constructor
This
is
in
method
```
类中的构造器必须与给定的类具有相同的名称。 构造器的语法
*不包含返回类型*
,因为构造器从不返回值。 构造器还可以包括各种类型的参数。 使用
`new`
运算符调用构造器时,类型必须与构造器定义中指定的类型匹配。
类中的构造器必须与给定的类具有相同的名称。 构造器的语法
*不包含返回类型*
,因为构造器从不返回值。 构造器还可以包括各种类型的参数。 使用
`new`
运算符调用构造器时,类型必须与构造器定义中指定的类型匹配。
如果未提供显式构造器,则 Java 提供一个
*默认构造器*
,其中
**不带参数**
并且不执行任何特殊操作或初始化。 隐式默认构造器执行的唯一操作是使用
`super()`
调用来调用超类构造器。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录