学习笔记总结

Linux
第一章
Linux的简介

 一、操作系统(简称:OS)    

例如IOS其实就是iphone的OS。

1.操作系统是电脑的核心系统,其他系统或软件都要运行在操作系统之上。

负责计算机操作运行的一个软件。


2.市面上常见的三大系统:Windows Linux MacOS

专业扫盲(IOS是手机苹果系统,MacOS是电脑苹果系统)


系统 优点 缺点

Windows 适用于绝大部分软件。使用人数最多,图形界面友好。 闭源(不公开源代码),经常打补丁更新,容易被攻击,收费昂贵。

Linux 免费开源(公开源代码供他人学习),安全性公认第一,效率最快,黑客必备,全球97%服务器安装在Linux系统上 图形界面不友好,一般都是通过cmd小黑窗进行操作。

MacOS 图形界面非常独特,非常高大上,机型轻巧,便于携带,商务必备。 闭源,收费昂贵


3.linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到 业界的认可,目前很多企业级的项目都会部署到Linux系统上。


二.虚拟机的简介(简称VM)

1.说明:由于一台电脑不能直接同时存在多个操作系统。

我们电脑都是Windows系统,所以如果想装Linux操作系统,只能借助虚拟机实现。


2.什么是虚拟机:

通过一个软件模拟的具有完整系统功能的,运行在一个完全隔离环境的 计算机系统。


3.常见的虚拟机:VMWare 、 ware(software软件)。

Linux操作系统
什么是操作系统
操作系统简称:OS 。     例如IOS其实就是iphone的OS 操作系统是电脑的核心系统,其他系统或软件都要运行在操作系统之上。 负责计算机操作运行的一个软件。 市面上常见的三大系统:Windows   Linux    MacOS 专业扫盲(IOS是手机苹果系统,MacOS是电脑苹果系统

linux是什么
linux是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到 业界的认可,目前很多企业级的项目都会部署到Linux系统上。 Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)上学时出于个人爱好而编写的。 扫盲:很多人Linux和Unix傻傻分不清。大概这样理解:Linux是根据Unix创新而来。 所以Linux的使用率和功能远远超过Unix。

linux的发行版本
什么是Linux的发行版:Linux仅仅只是一个操作系统,并不能直接使用, 而是需要借助一些外围程序,例如图形界面,文本编辑等基本软件合并。 理解为Linux仅仅是一个引擎,想要使用还是需要装在哪辆车的身上。 主要的 Linux 发行版有:(虽然名字不一样,但是都是使用的Linux操作系统核心。) ●Red Hat ●Fedora ●Debian ●Ubuntu     ●CentOS (本书采用这个发行版进行教学,原因:免费,最稳定,使用人数最多。)

虚拟机简介
说明:由于一台电脑不能直接同时存在多个操作系统。 我们电脑都是Windows系统,所以如果想装Linux操作系统,只能借助虚拟机实现。 什么是虚拟机:通过一个软件模拟的具有完整系统功能的,运行在一个完全隔离环境的    计算机系统。 常见的虚拟机软件:VMWare    VM(虚拟机)   ware(software 软件)      

为什么需要远程连接
inux一般是作为服务器的存放位置,所以一般将Linux系统所在的机器, 存放在较为安全且气温较低的位置,例如机房,例如海底,山里,湖里等。 程序员不可能去这些地方来控制linux系统。 所以就需要借助远程连接工具

什么是SSH工具
远程连接工具简称  SSH确保两台计算机之间进行正常通讯。 常见的SSH工具: A.  Xftp7.0       主要负责文件的传输到服务器。 B.  Xshell7.0    主要负责通过命令来控制服务器,例如关机,删除文件,修改文件等操作。

如何通过Xftp远程连接Linux
0.保证在同一个局域网下,例如机房环境,例如本机环境,或够买公网的服务器。 1.获取Linux的IP地址。 2.进入虚拟机打开活动--终端--输入ifconfig,最上面的一串就是Linux的IP地址 3.回到Xftp,文件-->新建-->将Linux的ip地址复制到主机那一栏即可。 4.解决乱码--新建会话属性-选项-编码

了解基本Linux命令
通过命令可以对Linux系统进行任意操控。 也是正式开发的必备技能。 Linux命令的特点: 1.严格区分大小写 2.使用tab键快速补齐命令

常见命令
1.ls  输出当前目录下所有文件夹 2.clear  清屏 3.cd  xxx  将路径切换到xxx路径处。(linux的根路径为/)

系统目录结构
pt(可选目录):该目录是用于存放可选应用程序的安装目录。通常,第三方软件包会将其安装到这个目录中。 /root(根用户目录):这是root用户的主目录。root用户是Linux系统中具有最高权限的用户。 /tmp(临时目录):该目录用于存储临时文件。这些文件在系统重启时被删除。 /bin(二进制目录):这个目录包含了一些基本的可执行命令和工具。例如,ls、cd等命令就位于该目录。 /boot(引导目录):该目录包含了用于系统保证正常运行的文件 /etc(配置目录):该目录包含了系统的配置文件。 /home(主目录):每个用户在系统中都有一个主目录,用于存储个人文件和文档。 /lib(库目录):该目录包含了系统所需的共享库文件。这些库文件由应用程序调用,提供特定功能的支持。

绝对路径和相对路径
/开始的目录就是绝对路径。例如 /boot,表示根路径下的boot目录。 反之就是相对路径,例如boot/user,表示当前路径下的boot目录下的user目录。 常见符号:.表示当前路径。   ..表示返回上一级目录。 通过pwd命令来查看当前路径。 通过cd xx 表示切换路径

2.4 基本命令

2.4.1 目录操作类命令

mkdir 命令(make directories)用来创建目录,语法格式如下:

mkdir [参数选项] [目录名称]

mkdir命令参数及其作用
参数    说明
-p    用于创建级联目录(如AA/BB/CC)
例如:

root@MyPC:~# mkdir A

root@MyPC:~# ls

A

root@MyPC:~# mkdir A/B

root@MyPC:~# ls A

B

root@MyPC:~# mkdir -p AA/BB/CC

root@MyPC:~# ls -R  AA        //递归查看AA目录

AA:

BB

AA/BB:

CC

rm 命令用来删除文件或目录,该命令操作语法格式如下:

rm [参数选项] [文件或目录名称]

rm命令参数及其作用

参数    说明
-i    提示是否删除
-r    用于删除目录
-f    用于强制删除文件或目录
例如:

