一阶段--java基础
时间:2023-07-05 00:07:00
1.Linux
1.1.操作系统是什么?
类似于一个平台,任何其他软件都需要在这个平台上运行
1.2.Linux历史
1.3.操作系统环境
?访问磁盘
位置-主文件夹
点击左侧文件系统6
/boot:存储系统启动时需要系统启动时需要读取的文档
/home:用户文件夹
/opt:额外的安装软件
/root:存储管理员目录
?应用程序
1.4.终端操作命令
打开终端:应用程序-附件-终端
快捷键:CTRL ALT T
退出终端:exit;
1.4.1.查看文件及目录
ls 查看当前目录下的文件和目录
ls –a 查看当前目录下的文件和目录(包括隐藏目录和隐藏文件)
ls –l查看当前目录下的文件和目录(包括详细信息)
文件种类:
蓝色:目录
白:普通文件
红:压缩文件
浅蓝色:可连接文件
绿色:可执行文件
###1.4.2.过滤
ls |grep 包含的文字
案例:查询当前目录包含案例e文件及目录
ls |grep e
忽略大小写:-i
案例:查询当前目录包含案例e目录和文件
ls |grep –i e
案例:同时检查详细信息
ls –l|grep e
1.4.3.目录跳转
cd 目标文件:进入目标文件
cd … :返回上一级目录
pwd:查看当前位置
###1.4.4.查找
find 查找位置 -name 目标文件
案例:查询文件名称为查询文件abc”的目录
案例:查询txt目录或文件的结尾
案例:查询文件名称包括o目录和文件
find ./ -name *o*
案例:查询a”开头的.txt文件
find ./ -name a*.txt
###1.4.5.文件夹操作
创建文件夹(目录):
mkdir 目录名
删除文件夹:
rmdir 目录(只能删除空目录)
1.4.6.文件操作
rm 文件名:删除文件
案例:一次删除多个文件
案例:删除非空目录
rm –rf 目标文件
-r:递归
-f:强制删除
1.4.7.查看文件内容
cat 文件名
案例:查看1.txt文件中的内容
案例:将1.txt内容覆盖2.txt
案例:将1.txt内容和2.txt复制到3.txt中
问:如果此时3.txt文件中有内容,执行此操作后,3.txt内容是覆盖还是添加?
如果不慎 只写了cat然后回车按Ctrl Shift D 退出
1.4.8.more命令
查看文件内容 可以分页
more –行数 目标文件
案例:分页查看1.txt每页查看4个内容
more -4 1.txt
空格键:向后翻页
B键:向前翻页
1.4.9.压缩
1.4.9.1.zip压缩
zip –r 目标文件名.zip 原文件名
案例:压缩abc文件夹
解压缩:
unzip 原文件名.zip
案例:将abc.zip压缩包解压
1.4.9.2.打包
tar –cvf 目标文件名.tar 源文件名
解包:
tar –xvf 源文件名.tar
案例:分别包装和解包abc文件夹
1.4.10.查看权限
使用ls –l 查看文件类型和文件类型
-rw-rw-r-- 1 soft01 soft01 97 3月 13 16:31 1.txt~
-rw-rw-r-- 1 soft01 soft01 5 3月 13 16:21 2.txt~
-rw-rw-r-- 1 soft01 soft01 11 3月 13 16:22 3.txt
drwxrwxr-x 2 soft01 soft01 4096 3月 13 16:39 abc
-rw-rw-r-- 1 soft01 soft01 10240 3月 13 16:54 abc.tar
?第一列:-rw-rw-r-
第一部分:-//d
-:普通文件
d:文件夹/目录
第二部分:rw-rw-r–
第二部分可以作为每三个字符的一部分
第一部分:用户权限
第二部分:用户组权限
第三部分:其他人权
r:可读权限
w:可写
x:可执行
-:没有权限
?第二列:数字
表示文件的链接数
普通文件链接文件
目录一般有两个链接文件
?第三列:用户名
?第四列:当前用的密码
?第五列:文件大小
普通文件的大小与其内容有关
目录尺寸为4096,目录尺寸仅为文件夹尺寸,不包括文件夹中子目录和子文件尺寸
?第六列:最后一次更新时间
?第七列:文件名/目录名
1.4.11.权限修改
?方式一
chmod [u/g/o/a][ /-/=][r/w/x] 文件名
u:User
g:grop
o:Other
a:ALL
:添加权限
-:删除权限
=:取消以前的所有权,并赋予当前权限
案例:将3.txt的 当前用户 可写权限 删除
chmod u-w 3.txt
?方式二
chmod [数字] [数字] [数字] 文件名
每个数字不超过7
r:4
w:2
x:1
案例:添加3.txt的 当前用户 的可写权限
chmod 664 3.txt
1.4.12.文件编辑
创建文件:vi 文件名
案例:创建hello.txt
vi hello.txt
敲入命令行后,系统将创建hello.txt,此时打开状态
如果想在hello.txt写内容,按下 i 键进入插入模式,不能在插入模式下保存
如需保存插入内容,请按下 esc 键入底行模式
输入底行模式后,输入底行模式 :wq 保存并退出
2.MySQL
2.1.数据库类型
?关系数据库:表与表之间的关系
MySQL,Oracle
?非关系数据库:每个表都是独立的
MongoDB
2.2.安装MySQL数据库
下载或下载官或下载教师
2.3.打开数据库
数据命令:mysql –uroot –proot
此时正常进入界面,如报mysql不是内部命令”,只需配置环境变量即可
2.4.配置MySQL环境变量
第一步:找到MySQL打开安装目录bin目录,复制链接
第二步:右键桌面上的计算机图标,选择属性
第三步:点击左侧高级系统配置
第四步:点击环境变量按钮
第五步:在系统变量中找到path”
第六步:点击编辑按钮,复制刚刚复制的按钮MySQL的bin放入目录,注意加分号 ;”
配置后,重新打开终端进入
退出数据库:quit;
退出数据库并退出终端:exit;
2.5.数据库连接
连接本地数据库:mysql –uroot –proot
远程连接数据库 :mysql –hIP地址 -uroot –proot
远程连接教师机:mysql –h10.0.27.98 –uroot –proot
测试连接是否成功:show databases;
2.6.数据库操作
2.6.1.查询数据库
语法:SHOW DATABASES;
查询出当前mysql软件中有哪些数据库?
2.6.2.创建数据库
语法:CREATE DATABASE 数据库名 DEFAULT CHARSET UTF8;
在创建之前,首先判断数据库中的数据库是否存在
CREATE DATABASE IF NOT EXISTS 数据库名 DEFAULT CHARSET UTF8;
案例:创建ZHOU数据库
CREATE DATABASE ZHOU DEFAULT CHARSET UTF8;
2.63.切换数据库
语法:USE 数据库名
2.6.4.删除数据库
DROP DATABASE 数据库名;
案例:删除zhou数据库
DROP DATABASE ZHOU;
2.6.5.创建表
创建表之前需要选择数据库
语法:
CREATE TABLE 表名(
列名1 数据类型,
列名2 数据类型,
…
)
注意:
列名与数据类型之间有空格
字段与字段之间用逗号“, ”间隔
最后一个字段后面不能跟逗号
思考学生表的字段:编号、姓名、性别、年龄、电话、创建时间
案例:创建学生表
– 创建学生表
CREATE TABLE T_STU(
ID INT , – 学生编号
NAME VARCHAR(20), – 学生姓名
SEX INT, – 性别
AGE INT, – 年龄
PHONE CHAR(11), – 手机号
CREATETIME DATE – 创建时间
)
2.6.6.查看表
语法:SHOW TABLES;
查看当前数据库下有哪些表
日期类型:date datetime
2.6.7.删除表
语法:DROP TABLE 表名
2.6.8.查看表结构
语法:DESC 表名
练习:
新建NJWANGBO数据库
创建用户表
创建商品表
创建商品类型表
思考: 购物车表、订单表中的字段
建表三要素
表名
表的列名
列名类型
列类型
常用列类型:
数值类型:
int:整数
double:浮点数(小数)
decimal(5,2):
字符类型:
char(最大长度)、varchar(最大长度)
区别:
char:长度不可变,后面可以不设定最大长度,如果设定了最大长度,当保存的数据长度没有到达最大长度时,多出的长度将使用空格占位
varchar:长度可变,使用时必须要带最大长度,当保存的数据没有到达最大长度时,实际长度是几就是几,不采用空格占位
日期类型:
date:yyyy-MM-dd
datetime:yyyy-MM-dd hh:mm:ss(推荐使用)
2.6.9.查看建表语句
语句:SHOW CREATE TABLE 表名
案例:查看T-STU建表语句
2.6.10.编辑表
一般情况下,表创建成功之后是很少修改表结构
一般的操作都是将表直接删除,再重新建
2.6.10.1.修改表名
方法一:
语法:RENAME TABLE 旧表名 TO 新表名
案例:修改T_STU表的表名
方法二:
语法:ALTER TABLE 旧表名 RENAME 新表名
案例:修改T_STUDENT表的表名
2.6.10.2.修改列
2.6.10.3.修改列类型
语法:ALTER TABLE 表名 MODIFY 列名 列类型
案例:将t_stu表中的phone字段类型修改成varchar类型
ALTER TABLE T_STU MODIFY PHONE VARCHAR(11);
2.6.10.4.修改列名及列类型
语法:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型
案例:将t_stu表中的phone列名换成 telephone,并将 数据类型修改成char类型
ALTER TABLE T_STU CHANGE PHONE TELEPHONE CHAR(11);
2.6.10.5.添加字段
语法:ALTER TABLE 表名 ADD 字段名 字段类型
案例:给t_stu表添加一个addres字段
ALTER TABLE T_STU ADD ADDRES VARCHAR(200);
2.6.10.6.删除字段
语法:ALTER TABLE 表名 DROP 列名 ;
案例:删除t_stu表中的addres字段
ALTER TABLE T_STU DROP ADDRES;
总结:
创建:CREATE …
修改:ALTER …
删除:DROP …
2.6.11.数据的增删改
2.6.11.1.数据添加
语法:INSERT INTO 表名(列名2,列名1,列名3…) VALUES (值1,值2,值3…)
如果表中字段是char、varchar、日期类型,插入数据时,数据需要使用单引号括起来
数值类型不需要带引号
案例:给t_stu表插入一条数据
INSERT INTO T_STU (ID,NAME,SEX,AGE,TELEPHONE,CREATETIME)
VALUES(1,‘ZHANGSAN’,0,29,‘13912345678’,‘2019-03-15’);
批量插入:
INSERT INTO T_STU (ID,NAME,SEX,AGE,TELEPHONE,CREATETIME)
VALUES
(2,‘ZHANGSAN’,0,29,‘13912345678’,‘2019-03-15’),
(3,‘ZHANGSAN’,0,29,‘13912345678’,‘2019-03-15’),
(4,‘ZHANGSAN’,0,29,‘13912345678’,‘2019-03-15’)
如果表中所有字段都需要插入值,则在insert后面可以不写列名,直接插入值即可
案例:向t_stu表中插入一条数据
INSERT INTO T_STU
VALUES (5,‘ZHANGSAN’,0,29,‘13912345678’,‘2019-03-15’)
注意:使用此种方法时,values后面值得顺序必须与表中字段的顺序一致
如果只想给表中某些字段插入数据,insert后面只需要跟想插入的字段即可
案例:给t_stu表中的ID,NAME插入数据,其他字段不插入数据
INSERT INTO T_STU(ID,NAME)
VALUES (6,‘LISI’);
查看表中数据
SELECT * FROM 表名
练习:向商品表中添加10条数据
2.6.11.2.数据修改
语法:UPDATE 表名 SET 列名1=列值1,列名2=值2…
案例:将t_stu表中的name值改成‘wangwu’,性别改成‘1’
UPDATE T_STU SET NAME=‘WANGWU’,SEX=1;
上述案例中,执行修改之后,将表中所有的数据都改了
问:如果只想修改一条数据,怎么做?
where条件
案例:将t_stu表中编号为‘1’的学生姓名修改为‘ZHANGSAN’
UPDATE T_STU SET NAME=‘ZHANGSAN’ WHERE ID=1;
练习:
– 将t_stu表中的数据性别都改为“0”
UPDATE T_STU SET SEX = 0;
– 将t_stu表中所有女同学的年龄都改为18
UPDATE T_STU SET AGE = 18 WHERE SEX = 0;
– 给t_stu表添加一个 薪资 字段
ALTER TABLE T_STU ADD SAL INT;
– 将薪资小于6000的同学薪资加500
UPDATE T_STU SET SAL = SAL+500 WHERE SAL < 6000;
– 将年龄大于30的同学薪资加1000
UPDATE T_STU SET SAL = SAL+1000 WHERE AGE>20;
– 将编号为1、3、5的同学,薪资增加25%
UPDATE T_STU SET SAL = SAL1.25 WHERE ID = 1 OR ID = 3 OR ID = 5;
UPDATE T_STU SET SAL = SAL0.25 WHERE ID IN (1,3,5);
– 将姓名为‘WANGWU’且 SEX = 1 的学生薪资改为7000
UPDATE T_STU SET SAL =7000 WHERE NAME = ‘WANGWU’ AND SEX = 1;
2.6.11.3.删除表数据
语法:DELETE FROM 表名 WHERE 条件
案例:删除t_stu表中ID为‘1’的数据
DELETE FROM T_STU WHERE ID = 1;
根据条件删除
– 删除t_stu表中所有性别为1的数据
比较运算符
=、!=/<>、>、<、>=、<=
– 删除学生名称为‘张三’的数据
DELETE FROM T_STU WHERE NAME= ‘ZHENAGSAN’;
– 删除性别不为0的数据
DELETE FROM T_STU WHERE SEX != 0;
– 删除年龄大于25的数据
DELETE FROM T_STU WHERE AGE > 25
– 删除薪资在 5000(包含)到6000(包含) 之间的数据
DELETE FROM T_STU WHERE SAL>=5000 AND SAL <=6000;
NULL
– 删除ID为‘null’的数据
DELETE FROM T_STU WHERE ID IS NULL;
AND OR
AND:需要左右的表达式同时成立才成立
OR:两边有一个表达式成立即可
– 删除性别为0且年龄在25岁以上的学生
DELETE FROM T_STU WHERE SEX=0 AND AGE > 25;
– 添加一个分数字段
ALTER TABLE T_STU ADD SCORE DOUBLE;
– 删除分数在 60以下 且 年龄在18岁以下的学生
DELETE FROM T_STU WHERE SCORE <60 AND AGE <18 ;
– 删除分数在60以下 或 年龄在 18岁以下的学生
DELETE FROM T_STU WHERE SCORE <60 OR AGE <18 ;
BETWEEN… AND…
在…之间
– 删除薪资在 5000(包含)到6000(包含) 之间的数据
DELETE FROM T_STU WHERE SAL BETWEEN 5000 AND 6000;
NOT
– 删除分数不在80到90之间的学生数据
DELETE FROM T_STU WHERE SCORE NOT BETWEEN 80 AND 90;
NOT IN
– 删除学生ID不是1、3、5的学生信息
DELETE FROM T_STU WHERE ID NOT IN(1,3,5);
– 删除电话不为空的学生信息
DELETE FROM T_STU WHERE TELEPHONE IS NOT NULL;
2.6.12.用户操作
CREATE USER 用户名@’IP地址’ IDENTIFIED BY 密码
案例:创建zhou用户并赋予密码“zhou”
CREATE USER ZHOU@‘127.0.0.1’ IDENTIFIED BY ‘ZHOU’;
创建成功的用户,在mysql数据库中的user表中
切换到mysql数据库中,查询user表,即可看到创建的用户
赋予用户权限:需要使用管理员登录
GRANT 权限1、权限2… ON 数据库名.表名 TO 用户名@“IP地址”
案例:赋予zhou用户create、alter、drop、insert、delete、update、select等权限
GRANT CREATE,DROP,ALTER,INSERT,DELETE,UPDATE,SELECT
ON ZHOU.T_STU TO ZHOU@‘127.0.0.1’;
作业:
给三张表添加15条真实数据
2.6.13.查询数据
2.6.13.1.基本查询语句
– 查询数据表t_stu中所有的 数据
SELECT * FROM T_STU;
– 查询t_stu表中ID为5的学生信息
SELECT * FROM T_STU WHERE ID = 5;
– 查询t_stu表中所有学生的ID和NAME信息,其他信息不要
SELECT ID,NAME FROM T_STU;
– 查询t_stu表中学生名称包含“A”的学生信息
SELECT ID,NAME,SEX,AGE,TELEPHONE,CREATETIME,SAL FROM T_STU
WHERE NAME LIKE ‘%A%’;
%:匹配任意字符长度,匹配所有字符
_:匹配一个字符长度,匹配所有字符
– 查询t_stu表中学生名称第二个字符为“H”的学生数据
SELECT ID,NAME,SEX,AGE,TELEPHONE,CREATETIME,SAL FROM T_STU
WHERE NAME LIKE ‘_H%’;
2.6.13.2.函数
连接字符:concat(str1,str2);
SELECT CONCAT(‘HELLO’,‘WORLD’);
插入字符:insert(str,p,l,newStr);
str:被替换的字符串
p:开始替换位置
l:长度,替换几个长度
newStr:即将替换成的字符
转大写:upper(str);
转小写:lower(str)
计算长度:length()
去除前后空格:trim();
替换:replace(str,pStr,newStr);
2.6.13.3.数学函数
向上取整:ceil(num)
向下取整:floor(num)
四舍五入:round(num)
取余:mod(num1,num2)
2.6.13.4.日期函数
当前年月日:curdate();
格式:yyyy-MM-dd
当前时间:curtime();
格式:hh:mm:ss
当前时间:now();
格式:yyyy-MM-dd hh:mm:ss
案例:向t_stu表中插入一条数据(使用当前时间)
INSERT INTO T_STU
VALUES(7,‘LISI’,1,18,‘12345678978’,NOW(),7000);
2.6.13.5.聚集函数
max(列名):最大值
– 查看t_stu表中薪资最高的学生信息
SELECT MAX(SAL) FROM T_STU;
min(列名):最小值
–查看t_stu表中薪资最低的学生信息
SELECT MIN(SAL) FROM T_STU;
sum():求和
– 查看t_stu表中所有学生薪资的总和
SELECT SUM(SAL) FROM T_STU;
avg(列名):平均值
– 查看t_stu表中所有学生的平均薪资
SELECT AVG(SAL) FROM T_STU;
count():统计数量
– 统计t_stu表中性别为0的学生数量
SELECT COUNT(ID) FROM T_STU WHERE SEX = 0;
2.6.13.6.单表查询
重建学生表
CREATE TABLE T_STU(ID INT,NAME VARCHAR(20),SEX INT,AGE INT,SCORE INT,CREA
TETIME DATETIME);
准备数据
INSERT INTO T_STU(ID,NAME,SEX,AGE,SCORE,CREATETIME)
VALUES(1,‘ZHANGSAN’,0,19,95,NOW());
INSERT INTO T_STU(ID,NAME,SEX,AGE,SCORE,CREATETIME)
VALUES(2,‘LISI’,1,29,85,NOW());
INSERT INTO T_STU(ID,NAME,SEX,AGE,SCORE,CREATETIME)
VALUES(3,‘WANGWU’,1,22,95,NOW());
INSERT INTO T_STU(ID,NAME,SEX,AGE,SCORE,CREATETIME)
VALUES(4,‘ZHAOLIU’,0,24,75,NOW());
INSERT INTO T_STU(ID,NAME,SEX,AGE,SCORE,CREATETIME)
VALUES(5,‘ZHUOQI’,1,24,59,NOW());
INSERT INTO T_STU(ID,NAME,SEX,AGE,SCORE,CREATETIME)
VALUES(6,‘XIAOQIANG’,0,20,19,NOW());
– 查询表中所有的字段
方式一:
SELECT * FROM T_STU;
这种方式查出来的数据,数据展示顺序与表中的字段顺序一致
方式二:
SELECT ID,NAME,SEX,AGE,SCORE,CREATETIME FROM T_STU;
此种方式真是的数据顺序与 select语句中的字段顺序一致
mysql中的+、-、*、/
– 查看每个学生的分数加上5分之后的数据(只展示ID,姓名,成绩三列)
SELECT ID,NAME,SCORE+5 FROM T_STU;
– 在上题基础上给成绩一列 起上 别名
SELECT ID,NAME,SCORE+5 AS S FROM T_STU;
– 查询学生表中姓名中包含“A”且成绩 大于70的学生信息
SELECT ID,NAME,SEX,AGE,SCORE,CREATETIME FROM T_STU
WHERE NAME LIKE ‘%A%’ AND SCORE > 70;
– 查看学生表中 成绩在60(包含)到90(包含)之间的学生信息
方式一:
SELECT ID,NAME,SEX,AGE,SCORE,CREATETIME FROM T_STU
WHERE SCORE BETWEEN 60 AND 90;
方式二:
SELECT ID,NAME,SEX,AGE,SCORE,CREATETIME FROM T_STU
WHERE SCORE >= 60 AND SCORE <= 90
– 查询1995年到2005年之间出生的学生信息
‘1995-01-01’ ‘2005-12-31’
– 查询学生编号 为1,2,4的学生信息
方式一:
SELECT ID,NAME,SEX,AGE,SCORE,CREATETIME FROM T_STU
WHERE ID = 1 OR ID = 2 OR ID = 4;
方式二:
SELECT ID,NAME,SEX,AGE,SCORE,CREATETIME FROM T_STU WHERE ID IN (1,2,4);
– 查询学生编号 不为1,2,4的学生信息
SELECT ID,NAME,SEX,AGE,SCORE,CREATETIME FROM T_STU
WHERE ID NOT IN (1,2,4)
– 查询学生成绩为0的学生信息(成绩为null也算作0分)
SELECT ID,NAME,SEX,AGE,SCORE,CREATETIME FROM T_STU
WHERE SCORE = 0 OR SCORE IS NULL;
– 查询 有成绩 的学生信息(0分也算作成绩)
SELECT ID,NAME,SEX,AGE,SCORE,CREATETIME FROM T_STU
WHERE SCORE IS NOT NULL;
0-- 查询每个学生的成绩,如果有学生成绩为null,则使用0表示
SELECT ID,NAME,SEX,AGE, IFNULL(SCORE,0),CREATETIME FROM T_STU ;
IFNULL(参数1,参数2);
当参数1为null时,使用参数2展示,如果参数1不为null,则使用参数1展示
– 查看每个学生的年薪(添加上薪资字段即可)
SELECT SAL*12 AS SAL FROM T_STU;
– 查看每个学生的年薪(加上奖金)
SELECT (SAL*12)+ IFNULL(COM ,0) AS SAL FROM T_STU;
– 查看年薪大于10W的学生信息
方式一:
– 先查出学生的年薪
SELECT ID,NAME,SEX,AGE ,(SAL12+IFNULL(COM,0)) AS S FROM T_STU
– 在上一步的结果集中使用having进行二次筛选
SELECT ID,NAME,SEX,AGE ,(SAL12+IFNULL(COM,0)) AS S FROM T_STU
HAVING S > 100000;
方式二:
– 先查出学生的年薪
SELECT ID,NAME,SEX,AGE ,(SAL12+IFNULL(COM,0)) AS S FROM T_STU
– 在上一步的结果集上再查一次,将上一步的结果作为一张临时表
SELECT ID,NAME,SEX,AGE,S
FROM
(SELECT ID,NAME,SEX,AGE ,(SAL12+IFNULL(COM,0)) AS S FROM T_STU) T
WHERE S>100000;
– 统计表中共有多少个学生
SELECT COUNT(ID) FROM T_STU;
– 显示表中所有学生信息,并按照 成绩 降序 排列
SELECT ID,NAME,SEX,AGE ,SAL,IFNULL(COM,0) AS S ,SCORE FROM T_STU
ORDER BY SCORE DESC;
order by:排序
desc:降序
asc:升序(默认)
– 在上题基础上,如果成绩一致,则再按照薪资降序排列
SELECT ID,NAME,SEX,AGE ,SAL,IFNULL(COM,0) AS S ,SCORE FROM T_STU
ORDER BY SCORE DESC,SAL DESC ;
– 展示最大成绩
– 展示最小成绩
– 展示成绩总和
– 查询班级平均成绩
– 查询最高成绩,按照男女生性别分组
SELECT MAX(SCORE) FROM T_STU GROUP BY SEX;
group by:分组
2.6.13.7.多表联查
准备数据
新建学生表t_stu
ID,NAME,SEX,AGE,SCORE,SAL,CLASSID,CREATETIME
CREATE TABLE T_STU(
ID INT,
NAME VARCHAR(20),
SEX INT ,
AGE INT,
SCORE INT ,
SAL INT ,
CLASSID INT NOT NULL,
CREATETIME DATETIME
);
班级表:t_class
ID,NAME,TEACHER,BOSS,CREATETIME
CREATE TABLE T_CLASS(
ID INT PRIMARY KEY,
NAME VARCHAR(20),
TEACHER VARCHAR(20),
BOOS VARCHAR(20),
CREATETIME DATETIME
);
– 插入班级表数据
INSERT INTO T_CLASS(ID,NAME,TEACHER,BOOS,CREATETIME)
VALUES(1,‘JAVA’,‘XIAOZHOU’,‘YUNJIE’,NOW());
INSERT INTO T_CLASS(ID,NAME,TEACHER,BOOS,CREATETIME)
VALUES(2,‘WEB’,‘BAOGE’,‘HAIYAN’,NOW());
INSERT INTO T_CLASS(ID,NAME,TEACHER,BOOS,CREATETIME)
VALUES(3,‘JAVA’,‘JINZHONG’,‘WENYA’,NOW());
INSERT INTO T_CLASS(ID,NAME,TEACHER,BOOS,CREATETIME)
VALUES(4,‘C’,‘JINZHONG’,‘WENYA’,NOW());
– 插入学生表数据
INSERT INTO T_STU(ID,NAME,SEX,AGE,SCORE,SAL,CLASSID,CREATETIME)
VALUES(1,‘XIAOJUN’,1,19,90,7000,1,NOW());
INSERT INTO T_STU(ID,NAME,SEX,AGE,SCORE,SAL,CLASSID,CREATETIME)
VALUES(2,‘XIAOMING’,0,23,80,8000,2,NOW());
INSERT INTO T_STU(ID,NAME,SEX,AGE,SCORE,SAL,CLASSID,CREATETIME)
VALUES(3,‘LIHUA’,0,24,85,9000,1,NOW());
– 查询学生所有信息(包含所在班级名称,班级讲师,班主任)
内连接:inner join
SELECT
S.ID,S.NAME,S.SEX,S.AGE,S.SCORE,S.SAL,S.CLASSID,C.NAME AS CLASSNAME ,
C.TEACHER,C.BOOS
FROM T_STU S
INNER JOIN T_CLASS C
ON S.CLASSID = C.ID
左连接:left join
以左表为主,会查出左表中所有数据,右表中不满足的数据将会使用null代替
SELECT
S.ID,S.NAME,S.SEX,S.AGE,S.SCORE,S.SAL,S.CLASSID,C.NAME AS CLASSNAME ,
C.TEACHER,C.BOOS
FROM T_STU S
LEFT JOIN T_CLASS C
ON S.CLASSID = C.ID
右链接:right join
以右表为主,会查出右表中所有数据,左表中不满足的数据将会使用null代替
SELECT
S.ID,S.NAME,S.SEX,S.AGE,S.SCORE,S.SAL,S.CLASSID,C.NAME AS CLASSNAME ,
C.TEACHER,C.BOOS
FROM T_STU S
RIGHT JOIN T_CLASS C
ON S.CLASSID = C.ID
练习:
查出商品表中所有数据(包含商品类型名称)
2.6.14.约束
2.6.14.1.非空约束:not null
不能为空,但可以重复
方式一:
ALTER TABLE 表名 CHANGE 旧列名 新列明 新数据类型 约束
– 给t_stu表中的ID字段添加非空约束
ALTER TABLE T_STU CHANGE ID ID INT NOT NULL;
方式二:删表重建
CREATE TABLE T_STU(
ID INT NOT NULL,
NAME VARCHAR(20) NOT NULL,
SEX INT NOT NULL,
AGE INT NOT NULL,
SCORE INT,
SAL INT,
CLASSID INT NOT NULL,
CREATETIME DATETIME DEFAULT ‘2019-03-18’
);
2.6.14.2.唯一约束:unique
可以为空,但不能重复
方式一:
ALTER TABLE 表名 ADD UNIQUE(字段名)
– 给class表中的ID数据添加唯一约束
ALTER TABLE T_CLASS ADD UNIQUE(ID);
方式二:删表重建
CREATE TABLE T_STU(
ID INT,
NAME VARCHAR(20) NOT NULL,
SEX INT NOT NULL,
AGE INT NOT NULL,
SCORE INT,
SAL INT,
CLASSID INT NOT NULL,
CREATETIME DATETIME DEFAULT ‘2019-03-18’
);
非空约束与唯一约束作用在同一个字段上将会产生主键约束
2.6.14.3.主键约束:primary key
方式一:
ALTER TABLE 表名 ADD PRIMARY KEY (ID)
– 给t_stu表中的ID字段加上主键约束
ALTER TABLE T_STU ADD PRIMARY KEY (ID);
方式二:删表重建
CREATE TABLE T_STU(
ID INT PRIMARY KEY,
NAME VARCHAR(20) NOT NULL,
SEX INT NOT NULL,
AGE INT NOT NULL,
SCORE INT,
SAL INT,
CLASSID INT NOT NULL,
CREATETIME DATETIME DEFAULT ‘2019-03-18’
);
2.6.14.4.外键约束:foreign key
保证数据的正确性
外键的创建一般是一个 外键 指向 一张表的 主键
注意:设置主外键关系时,主表中的关系字段需要设置主键约束
方式一:
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (列名) REFERENCES 主表(列名)
方式二:删表重建
CREATE TABLE T_STU(
ID INT PRIMARY KEY,
NAME VARCHAR(20) NOT NULL,
SEX INT NOT NULL,
AGE INT NOT NULL,
SCORE INT,
SAL INT,
CLASSID INT NOT NULL,
CREATETIME DATETIME DEFAULT ‘2019-03-18’,
FOREIGN KEY FK_CLASSID (CLASSID) REFERENCES T_CLASS(ID)
);
2.6.14.5.自增长列
auto_increment
建表时给ID使用自增长
CREATE TABLE T_STU(
ID INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(20) NOT NULL,
SEX INT NOT NULL,
AGE INT NOT NULL,
SCORE INT,
SAL INT,
CLASSID INT NOT NULL,
CREATETIME DATETIME DEFAULT ‘2019-03-18’,
FOREIGN KEY FK_CLASSID (CLASSID) REFERENCES T_CLASS(ID)
);
作业:
重构三张表:约束,主外键,自增长列
新建:购物车表,订单表,评论表 以及 其中的约束,主外键,自增长列
可选:
查询出:
购物车页面中展示的信息
订单页面中展示的信息
2.6.14.6.删除约束
删除主键约束
ALTER TABLE 表名 DROP PRIMARY KEY ;
删除外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名 ;
删除唯一约束
ALTER TABLE 表名 DROP INDEX 字段名 ;
2.6.15.数据库引擎
查看mysql中的数据库引擎
SHOW ENGINES;
2.6.16.事务
创建事务
事务开启:begin/strat transaction
事务回滚:rollback
事务提交:commit
– 使用事务向班级表中添加一条数据
BEGIN; – 开启事务
INSERT INTO T_CLASS(NAME,TEACHER,BOOS) VALUES (‘WEB’,‘ZHOU’,‘YUN’); – 执行的操作
ROLLBACK/COMMIT; – 执行结束之后可以选择是提交还是回滚
设置事务是否自动提交
mysql中默认事务是自动提交
SET @@AUTOCOMMIT = 1/0
2.6.17.存储过程
类似于封装方法/函数
创建存储过程
语法:
CREATE PROCEDURE 存储过程名(参数)
BEGIN
逻辑操作语句
END
案例:
– 封装一个学生表和班级表联合查询的存储过程
CREATE PROCEDURE SELECT_USER()
BEGIN
SELECT
S.ID,S.NAME,S.SEX,S.AGE,S.SCORE,S.SAL,S.CLASSID,C.NAME AS CLASSNAME ,
C.TEACHER,C.BOOS
FROM T_STU S
INNER JOIN T_CLASS C
ON S.CLASSID = C.ID;
END //
修改结束符
delimiter //
mysql系统中默认将‘; ’认为是结束符,此时用在存储过程中会保存
使用delimiter语句可以将结束符修改
调用存储过程
CALL 存储过程名()
CALL SELECT_USER(); --调用案例中创建的存储过程
3.JAVA
3.1.初识JAVA
3.1.1.安装JDK
3.1.2.开发第一个JAVA程序
三种注释方式:
// 单行注释
/* / 多行注释
/* */文档注释
3.1.3.配置JDK
练习:
在控制台输出以下界面
欢迎进入商品管理系统
1、登录
2、退出
请选择操作
在控制台输出以下界面
数据库中有如下商品
商品标号 商品名称 商品库存 商品销量 商品价格
001 苹果 1000 1222 5.2
002 橘子 5212 95455 2.5
…
请输入你想购买的产品(输入编号即可)
3.2.变量
通俗的说:
内存类似于酒店
变量类似于酒店的房间
变量名相当于房间的门牌
变量值相当于房间中住的人
3.2.1.数据类型
3.2.1.1.八种基本数据类型
整数型
byte 1字节
short 2字节
int 4字节
long 8字节
浮点型
float 4字节 单精度浮点型32
double 8字节 双精度浮点型64
字符型
char 2字节
布尔类型
boolean true/false
3.2.1.2.四种引用数据类型
String 对象 数组 类
练习:
使用变量定义手机的各种属性,并输出
尺寸、品牌、重量、价格、颜色、像素、内存、操作系统、电量
3.2.1.3.定义变量
方式一:
数据类型 变量名 = 变量值;
方式二:
数据类型 变量名;
变量名 = 变量值;
3.2.1.4.变量命名规范
变量名中不能出现除“$”、“_”之外的符号
变量名不能以数字开头
变量名一般使用驼峰式命名,首字母小写,其后每个单词的首字母都大写
练习:
定义三个变量,分别保存学生的java成绩、web成绩、c的成绩
求出三门成绩的平均值并输出
package com.njwangbo.test;
/** * 定义三个变量,分别保存学生的java成绩、web成绩、c的成绩 求出三门成绩的平均值并输出 * @author Administrator * */
public class Test05 {
public static void main(String[] args) {
//定义java成绩
int javaSocre = 90;
//定义web成绩
int webScore = 85;
//定义c的成绩
int cScore = 80;
//定义变量 接收平均分
int avgSocre = (javaSocre+webScore+cScore)/3;
System.out.println("三门课的平均分是" + avgSocre);
}
}
练习:
在控制台分别输入学生的java成绩、web成绩、c的成绩
求出三门成绩的平均值并输出
package com.njwangbo.test;
import java.util.Scanner;
/** * 在控制台分别输入学生的java成绩、web成绩、c的成绩 求出三门成绩的平均值并输出 * @author Administrator * */
public class Test07 {
public static void main(String[] args) {
//引用Scanner类
Scanner sc = new Scanner(System.in);
System.out.println("请输入java成绩");
//接收java成绩
int javaScore = sc.nextInt();
System.out.println("请输入web成绩");
//接收web成绩
int webScore = sc.nextInt();
System.out.println("请输出c的成绩");
//接收c的成绩
int cScore = sc.nextInt();
//计算平均值
int avgScore = (javaScore+webScore+cScore)/3;
System.out.println("三门课的平均成绩是:"+avgScore);
}
}
3.3.数据类型转换
java代码中 :
整数的默认类型是int
小数的默认类型是double
3.3.1.基本数据类型取值范围
整数类型:
byte: 1字节 二进制:8位 取值范围:-2的7次方 ~ 2的7次方-1
short: 2字节 二进制:16位 取值范围:-2的15次方 ~ 2的15次方-1
int: 4字节 二进制:32位 取值范围:-2的31次方 ~ 2的31次方-1
long: 8字节 二进制:64位 取值范围:-2的63次方 ~ 2的63次方-1
浮点型:
float: 4字节 二进制:32位 取值范围:-2的149次方 ~ 2的128次方-1
double:8字节 二进制:64位 取值范围:-2的1074次方 ~ 2的1024次方-1
char类型可以自动转成 int/long/float/double
3.3.2.自动类型转换
取值范围小的数据类型向取值范围大的转换
3.3.3.强制类型转换
取值范围大的数据类型向取值范围小的转换
案例1:
package com.njwangbo.test;
/** * 数据类型转换 * @author Administrator * */
public class Test05 {
public static void main(String[] args) {
double num2 = 3.9;
//编译报错,double类型数据的取值返回比int类型大,如果转成int类型,需要强转
//int num3 = num2;
//将double类型强转成int类型,会丢失精度
int num3 = (int)num2;
System.out.println(num3); //3
}
}
案例2:
package com.njwangbo.test;
public class Test06 {
public static void main(String[] args) {
float num1 = 9;
double num2 = 3;
//编译报错:flaot 定义的num3 不知道 后期num2即将会被赋予什么类型的数据,所以在编译的时候直接报错
float num3 = num2;
}
}
3.3.4.将字符串类型转成数值类型
将String类型转换成int类型
package com.njwangbo.test;
/**
- 字符串类型与数值类型之间的转换
- @author Administrator
*/
public class Test07 {
public static void main(String[] args) {
/**
* 将字符串类型转成数值类型
*/
String str = "123";
//将字符串类型转成int类型
int num = Integer.parseInt(str);
//将字符串类型转成double类型
double num1 = Double.parseDouble(str);
System.out.println(num);
System.out.println(num1);
//将数值类型转成String类型
int i = 1;
//直接在后面连接 ""
String stri = i+"";
}
}
3.4.运算符
3.4.1.算术运算符
+、-、*、/、%
取余:只看结果,正负号取决于被除数的符号
案例:
package com.njwangbo.test;
public class Test01 {
public static void main(String[] args) {
System.out.println(-5 % -2);//-1
System.out.println(-5 % 2); //-1
System.out.println(5 % -2); //1
System.out.println(5 % 2); //1
}
}
案例:在控制台输入一个四位数数字,求出每个位数上 数字之和及平均值
package com.njwangbo.test;
import java.util.Scanner;
/**
- 练习:
- 在控制台输入一个四位数数字,求每个位数上数字之和及平均值 并输出
- @author Administrator
*/
public class Test02 {
public static void main(String[] args) {
//定义接收数字变量
Scanner scanner = new Scanner(System.in);
System.out.println(“请输入一个四位数:”);
int num = scanner.nextInt(); //输入1234
//定义接收位数的变量
int a,b ,c, d;
a=num/1000; //1
b= num/100%10; //2
c=num/10%10; //3
d=num%10;//4
System.out.println(a );
System.out.println(b );
System.out.println(c );
System.out.println(d );
//定义接收和与平均值的变量
int sum = a+b+c+d;
double avg = (double)sum/4;
System.out.println(“和为:”+sum);
System.out.println(“平均值是:”+avg);
}
}
常用数据类型默认值
int:0
double:0.0d
char:‘\u0000’
String:null
3.4.2.++运算符
package com.njwangbo.test;
/**
- ++ 运算符
- @author Administrator
*/
public class Test03 {
public static void main(String[] args) {
int num1 = 1;
//int num2 = num1++;
/* 上述步骤等于:
* int num2 = num1;
* num1 = num1+1;
* */
int num3 = ++num1;
/* 删除步骤等于:
* num = num+1;
* int num3 = num;
*
*/
System.out.println(num1);
//System.out.println(num2);
System.out.println(num3);
}
}
3.4.3.–运算符
package com.njwangbo.test;
/**
- – 运算符
- @author Administrator
*/
public class Test04 {
public static void main(String[] args) {
int num1 = 3;
//int num2 = num1--;
/* 上述步骤等于:
* int num2 = num1;
* num1 = num1 - 1;
* */
int num3 = --num1;
/* 删除步骤等于:
* num = num - 1;
* int num3 = num;
*
*/
System.out.println(num1);
//System.out.println(num2);
System.out.println(num3);
}
}
3.4.4.三元运算符/三目运算符
语法:
表达式 ? 代码块1 : 代码块2
表达式需要返回一个boolean类型的值
如果值为true,执行 代码块1
如果只为false,执行 代码块2
案例:
package com.njwangbo.test;
/**
- 三元运算符
- @author Administrator
*/
public class Test08 {
public static void main(String[] args) {
//定义两个变量保存数据
int num1 = 9;
int num2 = 3;
//使用三元运算符 判断 数据
String str = num1 > num2 ? "你好" : "再见";
//输出
System.out.println(str);
}
}
练习1:
在控制台输入两个数字,输出较大的数
package com.njwangbo.test;
import java.util.Scanner;
/**
- 在控制台输入两个数字,输出较大的数
- @author Administrator
*/
public class Test09 {
public static void main(String[] args) {
//引用Scanner类
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
//接收第一个数字
int num1 = sc.nextInt();
System.out.println("请再输入一个数字");
//接收第二个数字
int num2 = sc.nextInt();
//开始比较
int max = num1 > num2 ? num1 : num2;
System.out.println("较大的数据是:" + max);
}
}
练习2:
在控制台输入一个5位数,如果前4位数总和大于20,输出“真棒”,反之输出:“呵呵哒”
package com.njwangbo.test;
import java.util.Scanner;
/**
- 在控制台输入一个5位数,如果前4位数总和大于20,输出“真棒”,反之输出:“呵呵哒”
- @author Administrator
*/
public class Test10 {
public static void main(String[] args) {
//引用Scanner类
Scanner sc = new Scanner(System.in);
System.out.println("请输入一五位数");
//接收数据
int num = sc.nextInt();
//获取第一位数字
int a = num/10000;
//获取第二位数字
int b = num%10000/1000;
//获取第三位数字
int c = num%10000%1000/100;
//获取第四位数字
int d = num%10000%1000%100/10;
//计算前四位数字之和
int sum = a+b+c+d;
//比较
String str = sum > 20 ? "真棒" : "呵呵哒";
//输出
System.out.println(str);
}
}
3.4.5.关系运算符
== 、>、<、>=、<=、!=
案例:
package com.njwangbo.test;
/**
- 关系运算符
- @author Administrator
*/
public class Test11 {
public static void main(String[] args) {
//定义两个变量
int num = 1;
int num1 = 2-1;
//比较两个变量是否相等
String str = num == num1 ? “相等” : “不相等”;
//输出
System.out.println(str);
}
}
练习:
在控制台输入两个 三位数 数字,
取出第一个数字的最后一位数字和第二个数字的第一位数字
比较这个数字是否相等
3.4.6.逻辑运算符
&& 、||、 !
语法:&&
表达式1 && 表达式2
当表达式1和表达式2的结果都为true时,整个表达式结果为true
如果两个表达式结果,一个为真,一个为假,整个表达式结果为false
注意:当&&号左侧的表达式结果为false时,系统将不会再判断&&右侧的表达式
案例:
package com.njwangbo.test;
/**
- 逻辑运算符
- @author Administrator
*/
public class Test14 {
public static void main(String[] args) {
//定义3个变量,保存数据
int num1 = 10;
int num2 = 2;
int num3 = 3;
//判断
String str = num1>num2 && num1>num3 ? "你好" : "再见";
System.out.println(str);
}
}
语法:||
表达式1 || 表达式2
当表达式1和表达式2的结果都为false时,整个表达式结果为false
如果两个表达式结果,有一个为true时,整个表达式结果为true
当 || 号左侧的表达式为true时,系统将不会再判断 || 号右侧的值
案例:
package com.njwangbo.test;
/**
- 逻辑运算符
- @author Administrator
*/
public class Test14 {
public static void main(String[] args) {
//定义3个变量,保存数据
int num1 = 10;
int num2 = 2;
int num3 = 3;
//判断
String str = num1>num2 || num1>num3 ? "你好" : "再见";
System.out.println(str);
}
}
!:求反
案例:
package com.njwangbo.test;
public class Test15 {
public static void main(String[] args) {
//定义3个变量,保存数据
int num1 = 10;
int num2 = 2;
//使用求反
String str = ! (num1 > num2) ? "你好" : "再见";
System.out.println(str);
}
}
3.4.7.位运算符
&、|、^
与逻辑运算符使用方式一致
&:与 不会短路,当 & 号左侧的表达式为false时,系统依然会判断 & 号右侧的表达式
|:或 不会短路,当 | 号左侧的表达式为true时,系统依然会判断 | 号右侧的表达式
^:异或 同真同假时为假,其他情况为真
package com.njwangbo.test;
public class Test16 {
public static void main(String[] args) {
//定义3个变量,保存数据
int num1 = 1;
int num2 = 2;
int num3 = 4;
//使用求反
String str = num1 < num2 ^ num1 < num3 ? "你好" : "再见";
System.out.println(str);
}
}
作业:
作业1:
完成以下功能:
欢迎登录购物管理系统
1.登录
2.退出
请选择操作 (输入数字,选择登录即可)
选择登录,进入以下界面
您选择的是登录
请输入用户名
请输入密码
(比较用户名和密码输入是否正确,(正确的用户名和密码为:admin/111111))
如果正确,输出:登录成功
如果错误:输出:登录失败
作业2:
在控制台输入一个5位数,
判断中间三个数是不是‘666’
如果是:输出:“你好”
如果不是:输出:“再见”
作业3:
在控制台输入三个4位数
取出第一个数的第二个数字,第二个数的第三个数字,第三个数的第四个数字
比较这三个数字是否相等
如果相等:“相等”
如果不相等:“不相等”
作业4:
在控制台输入三个四位数
取出每个数字的 百位 数,
求三个 百位 数的平均值
完成以下功能:
欢迎登录购物管理系统
1.登录
2.退出
请选择操作
此处需要的操作:
1.接收用户的选择
2.根据用户的输入,进入不同的界面
选择1:进入登录界面
选择2:系统退出
选择3、4、5…其他情况,输出:“您输入的数字不正确,系统退出”
以下是登录界面
您选择的是登录
请输入用户名
请输入密码
(比较用户名和密码输入是否正确,(正确的用户名和密码为:admin/111111))
如果正确,输出:登录成功
如果错误:输出:登录失败
3.5.条件控制语句
3.5.1.基本if
语法:
if( 判断条件 ){
//当判断条件结果为true时,执行的逻辑语句代码块
}
判断条件:boolean类型的表达式
案例:
定义一个int类型的变量并赋值
如果值大于8,输出:“你好”,反之什么也不输出
package com.njwangbo.test;
/**
-
基本if语法
-
定义一个int类型的变量并赋值
如果值大于8,输出:“你好”,反之什么也不输出 -
@author Administrator
*/
public class Test01 {
public static void main(String[] args) {
//定义变量
int num = 1;
//使用if条件语句
if( num > 8 ){
//当判断条件为true时,执行的代码块
System.out.println("你好");
}
}
}
练习:
在控台输入一个数字
如果这个数大于60,输出:“真棒”,反之则什么也不做
package com.njwangbo.test;
import java.util.Scanner;
/**
- 在控台输入一个数字
如果这个数大于60,输出:“真棒”,反之则什么也不做 - @author Administrator
*/
public class Test02 {
public static void main(String[] args) {
//引用Scaner类
Scanner sc = new Scanner(System.in);
System.out.println(“请输入一个数字”);
//接收控制台输入的数据
int num = sc.nextInt();
//使用if选择结构
if( num > 60 ){
//判断条件为true时执行的代码块
System.out.println(“真棒”);
}
}
}
3.5.2.if…else…
语法:
if( 判断条件 ){
//判断条件为true时执行的逻辑代码
}else {
//判断条件为false时执行的逻辑代码
}
3.5.2.1.简单条件语句
案例:
定义一个int类型的变量并赋值
如果值大于8,输出:“你好”,反之则输出“再见”
package com.njwangbo.test;
/**
-
基本if语法
-
定义一个int类型的变量并赋值
如果值大于8,输出:“你好”,反之什么也不输出 -
@author Administrator
*/
public class Test03 {
public static void main(String[] args) {
//定义变量
int num = 9;
//使用if条件语句
if( num > 8 ){
//当判断条件为true时,执行的代码块
System.out.println("你好");
}else{
//判断条件为 false时执行的代码块
System.out.println("再见");
}
}
}
练习:
在控台输入一个分数
如果这个数大于60,输出:“真棒”,反之输出:“呵呵哒,你个渣渣! ”
package com.njwangbo.test;
import java.util.Scanner;
/**
-
在控台输入一个分数
如果这个数大于60,输出:“真棒”,反之输出:“呵呵哒,你个渣渣! ” -
@author Administrator
*/
public class Test04 {
public static void main(String[] args) {
//引用Scaner类
Scanner sc = new Scanner(System.in);
System.out.println(“请输入一个数字”);
//接收控制台输入的数据
int num = sc.nextInt();
//使用if选择结构
if( num > 60 ){
//判断条件为true时执行的代码块
System.out.println(“真棒”);
}else{
//判断条件为假时执行的代码块
System.out.println(“呵呵哒,你个渣渣!”);
}
}
}
案例:
在控制台输入一个字符串
如果字符串中包含“竟然敢” ,输出:“我再也不干了”,反之输出:“真棒”
package com.njwangbo.test;
import java.util.Scanner;
/**
-
在控制台输入一个字符串
如果字符串中包含“竟然敢” ,输出:“我再也不干了”,反之输出:“真棒” -
@author Administrator
*/
public class Test05 {
public static void main(String[] args) {
//引用Scanner类
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String str = sc.next();
//使用if条件语句比较 字符串中是否包含“竟然敢”
if( str.contains("竟然敢") ){
//判断条件结果为真
System.out.println("我再也不敢了");
}else{
//判断条件加过为假
System.out.println("真棒");
}
}
}
练习:
在控制台输入字符串
如果字符串中含有“你会做什么”,“你有什么功能”,“你能做什么”这些关键字
输出:“我的特异功能就是吃饭”,反之输出:“我的特异功能就是什么都不会”
package com.njwa