root@MyPC:~# mkdir test

root@MyPC:~# ls

test

root@MyPC:~# rm -rf test        //加参数删除

root@MyPC:~# ls

2.4.2 文件操作类命令
touch 命令用来创建空白文件,如果改文件存在,则表示修改当前文件时间,语法如下:

touch [参数选项] [文件名称]

touch命令参数及其作用

参数    说明
-a    修改文件的Access时间(Atime)会导致Ctime时间变化
-m    修改文件内容的Modification时间(Mtime)会导致Ctime时间变化
-t    指定时间戳“[[CC]YY][ MMDDhhmm [.ss]”
-r    用其他文件的时间戳
例如:

root@MyPC:~# touch 1.txt        //创建1.txt

root@MyPC:~# ll 1.txt

-rw-r--r-- 1 root root07月10 11:37 1.txt

root@MyPC:~# touch 1.txt        //更新Mtime

root@MyPC:~# ll 1.txt

-rw-r--r-- 1 root root07月10 11:43 1.txt

root@MyPC:~# touch -r 1.txt  2.txt      //用1.txtd 时间戳创建2.txt

root@MyPC:~# ll 2.txt

-rw-r--r-- 1 root root07月10 11:43 2.txt

cp 命令用来赋值文件或文件目录,语法如下:

cp [参数选项] 源文件|原目录 目标文件|目标目录

在Linux系统中,复制操作具体分为3种情况:

① 如果目标是目录,则把源文件复制到该目录中

② 如果目标不存在,则执行正常的复制操作

③ 如果目标是同名文件,则会覆盖

cp命令参数及其作用

参数    说明
-r    递归赋值目录
-a    复制文件时保留源source的原始属性(包括软链接属性)
-i    提示是否覆盖
-f            用于强制覆盖
例如:

root@MyPC:~# touch 1.txt ; mkdir A

root@MyPC:~# cp 1.txt 2.txt ; cp 1.txt A

root@MyPC:~# ls 2.txt A

2.txt

A:

1.txt

root@MyPC:~# cp -r A B

root@MyPC:~# ls B

1.txt

mv 命令用来重命名或者移动文件/目录,如果在同目录中对文件或者目录进行mv操作,其实相当于重命名,语法如下:

mv [参数选项] 源文件|原目录 目标文件|目标目录

在Linux系统中共,mv命令操作具体分为4种情况

① 如果源和目标处于同一目录下,则执行改名操作

② 如果目标是目录,则把源文件 | 源目录移动到该目录中

③ 如果目标不存在,则执行正常的复制操作

④ 如果目标是同名文件,则会覆盖

mv命令参数及其作用

参数    说明
-r    递归移动目录
-i    提示是否覆盖
-f    用于强制覆盖
例如:

root@MyPC:~# ls

1.txt 2.txt A B

root@MyPC:~# mv 1.txt new1.txt

root@MyPC:~# mv 2.txt A

root@MyPC:~# ls ; ls A

A B new1.txt

1.txt 2.txt

ln 命令(link)用来为文件创建链接,链接分为硬链接和符号链接两种,默认是硬链接,语法如下:

ln [参数选项] 源文件或目录 目标文件或目录

ln命令参数及其作用
参数    说明
-s    创建符号链接而非硬链接
例如:

root@MyPC:~# touch 1.txt

root@MyPC:~# ln -s 1.txt link.txt

root@MyPC:~# ls -l link.txt

lrwxrwxrwx 1 root root 5 7月 10 12:37 link.txt -> 1.txt

注意:建立硬性链接时,链接文件和被链接文件必须位于同一个文件系统中,并不能建立指向目录的硬链接,而对符号链接,则不存在这个问题,在做符号连接到其它目录的时候一定要使用绝对路径

2.4.3 文件查看类命令

cat 命令用来查看一个文件的内容并显示在屏幕上,一般用于查看内容较少的文件,语法如下:

cat [参数选项] 文件名

cat命令参数及其作用
参数    说明
-b    显示非空行的行号
-n    显示所有行的行号
例如:

root@MyPC:~# echo"hello" > 2.txt        //写内容

root@MyPC:~# echo"" >> 2.txt        //追加内容

root@MyPC:~# cat -n 2.txt

                        1 hello

                        2

root@MyPC:~# cat  -b 2.txt

                        1 hello

more/less 命令用来分屏查看一个文件的内容并显示在屏幕上,一般用于查看内容比较多的文件,语法如下:

more/less [参数选项] 文件名

例如:

root@MyPC:~# more 2.txt

hello

root@MyPC:~# less 2.txt

hello

小提示:more/lee命令可以分屏显示内如(按p提前结束)。more/less都可以使用空格进行向下翻页,但比more命令好在还可以用上下键翻页查看

head/tail命令用来查看文件的前/后十行,如果加“-n”参数选项则显示文件前/后n行,语法如下:

head/tail [参数选项] 文件名

例如:

root@MyPC:~# head /etc/passwd        //显示前十行

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

sys:x:3:3:sys:/dev:/usr/sbin/nologin

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/usr/sbin/nologin

man:x:6:12:man:/var/spool/lpd:/usr/sbin/nologin

lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin

mail:x:8:8:mail:/var/mail:/usr/sbin/nologin

news:x:9:9:news:var/spool/news:/usr/sbin/nologin

root@MyPC:~# head -2 /etc/passwd        //显示前两行

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

为什么需要对Linux进行远程连接

因为linux是作为服务器的存放位置,而服务器对环境的要求非常高。需要凉快,安全的地方,所以一般部署在机房,海底,山洞等地方。所以程序员不可能去这里上班。

什么是SSH工具

Ssh简称远程连接工具用于确保两台计算机之间进行正常通讯。

常见的SSH工具如下:

XShell:通过命令控制服务器
XFtp:传输文件
如何通过SSH工具连接到远程的Linux服务器。

需要知道远程Linux服务器的IP地址以及用户名和密码
用户名和密码都是安装的时候自定义的,IP地址:通过ifconfig命令获取即可,在最上面一串。 IP地址:192.168.204.129
打开SSH工具,输入相关数据即可完成连接。
了解基本的Linux命令

Linux命令的特点:

1.严格区分大小写

2.使用tab键快速补齐命令

最基础的命令:

1.ls  输出当前目录下所有文件夹

2.clear 或ctrl + L 清屏

3.cd  xxx  将路径切换到xxx路径处。(linux的根路径为/)

4.ctrl+c 强制退出当前操作

5.each  在控制台打印一句话。 常用于进行测试作用。

根目录下重要文件夹:

/opt(可选目录):该目录是用于存放可选应用程序的安装目录。通常,第三方软件包会将其安装到这个目录中。

/root(根用户目录):这是root用户的主目录。root用户是Linux系统中具有最高权限的用户。

/tmp(临时目录):该目录用于存储临时文件。这些文件在系统重启时被删除。

/bin(二进制目录):这个目录包含了一些基本的可执行命令和工具。例如,ls、cd等命令就位于该目录。

/boot(引导目录):该目录包含了用于系统保证正常运行的文件

/etc(配置目录):该目录包含了系统的配置文件。

/home(主目录):每个用户在系统中都有一个主目录,用于存储个人文件和文档。

/lib(库目录):该目录包含了系统所需的共享库文件。这些库文件由应用程序调用,提供特定功能的支持。

绝对路径和相对的路径的区别

开头就是/的路径就是绝对路径,例如 /aa/bb/cc

绝对路径:是根据根路径来的。

开头不是/的路径就是相对路径,例如aa/bb/cc

相对路径:根据当前路径来的。

路径相关的知识点:

  pwd命令:返回当前的绝对路径。
  路径中的“.”表示当前路径   “..”表示返回上一级路径
ls命令讲解

ls:查看当前路径下的所有文件夹。

语法:  ls  [参数选项]   其中参数选项可以省略

常见的参数选项如下:

-a  查看所有文件包括隐藏文件

-l   查看文件详细信息

-R   递归显示当前目录和子目录

如何切换用户:

语法: su 用户名

知识点:

低权限向高权限切换,需要输入密码。

高权限向低权限切换,无需输入密码。

注意事项:

当使用普通登录的时候,左边显示如下内容:

[jack@localhost ~]$

当使用管理员登录的时候,左边显示如下内容:

[root@localhost ~]#

总结:

左边的是当前的登录用户

~ :表示当前登录用户的家目录。(个人文件夹)

$表示普通用户

#表示超级管理员

如何创建文件夹

mkdir    :用法:在当前目录下创建一个文件夹。语法如下:

mkdir aa 表示在当前目录创建一个文件夹

案例:在根目录创建一个名字叫test的文件夹。

切换到根目录  cd /
创建test文件夹  mkdir test
进阶用法:如果需要创建级联文件夹,那么上述无法实现。

什么是级联文件夹:就是文件夹里面还有文件夹…

用法如下:  mkdir  -p   aa/bb/cc/dd

-p 表示允许创建级联文件夹。

如何删除文件或文件夹

rm命令:删除文件夹或文件。

默认是删除文件。

语法如下:

rm [参数选项]   [文件或文件夹路径]

其中参数选项如下:

-i 提示是否删除

-r 用于删除目录

-f 用语强制删除文件或目录

N表示no   y表示yes

最忌讳的语法:  rm  –rf  /*

表示删除根目录下的所有文件

执行了该命令就准备重启之前备份的服务器吧、当前服务器以及彻底报废了。

Touch 命令 :在当前目录下创建一个空白文件。

例如 touch a.txt

cp:用于将一个文件或目录,复制到指定位置。相当于复制粘贴的合体。

语法如下:

cp  [参数选项]    源文件路径      目标文件的路径

常见的选项如下:

-r 递归复制目录

-i 提示是否覆盖

-f 用于强制覆盖

需求:

在跟目录下创建一个a.txt

然后将其复制到/opt目录下。然后检查是否复制成功。

1.切换到根目录 cd /   

2.创建a.txt    touch a.txt

3.开始复制粘贴   cp a.txt /opt

4.检查,进入opt目录 cd /opt

5.通过ls查看

mv :常用于剪切一个文件,或者重命名一个文件

语法如下:

mv [参数选项]  源文件  目标文件

cat命令:可以查看一个文件的内容,并显示在控制台上。

语法如下:

cat [参数选项]  文件名

参数选项如下:

-n  显示所有行的行号。

适用于文件内容较小的文件

和cat指令类似。都是用来查看文件内容

其中more和less指令用法完全一致。

但是一般都是使用less。因为less支持上下翻页。

q:退出浏览

空格:向下翻页

上下箭头进行逐行浏览


Java面向对象
回顾Java基础

一.什么是Java:

Java是一门面向对象的编程语言。


二.Java的优势

A.需求范围广,网站,微信小程序,手机APP等都是Java作为主要语言编写。

B.学习成本低,公认最简单的高级语言。


三.Java的专业术语

JVM:Java虚拟机,运行Java的必备工具

JRE: Java运行环境,运行Java的必备环境

JDK: Java的开发工具包


注:其中JDK包含了JRE,JRE又包括了JVM    

所以我们如果想使用Java只需要安装JDK即可。


四.如何利用Eclipse运行第一个Java程序

1.Java注释的分类

什么是注释:方便程序员阅读理解代码的用处。注释不会被java运行。

意思就是:写了仅仅是给程序员看的。

Java有3个类型的注释。

1.单行注释。把当前行注释掉 例如: // 注释内容

2.多行注释。把多行都注释。虽然可以使用多个单行注释来代替 /* */

3.文档注释。和多行注释类似,用途较少,一般是写文档用的 /** */

 

2.解释第一个源文件的相关意义

 

package com.yyzy.test;

//上述一行代码,是每个类(一个Java源文件)都必备的

//表示这个类在哪个包(路径)下


/*

    每个类的模板都是以下格式:其中Xxx必须和类名(源文件名)保持一致

    public class Xxx {

        //若干代码

    }

*/


// Java源代码的运行入口(从哪里开始运行):都是如下格式:

/*

    public static void main(String[] args) {

        //这里的第一行就是运行的第一行代码

    }

    //以上方法又称为:main方法

 */

//System.out.println("我的第一个Java程序"); 表示打印制定的内容

//如果是字符记得加双引号

public class Test1 {

    public static void main(String[] args) {

        System.out.println("我的第一个Java程序");

    }

}

 

课堂练习,创建一个类。要求运行该类,在控制台打印5句

package com.yyzy.test;

public class Test2 {

    public static void main(String[] args) {

        //快捷键1:alt + / 表示根据你的输出内容进行对应的提示

        //例如输入main 就提示入口函数

        //例如输入syso 就提示打印输出代码

        System.out.println("我是汉字所有加双引号");

        System.out.println("i am english so 也要加双引号");

        System.out.println(12345);//我是数字就不需要加了

    }

}

 

3.讲解数据类型的含义

例如:有如下数据,每个数据的类型都不一样

昵称:独孤求败 等级:120级 点券余额:25000 身高:180.5

性别:男

所以Java针对不同的数据也有不同的语法来声明不同的数据。


4.讲解Java的8大基本数据类型

数字类型: byte short int long

字符类型: char  

布尔类型: boolean

浮点类型: float double

 

5.如何声明一个数据

1.记得在main方法里面写。

2.语法: 数据类型 变量名 = 变量值;

3.变量名的命名规范:小驼峰命名法:首字母小写。后续每个单词的首字母大写。


//如何声明数据: 语法: 数据类型 变量名 = 变量值;

//例如声明一个年龄为18岁

        byte abc = 18;//abc表示我的年龄

        short age2 = 18;

        int age3 = 18;

        long age4 = 18;

        //字符类型:只能声明单个字符。用单引号声明即可

        //例如声明性别:

        char sex = '男';

        //例如钱包余额 如果用float存放小数,记得在后面补上f

        float money = 11.5f;

        double money123 = 115.55;

        //布尔类型:只能存放true或false 不用加引号

        //你是猪吗?

        boolean isPig = true;

        

        

        //重点掌握:int char double boolean

        //原因:整数类型int 绰绰有余

        //char:8个基本数据类型只有char可以存储字符(汉字 字母)

        //double:存储的范围比float大。且更加精确

        //boolean:只有boolean可以存储布尔类型


六、常见的运算符

1、赋值运算符:= 将右边的值赋值给左边。


2、算术运算符:= - * / % ++ --


3、关系运算符:> >= < <= == != 他们的返回值都是boolean类型。


4、逻辑运算符:&& 短路与 || 短路或。& 和 | 唯一区别:没有短路功能。


三元表达式:语法:表达式1?值1:值2


表示:如果表达式1为true就是值1 反之就是值2。

java的数据分为两大类:基本数据类型和引用数据类型

其中基本数据类型分为8大类:
按照所占字节的:
1字节    boolean    byte
2字节    char       short
4字节    int        float
8字节    long       double

引用数据类型:
除了8大类剩下的都是引用。
例如String  Scanner   System   Arryas  Class
public Person() {
//空参构造方法 有了它。在别处才可以通过Person p = new Person(); 来实例化

}


//有参构造方法  反问:上面明明写了无参的为什么还要写有参的。可不可以不写
//当然可以不写 ,但是如果只有无参的,那么实例化之后需要一一赋值。比较麻烦
//如果有  有参  实例化的同时 即可完成赋值操作  
//例如 Person p = new Person(123, "张三" , 18);

public Person(int id, String name, int age) {
   this.id = id;
   this.name = name;
   this.age = age;
}


public int getId() {
   return id;
}
public void setId(int id) {
   this.id = id;
}
public String getName() {
   return name;
}
public void setName(String name) {
   this.name = name;
}
public int getAge() {
   return age;
}
public void setAge(int age) {
   this.age = age;
}


@Override
public String toString() {
   return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}


例如:学生实体类为例:  拥有id  name  sex 三个属性。
   
   步骤1:创建该类
   步骤2:声明属性   需要通过private修饰
   步骤3:由于属性都被私有化了。所以外部无法通过属性来进行操作。所以需要对外开放若干个方法,对属性进行操作。
   步骤4:对属性进行set/get方法的创建 可以通过快捷键的方式
   步骤5:需要生成一个toString方法,原因:随时检查实体类的属性值是否正确 如果没有加,打印对象将会得到内存地址
   加了toString,打印对象将会得到对象的属性值。
   步骤6:创建对应的构造方法  
   
   
   构造方法的概念:
   1.构造方法是一个特殊的方法。无法被显示调用,只能在被实例化的时候自动调用。
   2.意义:实例化(没有构造方法就无法实例化)。
   3.每个类都至少含有一个构造方法,如果没有声明就说明存在一个默认的无参构造方法    类名 变量名 = new 类名();//这里没有参数
   4.一般来说:一个类至少有2个构造方法,1个无参构造方法  1个有参构造方法。
*/

   private int id;
   private String name;
   private char sex;
   
   
   
   public Student() {//空参的构造方法 ,有了它 别处才可以
      
   }

   
   
   public Student(int id, String name, char sex) {
      this.id = id;
      this.name = name;
      this.sex = sex;
   }

   public int getId() {
      return id;
   }
   
   public void setId(int id) {
      this.id = id;//加了this表示当前类下的属性,没有加this就是方法的参数列表的属性
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public char getSex() {
      return sex;
   }
   public void setSex(char sex) {
      this.sex = sex;
   }
   
   
   
   
   
}

/*
   Java的四大修饰符:
   public  :任何地方都可以访问
   protected:受保护,只有在同一个包下,或者不同包,但是具有继承关系可以访问
   default(不写) :默认的:只有在同一个包下,可以访问
   private :私有的,只有当前类可以访问
   
*/

面向对象的三大特征:封装,继承,多态。

集成概念如下:
如果不同的类之间拥有相同的属性或方法,
那么可以将这些方法或属性单独抽取出来组成一个父类,
让别的类去继承它,别的类就可以少写很多方法和属性。
这就是面向对象三大特征之一的继承。

Java中的继承和现实生活的继承非常类似。
子承父业。  父不能承子业。
子类拥有父类的方法属性,但是父类没有子类的方法或属性。

创建一个Student类,拥有studentNum,name,age,sex 4个属性。
还拥有:可以打印“我可以说话”的方法,可以打印“我可以吃饭”的方法,
可以打印“我可以上课”的方法

创建一个Teacher类,拥有teacherNum,name,age,sex 4个属性。
还拥有:可以打印“我可以说话”的方法,可以打印“我可以吃饭”的方法,
可以打印“我可以教书”的方法

分析:上述写法有何不妥。
总结:老师类和学生类中 含有相同的属性或方法。
我们推荐将其放在另外一个Person类中
然后让Teacher类和Student继承Person类即可


怎么继承一个类:
语法如下:
class  A  extends  B{

}
我们称A为子类,B为父类。

额外补充:
Java是单继承的语言。每个类最多只能显式继承一个类。
但是每个类可以被多个类同时继承。

每个类都隐式继承Object类,Object是任何类的父类。

子父类中成员变量的特点:
假如存在特殊情况:
子类和父类都拥有相同的成员变量属性、
通过实例化  调用子类的属性 到底是用的子类的还是父类的。
答案:实例化的谁,就用的谁。

假如说想在子类的内部方法共有属性,应该怎么写?
如果直接通过属性名,就默认表示子类。
也可以通过this.属性名 来表示子类
如果想使用父类的共有属性 加上super关键字即可 例如super.money


子父类中成员方法的特点:
子承父类:如果子类没有才继承父类的相关属性或方法。

特殊情况:如果子父类拥有公共的方法,到底调用的谁的?
答案:和成员变量一致。
/*
   子父类中构造方法的特点:
   1.利用开发工具自动生成的构造方法,内部的第一行都有一行super();注意:只能放在第一行
   2.super();表示父类的无参构造方法
   3.super();如果每写就默认存在,如果写了就只会以写了的为主。
*/

A a = new A();//实例化会自动调用对应的构造方法
class A extends Father{
   
   //实体类的编写步骤:
   //1.私有化定义变量属性
   //2.提供属性的set/get方法
   //3.提供toString方法
   //4.提供无参和有参构造方法
   
   private int id;


   
   public A(int id) {
      this.id = id;
      System.out.println("我是子类的有参构造方法");
   }


   
   public A() {
      super("name ");
      System.out.println("我是子类的无参构造方法");
   }


   public int getId() {
      return id;
   }

   public void setId(int id) {
      this.id = id;
   }

   @Override
   public String toString() {
      return "A [id=" + id + "]";
   }
}

class Father{
   private String name;

   public Father(String name) {
      super();
      System.out.println("我是父类的有参构造方法");
      this.name = name;
   }

   public Father() {
      super();
      System.out.println("我是父类的无参构造方法");
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   @Override
   public String toString() {
      return "Father [name=" + name + "]";
   }
}

JavaScript

一、什么是JavaScript

Java和JavaScript的关系就好像老婆和老婆饼的关系,没有关系。

非要说关系:都是编程语言。


二、JavaScript是Web开发领域中的一种功能强大的编程语言,主要用于开发交互式的网页。

简称JS

网页的组成:

三、一个完整的网页由三部分组成:

HTML (网页的主体部分)

CSS (美化的主体部分)

JavaScript (实现业务逻辑和页面控制)

以上的举例说明:

网页中最常见的无非就是登陆页面。

HTML无非就是账号框,密码框,登陆按钮。

CSS无非就是美化上述内容。

JS就是当用户点击登陆按钮,获取账号和密码框的内容,去后台进行校验,判断是否账号密码匹配,然后做出相对于的反馈。


四、JS的三大组成:

第一部分:核心语法 (JS代码)

第二部分:DOM文档对象模型 (JS可以控制HTML元素进行相关的操作)

第三部分:BOM 浏览器对象模型(JS可以控制浏览器元素进行相关的操作)

浏览器元素:弹窗。浏览器的宽高,滚动条等等。

 

五、JS的特点:

简单易用 (只需要用户安装浏览器即可使用)

跨平台 和上述一样。

支持面向对象


六、JS常见的开发工具

常见的两大开发工具 VSCode HBuilderX

优点 1什么语言都可以用它编写 1.专注于前台设计

                                                   

缺点 1.第一个优点导致的问题:界面设计不合理, 2.功能较少


             安装的插件需要很多。需要联网等    

 

七、HBuilderX创建项目的HelloWorld

下载安装包并解压,将HbuilderX.exe生成快捷方式在桌面。

左上角:文件---新建---项目---普通项目---项目名称---存储路径---基本HTML项目


第一个拥有JS代码的HTML网页

之前讲过:网页由HTML,CSS,JS组成。所以绝大部分情况下,JS代码是放在HTML页面中。

绝少情况,暂不做了解。

 

案例1:打开网页,弹出一个警告框提示用户“请输入正确格式”;

<!DOCTYPE html>

<html>

    <head>

        <meta charset="utf-8" />

        <title></title>

    </head>

    <body>

        我的第一个HTML页面

        <script>

            alert("请输入正确的格式");

        </script>

    </body>

</html>


八、常见输入输出语句

输入:prompt() 用于在浏览器中弹出输入框,用户可以输入内容。


           alert() 用于在浏览器中弹出警告框。


输出:document.write() 用于在网页中输出内容。


           console.log() 用于在控制台中输出信息。

JavaScript案例讲解
交换两个变量值案例
<script>
//案例需要:自定义2个变量,要求让他们两个变量进行互换
 
            //幻想成现实生活:张三和李四都拿了一个箱子,并且不能放在地上
 
            //需要完成箱子的交换.
 
            //做法:喊第三个人帮忙.把张三的箱子给第三个人,然后张三拿李四的箱子.,李四就拿第三个人箱子.
 
            var a1 = 100;
 
            var a2 = "张三";
 
            var a3 = a1;
 
            a1 = a2;
 
            a2 = a3;
 
            console.log(a1);
 
            console.log(a2);
</script>
            猜数字游戏案例
<script>
//猜数字游戏:由管理员声明一个数字(1~100);
 
            //用户通过prompt输入进行猜测.根据猜测结果进行反馈,是大了还是小了.,
 
            //直至猜对.
 
            
 
            //游戏规则如下:
 
            //4个人参加.,每人都加2分, 猜对的那个人,指定另外三个人中的一个玩一把课堂惩罚小游戏.
 
            
 
            var num = Math.random() * 100+1;//(0,100)
 
            num = parseInt(num);
 
            var begin = 1;
 
            var end = 100;
 
            
 
            
 
            while(true){
 
                var n = prompt("请输入你要猜的数字。取值范围为" + begin + "~" + end);//string
 
                n = Number(n);//此时的n才是number类型
 
                if(n>num){
 
                    alert("你猜大了");
 
                    end = n;
 
                }else if(n<num){
 
                    alert("你猜小了");
 
                    begin = n;
 
                }else{
 
                    alert("你猜对了");
 
                    break;
 
                }
 
            }
</script>
            实现随机数
<script>  
  // 根据弹窗,用户输入的数据完成求和运算,能够利用运算符计算用户输入的两数之和
 
            // 为了避免JavaScript的精度问题,将结果保留两位小数。
 
            var num1 = prompt("请输入第一个数字");
 
            var num2 = prompt("请输入第二个数字");
 
            
 
            //注意:下面写法是错误的.原因: 因为toFieed方法只能给数字使用
 
            //但是prompt方法返回的一定是字符串,所以num1+num2的结果就是字符串.无法调用toFixed方法.
 
            // alert( (num1 + num2).toFixed(2) );
 
            
 
            //思考: 是一个一个将Num1和num2转成数字 还是为了节省代码将(num1+num2)看成一个整体然后进行转型
 
            //答案:这里不能为了节省代码. 因为string+string是字符串的拼接
 
            
 
            num1 = Number(num1);
 
            num2 = Number(num2);
 
            
 
            //这里注意:可以改进,如果结果是NAN 我们应该给用户提示一个"请输入合法的数据"
 
            
 
            //思路:将NAN的值弄清楚是什么类型 通过typeof 得知 NAN 是一个String类型
 
            if ( (num1 + num2).toFixed(2) == "NaN") {
                alert("请输入合法的数据");
 
            }else{
                alert( (num1 + num2).toFixed(2) );
 
            }
 
            
 
            
 
            
 
            
 
        </script>
            // 根据弹窗,用户输入的数据完成求和运算,能够利用运算符计算用户输入的两数之和

            // 为了避免JavaScript的精度问题,将结果保留两位小数。

            var num1 = prompt("请输入第一个数字");

            var num2 = prompt("请输入第二个数字");

            

            //注意:下面写法是错误的.原因: 因为toFieed方法只能给数字使用

            //但是prompt方法返回的一定是字符串,所以num1+num2的结果就是字符串.无法调用toFixed方法.

            // alert( (num1 + num2).toFixed(2) );

            

            //思考: 是一个一个将Num1和num2转成数字 还是为了节省代码将(num1+num2)看成一个整体然后进行转型

            //答案:这里不能为了节省代码. 因为string+string是字符串的拼接

            

            num1 = Number(num1);

            num2 = Number(num2);

            

            //这里注意:可以改进,如果结果是NAN 我们应该给用户提示一个"请输入合法的数据"

            

            //思路:将NAN的值弄清楚是什么类型 通过typeof 得知 NAN 是一个String类型

            if ( (num1 + num2).toFixed(2) == "NaN") {
                alert("请输入合法的数据");

            }else{
                alert( (num1 + num2).toFixed(2) );

            }

            

            

            

            

        </script>

赋值运算符案例以及讲解
 
<script>
 
            
 
            //赋值运算符:最常见的就是 = 将右边的式子赋给左边.
 
            // var a = 2 ;
 
            //不常见的有如下:
 
            // += *= -= /= %=
 
            //例如
 
            // a = a + 1; 等同于 a+=1;
 
            
 
            //习题:
 
            var a = 3;
 
            a += 2;     
 
            console.log(a);//5
 
            a -= 2;     
 
            console.log(a);//3        
 
            a *= 2;     
 
            console.log(a);//6         
 
            a /= 2;     
 
            console.log(a); //3    
 
            a %= 2;     
 
            console.log(a); //1
 
            a **= 2;        
 
            console.log(a); //1
 
            
 
            
 
            
 
            
 
        </script>

比较运算符案例以及讲解
 
<script>
 
            //比较运算符 用来比较两个值 怎么样 返回结果为boolean类型.
 
            //例如常见的有以下: > < >= <= != ==
 
            
 
            
 
            //了解一下的 === 表示全等于
 
            //==仅仅是判断值是否相等 ===不仅要值相等而且要类型相等
 
            console.log("1" == 1);//true
 
            console.log("1" === 1);//false
 
            
 
            
 
            
 
        </script>
 
逻辑运算符讲解以及案例
  //逻辑运算符的用法主要分为以下4类:
 
            // && 短路与 & 逻辑与
 
            // || 短路或 |逻辑或
 
            //用法完全一致 区别如下:
 
            // 例如 a && b
 
            //如果a和b都为真,返回值才为真. 那么当a为false 将不会执行b
 
            // 例如 a & b
 
            //如果a和b都为真,返回值才为真. 当a为false 将会执行b
 
            // 例如 a || b
 
            //如果a和b只要有一个为真,返回值才为真. 那么当a为true 将不会执行b
 
            // 例如 a | b
 
            //如果a和b只要有一个为真,返回值才为真. 当a为true 将会执行b
 
            
 
            var num = 1;
 
            false && num++;
 
            console.log(num);//1
 
            true || num++;
 
            console.log(num);//1
 
            
 
            var num = 1;
 
            false & num++;
 
            console.log(num);//2
 
            true | num++;
 
            console.log(num);//3        
 
 
 
 
            
 
            
 
        </script>

三元运算符案例以及讲解
 
<script>
 
            /*
                三元运算符也称为三元表达式
                语法如下:
                条件表达式 ? 表达式1 : 表达式2
                如果条件表达式的值为true,则返回表达式1的执行结果。
                如果条件表达式的值为false,则返回表达式2的执行结果。
                常用于替代简单的if-else语句
            
            */
 
        
 
         var age = 18;
 
         // if (age>18) {
         //   alert("成年了");
 
         // } else{
         //   alert("未成年");
 
         // }
 
         alert( age>18?"成年了":"未成年" );
 
        
 
        
 
        
 
        </script>

流程运算符案例以及讲解
 
<script>
 
            //流程控制.如果没有流程控制,JS的代码将会从上至下依次执行
 
            //有了流程控制,可以根据需求来进行代码的执行顺序
 
            //JS中的流程控制:无非就是 if 和 switch
 
            //其中if分为 简单的if if-else if else if
 
            
 
            // 使用if语句实现只有当年龄(age变量值)大于等于18周岁时,才输出“已成年”,
 
            // 否则无输出。
 
            // var age = 18;
 
            // if (age>=18) {
            //      alert("已成年");
 
            // }
 
            
 
            
 
            // 使用if…else语句实现当年龄(age变量值)大于等于18周岁时,输出“已成年”,
 
            // 否则输出“未成年”,示例代码如下。
 
            // var age = 18;
 
            // if (age>=18) {
            //      alert("已成年");
 
            // }else{
            //  alert("未成年");
 
            // }
 
            
 
            // 使用if…else if…else语句实现对一个学生的考试成绩按分数进行等级的划分:
 
            // 90~100分为优秀,80~90分为良好,70~80分为中等,60~70分为及格,分数小于60则为不及格。
 
        //  var score = 75;
 
        //  if (score > 90) {
        //      alert("优秀")
 
        //  } else if(score>80) {
        //      alert("良好");
 
        //  }else if(score>60){
        //      alert("及格");
 
        //  }else{
        //      alert("不及格");
 
        //  }
 
        
 
        //如果可能性较少 就有2-4种,使用if即可 如果可能很多就推荐使用switch
 
        
 
        
 
        // switch语句也是多分支语句,相比if…else if…else语句,
 
        // switch语句可以使代码更加清晰简洁、便于阅读,其语法格式如下。
 
        /*
            switch ( 表达式 ) {
             case 值1:
                代码段1;
                break;
            case 值2
                代码段2;
                break;
             ...
            default:
                代码段n;
            }
        */
 
     // 使用switch语句判断变量week的值,若week变量的值为1~6时输出“星期一”~“星期六”,
 
     // 为0时输出“星期日”,若没有与week变量的值相等的case值时输出“错误”。
 
    
 
     var week = 2;
 
     switch (week){
            case 1:
 
                alert("周1");
 
                break;
 
            case 2:
 
                alert("周2");
 
                break;
 
            case 3:
 
                alert("周3");
 
                break;
 
            case 4:
 
                alert("周4");
 
                    break;
 
            case 5:
 
                alert("周5");
 
                break;
 
            case 6:
 
                alert("周6");
 
                break;
 
            case 0:
 
                alert("周日");
 
                    break;
 
            default:
 
                alert("没有这个日期");
 
                break;
 
     }
 
    
 
    
 
    
 
    
 
     // 注意事项1:break的重要性
 
     //如果case中没有break,那么进入case之后,将不会跳出,而是会直接进入后续的case,并且是无条件进入,直到被break或执行完毕
 
    
 
     // 注意事项2:如果存在多个case有相同的结果,怎么节省代码量。
 
var week = 2;
 
     switch (week){
            case 1:
 
            case 2:
 
            case 3:
 
            case 4:
 
            case 5:
 
                alert("工作日");
 
                break;
 
            case 6:
 
            case 0:
 
                alert("节假日");
 
                    break;
 
            default:
 
                alert("没有这个日期");
 
                break;
 
     }
 
    
 
 
 
            
 
            
 
        </script>

循环结构
<script>
 
            // for (var i = 1; i <= 100; i++) {
            // console.log(i);      // 输出1、2、3、4、5、6……100
 
            // }
 
            // var i = 1;
 
            // while (i <= 100) {
            // console.log(i);
 
            // i++;
 
            // }
 
 
 
 
            // var i = 1;
 
            // do {
            // console.log(i);
 
            // i++;
 
            // } while (i <= 100)
 
            
 
            //常用的跳转语句如下。
 
            // continue : 跳过本次循环,执行下一次
 
            // break: 直接跳出循环.
 
            
 
            //习题: 输出1-100 如果是3的倍数就不输出.如果输出了61就停止输出
 
            for(var i = 1; i<=100;i++){
                
 
                if(i%3==0){
                    continue;
 
                }
 
                
 
                if (i==61) {
                    break;
 
                }
 
                console.log(i);
 
                
 
            }

        >嵌套循环的案例以及讲解
 
<script>
 
            // 下面以9层金字塔为例,案例效果如下,分别在页面和或控制台输出:
 
            /*
                 *
                 ***
                 *****
                 *******
                *********
             ***********
             *************
             ***************
            *****************
            
            */
 
        
 
        
 
         //页面输出的方法:
 
            
 
            //因为是9层 所有直接定义1-9的循环
 
            // for(var i = 1 ; i<=9;i++){
            //  //开始思考:每一行由什么组成:
 
            //  //答案:空格和星星
 
            //  //所以:控制行数的for循环内部:先打印空格,然后打印**
 
            //  //找规律: 第一行:8个空格+1个星星 第二行:7个空格+3个星星 第三行:6个空+ 5个星星:
 
            //  //结论:第几行的空格数: 空格的个数 = 9-i
 
            //  //结论:第几行的星星数: 2*i-1
 
            //  for(var j = 1 ; j<=9-i;j++){
            //      document.write("&nbsp;");
 
            //  }
 
            //  for(var k = 1 ; k<=2*i-1;k++){
            //      document.write("*");
 
            //  }
 
                
 
            //  //控制行数的for循环的最后一行肯定是换行:
 
            //  document.write("<br>"); //注意:页面的换行指的是<br> 控制台的换行才是 \n
 
            // }
 
            
 
            // var str = "";
 
         // for(var i = 1 ; i<=9;i++){
         //   //开始思考:每一行由什么组成:
 
         //   //答案:空格和星星
 
         //   //所以:控制行数的for循环内部:先打印空格,然后打印**
 
         //   //找规律: 第一行:8个空格+1个星星 第二行:7个空格+3个星星 第三行:6个空+ 5个星星:
 
         //   //结论:第几行的空格数: 空格的个数 = 9-i
 
         //   //结论:第几行的星星数: 2*i-1
 
         //   for(var j = 1 ; j<=9-i;j++){
         //       str = str + " ";
 
         //   }
 
         //   for(var k = 1 ; k<=2*i-1;k++){
         //       str = str + "*";
 
         //   }
 
          
 
         //   //控制行数的for循环的最后一行肯定是换行:
 
            //  str = str + "\n";//注意:页面的换行指的是<br> 控制台的换行才是 \n
 
         // }
 
        
 
         // console.log(str);
 
        //console.log类似于Java中System.out.println();打印就自动换行
 
        //但是JS没有类似于System.out.print();的方法
 
        //所以如果想要在控制台实现类似的效果,应该将所有的内容放在一个字符串内.
 
        //然后通过console.log打印这个一个字符串
 
        
 
        
 
        
 
         // //将99乘法表输出在页面上
 
         // for(var i = 1 ; i<=9;i++){//不仅是行数 而且还是被乘数
 
                // for(var j = 1;j<=i;j++){
                //  document.write(j + "*" + i + "=" + (i*j) + "&nbsp;" );
 
                // }
 
                // document.write("<hr>");
 
         // }
 
         //将99乘法表输出在控制台上
 
         var str = "";
 
         for(var i = 1 ; i<=9;i++){//不仅是行数 而且还是被乘数
 
              for(var j = 1;j<=i;j++){
                    str = str + j + "*" + i + "=" + (i*j) + " ";
 
              }
 
                str = str + "\n";
 
         }
 
        
 
         console.log(str);
 
        </script>

算数运算符

有如下几种:
   +   -    *     /   %
   以上五种是最基本的加减乘除和取余
   其中取余的注意事项:例题如下      
*/
// console.log(10%3);//1
// console.log(10%-3);//1
// console.log(-10%3);//-1
// console.log(-10%-3);//-1
//总结:取余结果的正负取决于%左边的正负,也就是两个数取余,首先全看成正数
//然后结果的正负和%左边的正负一致即可.
//** 幂运算  语法:  a ** b  理解为a的b次方
// console.log(2**3);//8
//++ 和 --  表示自增1  和自减1
//有两种用法:  a++ 表示先用在加   ++a表示先加再用
//做算数运算的注意事项: 任何编程语言都有一个通病
//做小数运算会可能损失精度
// console.log(0.1+0.2);//0.300000004
//所以JS提供了一个方法 来避免这种情况出现
//  aaa.toFixed(num); 表示保留小数点后面几位小数
//  aaa表示某个数  num表示保留几位   如果没写默认就是0
// console.log(  (0.1+0.2).toFixed(3)  );
//注意事项: 该方法的返回值是string类型.
//字符运算符 就是一个  +
// 字符之间的运算 通过 +  即可完成拼接
// var str1 = "张三";
// var str2 = "是猪";
// console.log(str1+str2);//张三是猪
//注意事项:任何类型 + string   = string
//所以:我们不仅可以将字符串转型成数字  也可以将任何类型 转成string
//最常见的做法: 直接和空字符串相加即可.这样不会影响值的本身.
// console.log( typeof (1234 + ""));
赋值运算符

:最常见的就是 =   将右边的式子赋给左边.
var a = 2 ;
不常见的有如下:
+=   *=   -=  /=  %=
例如
a  =  a + 1; 等同于 a+=1;
比较运算符

用来比较两个值 怎么样 返回结果为boolean类型.
例如常见的有以下: > < >= <= != ==
了解一下的 === 表示全等于 ==仅仅是判断值是否相等
===不仅要值相等而且要类型相等
console.log("1" == 1);
true console.log("1" === 1);//false
逻辑运算符


用法主要分为以下4类:

  && 短路与   & 逻辑与
  || 短路或   |逻辑或
用法完全一致  区别如下:
  例如 a  &&  b
如果a和b都为真,返回值才为真. 那么当a为false 将不会执行b
  例如 a  &  b
如果a和b都为真,返回值才为真. 当a为false 将会执行b
  例如 a  ||  b
如果a和b只要有一个为真,返回值才为真. 那么当a为true 将不会执行b
  例如 a  |  b
如果a和b只要有一个为真,返回值才为真. 当a为true 将会执行b
三元运算符

也称为三元表达式
语法如下:
条件表达式 ? 表达式1 : 表达式2
如果条件表达式的值为true,则返回表达式1的执行结果。
如果条件表达式的值为false,则返回表达式2的执行结果。
常用于替代简单的if-else语句

流程控制

如果没有流程控制,JS的代码将会从上至下依次执行

      有了流程控制,可以根据需求来进行代码的执行顺序

      JS中的流程控制:无非就是 if   和 switch

      其中if分为  简单的if    if-else   if else if  

      

       使用if语句实现只有当年龄(age变量值)大于等于18周岁时,才输出“已成年”,

       否则无输出。

       var age = 18;

       if (age>=18) {
              alert("已成年");

       }

      

      

       使用if…else语句实现当年龄(age变量值)大于等于18周岁时,输出“已成年”,

       否则输出“未成年”,示例代码如下。

       var age = 18;

       if (age>=18) {
              alert("已成年");

       }else{
           alert("未成年");

       }

      

       使用if…else if…else语句实现对一个学生的考试成绩按分数进行等级的划分:

       90~100分为优秀,80~90分为良好,70~80分为中等,60~70分为及格,分数小于60则为不及格。

        var score = 75;

        if (score > 90) {
           alert("优秀")

        } else if(score>80) {
           alert("良好");

        }else if(score>60){
           alert("及格");

        }else{
           alert("不及格");

        }

   

   如果可能性较少 就有2-4种,使用if即可 如果可能很多就推荐使用switch

   

   

    switch语句也是多分支语句,相比if…else if…else语句,

    switch语句可以使代码更加清晰简洁、便于阅读,其语法格式如下。

   /*

      switch ( 表达式 ) {
        case 值1:

         代码段1;

         break;

      case 值2

         代码段2;

         break;

        ...

      default:

         代码段n;

      }

   */

    使用switch语句判断变量week的值,若week变量的值为1~6时输出“星期一”~“星期六”,

    为0时输出“星期日”,若没有与week变量的值相等的case值时输出“错误”。

   

   var week = 2;

   switch (week){
      case 1:

         alert("周1");

         break;

      case 2:

         alert("周2");

         break;

      case 3:

         alert("周3");

         break;

      case 4:

         alert("周4");

            break;

      case 5:

         alert("周5");

         break;

      case 6:

         alert("周6");

         break;

      case 0:

         alert("周日");

            break;

      default:

         alert("没有这个日期");

         break;

   }

   

   

   

   

    注意事项1:break的重要性

   如果case中没有break,那么进入case之后,将不会跳出,而是会直接进入后续的case,并且是无条件进入,直到被break或执行完毕

   

    注意事项2:如果存在多个case有相同的结果,怎么节省代码量。

var week = 2;

   switch (week){
      case 1:

      case 2:

      case 3:

      case 4:

      case 5:

         alert("工作日");

         break;

      case 6:

      case 0:

         alert("节假日");

            break;

      default:

         alert("没有这个日期");

         break;

   }

   

 for (var i = 1; i <= 100; i++) {
   console.log(i);           输出1、2、3、4、5、6……100

 }

 var i = 1;

 while (i <= 100) {
   console.log(i);

   i++;

 }

 var i = 1;

 do {
   console.log(i);

   i++;

 } while (i <= 100)

常用的跳转语句如下。

 continue :  跳过本次循环,执行下一次

 break:   直接跳出循环.

习题:  输出1-100  如果是3的倍数就不输出.如果输出了61就停止输出

for(var i = 1; i<=100;i++){
   

   if(i%3==0){
      continue;

   }

   

   if (i==61) {
      break;

   }

   console.log(i);

   

}


    

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值